[svn] *** Source: MaNGOS ***

* Implement localization of creature/gameobject name that say/yell. Author: evilstar (rewrited by: Vladimir)
* Fix auth login queue. Author: Derex
* Allowed switching INVTYPE_HOLDABLE items during combat, used correct spells for triggering global cooldown at weapon switch. Author: mobel/simak
* Fixed some format arg type/value pairs. Other warnings. Author: Vladimir
* [238_world.sql] Allow have team dependent graveyards at entrance map for instances. Author: Vladimir

NOTE:
Entrance map graveyards selected by same way as local (by distance from entrance) Until DB support will work in old way base at current DB data.

--HG--
branch : trunk
This commit is contained in:
visagalis
2008-11-14 17:03:03 -06:00
parent d1e759479b
commit bfa9e75161
31 changed files with 165 additions and 80 deletions
+1
View File
@@ -0,0 +1 @@
DELETE FROM trinity_string WHERE entry IN (453);
+2 -2
View File
@@ -1284,7 +1284,7 @@ bool BattleGround::DelCreature(uint32 type)
Creature *cr = HashMapHolder<Creature>::Find(m_BgCreatures[type]);
if(!cr)
{
sLog.outError("Can't find creature guid: %u",m_BgCreatures[type]);
sLog.outError("Can't find creature guid: %u",GUID_LOPART(m_BgCreatures[type]));
return false;
}
cr->CleanupsBeforeDelete();
@@ -1298,7 +1298,7 @@ bool BattleGround::DelObject(uint32 type)
GameObject *obj = HashMapHolder<GameObject>::Find(m_BgObjects[type]);
if(!obj)
{
sLog.outError("Can't find gobject guid: %u",m_BgObjects[type]);
sLog.outError("Can't find gobject guid: %u",GUID_LOPART(m_BgObjects[type]));
return false;
}
obj->SetRespawnTime(0); // not save respawn time
+1 -1
View File
@@ -120,7 +120,7 @@ void BattleGroundBE::AddPlayer(Player *plr)
UpdateWorldState(0x9f0, GetAlivePlayersCountByTeam(HORDE));
}
void BattleGroundBE::RemovePlayer(Player *plr, uint64 guid)
void BattleGroundBE::RemovePlayer(Player* /*plr*/, uint64 /*guid*/)
{
if(GetStatus() == STATUS_WAIT_LEAVE)
return;
+3 -2
View File
@@ -574,7 +574,7 @@ void BattleGroundEY::RespawnFlagAfterDrop()
if(obj)
obj->Delete();
else
sLog.outError("BattleGroundEY: Unknown dropped flag guid: %u",GetDroppedFlagGUID());
sLog.outError("BattleGroundEY: Unknown dropped flag guid: %u",GUID_LOPART(GetDroppedFlagGUID()));
SetDroppedFlagGUID(0);
}
@@ -769,7 +769,8 @@ void BattleGroundEY::EventTeamCapturedPoint(Player *Source, uint32 Point)
WorldSafeLocsEntry const *sg = NULL;
sg = sWorldSafeLocsStore.LookupEntry(m_CapturingPointTypes[Point].GraveYardId);
if(!sg || !AddSpiritGuide(Point, sg->x, sg->y, sg->z, 3.124139f, Team))
sLog.outError("BatteGroundEY: Failed to spawn spirit guide! point: %u, team: u, graveyard_id: %u", Point, Team, m_CapturingPointTypes[Point].GraveYardId);
sLog.outError("BatteGroundEY: Failed to spawn spirit guide! point: %u, team: %u, graveyard_id: %u",
Point, Team, m_CapturingPointTypes[Point].GraveYardId);
UpdatePointsIcons(Team, Point);
UpdatePointsCount(Team);
+1 -1
View File
@@ -866,7 +866,7 @@ void BattleGroundQueue::Update(uint32 bgTypeId, uint32 queue_id, uint8 arenatype
/*** BATTLEGROUND QUEUE EVENTS ***/
/*********************************************************/
bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 p_time)
bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
Player* plr = objmgr.GetPlayer( m_PlayerGuid );
+1 -1
View File
@@ -118,7 +118,7 @@ void BattleGroundRL::AddPlayer(Player *plr)
UpdateWorldState(0xbb9, GetAlivePlayersCountByTeam(HORDE));
}
void BattleGroundRL::RemovePlayer(Player *plr, uint64 guid)
void BattleGroundRL::RemovePlayer(Player* /*plr*/, uint64 /*guid*/)
{
if(GetStatus() == STATUS_WAIT_LEAVE)
return;
+1 -1
View File
@@ -229,7 +229,7 @@ void BattleGroundWS::RespawnFlagAfterDrop(uint32 team)
if(obj)
obj->Delete();
else
sLog.outError("unknown droped flag bg, guid: %u",GetDroppedFlagGUID(team));
sLog.outError("unknown droped flag bg, guid: %u",GUID_LOPART(GetDroppedFlagGUID(team)));
SetDroppedFlagGUID(0,team);
}
+2 -1
View File
@@ -753,7 +753,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
SendNotification(LANG_GM_ON);
std::string IP_str = GetRemoteAddress();
sLog.outChar("Account: %d (IP: %s) Login Character:[%s] (guid:%u)",GetAccountId(),IP_str.c_str(),pCurrChar->GetName() ,pCurrChar->GetGUID());
sLog.outChar("Account: %d (IP: %s) Login Character:[%s] (guid:%u)",
GetAccountId(),IP_str.c_str(),pCurrChar->GetName() ,pCurrChar->GetGUIDLow());
m_playerLoading = false;
delete holder;
+4 -2
View File
@@ -81,7 +81,8 @@ bool Corpse::Create( uint32 guidlow, Player *owner, uint32 mapid, float x, float
if(!IsPositionValid())
{
sLog.outError("ERROR: Corpse (guidlow %d, owner %s) not created. Suggested coordinates isn't valid (X: %d Y: ^%d)",guidlow,owner->GetName(),x,y);
sLog.outError("ERROR: Corpse (guidlow %d, owner %s) not created. Suggested coordinates isn't valid (X: %f Y: %f)",
guidlow,owner->GetName(),x,y);
return false;
}
@@ -198,7 +199,8 @@ bool Corpse::LoadFromDB(uint32 guid, Field *fields)
if(!IsPositionValid())
{
sLog.outError("ERROR: Corpse (guidlow %d, owner %d) not created. Suggested coordinates isn't valid (X: %d Y: ^%d)",GetGUIDLow(),GUID_LOPART(GetOwnerGUID()),GetPositionX(),GetPositionY());
sLog.outError("ERROR: Corpse (guidlow %d, owner %d) not created. Suggested coordinates isn't valid (X: %f Y: %f)",
GetGUIDLow(),GUID_LOPART(GetOwnerGUID()),GetPositionX(),GetPositionY());
return false;
}
+16
View File
@@ -2182,3 +2182,19 @@ TrainerSpellData const* Creature::GetTrainerSpells() const
{
return objmgr.GetNpcTrainerSpells(GetEntry());
}
// overwrite WorldObject function for proper name localization
const char* Creature::GetNameForLocaleIdx(int32 loc_idx) const
{
if (loc_idx >= 0)
{
CreatureLocale const *cl = objmgr.GetCreatureLocale(GetEntry());
if (cl)
{
if (cl->Name.size() > loc_idx && !cl->Name[loc_idx].empty())
return cl->Name[loc_idx].c_str();
}
}
return GetName();
}
+3
View File
@@ -522,6 +522,9 @@ class TRINITY_DLL_SPEC Creature : public Unit
void TextEmote(int32 textId, uint64 TargetGuid, bool IsBossEmote = false) { MonsterTextEmote(textId,TargetGuid,IsBossEmote); }
void Whisper(int32 textId, uint64 receiver, bool IsBossWhisper = false) { MonsterWhisper(textId,receiver,IsBossWhisper); }
// overwrite WorldObject function for proper name localization
const char* GetNameForLocaleIdx(int32 locale_idx) const;
void setDeathState(DeathState s); // overwrite virtual Unit::setDeathState
bool LoadFromDB(uint32 guid, Map *map);
+16
View File
@@ -1285,3 +1285,19 @@ void GameObject::CastSpell(Unit* target, uint32 spell)
//trigger->setDeathState(JUST_DIED);
//trigger->RemoveCorpse();
}
// overwrite WorldObject function for proper name localization
const char* GameObject::GetNameForLocaleIdx(int32 loc_idx) const
{
if (loc_idx >= 0)
{
GameObjectLocale const *cl = objmgr.GetGameObjectLocale(GetEntry());
if (cl)
{
if (cl->Name.size() > loc_idx && !cl->Name[loc_idx].empty())
return cl->Name[loc_idx].c_str();
}
}
return GetName();
}
+3
View File
@@ -445,6 +445,9 @@ class TRINITY_DLL_SPEC GameObject : public WorldObject
void TextEmote(int32 textId, uint64 TargetGuid) { MonsterTextEmote(textId,TargetGuid); }
void Whisper(int32 textId, uint64 receiver) { MonsterWhisper(textId,receiver); }
// overwrite WorldObject function for proper name localization
const char* GetNameForLocaleIdx(int32 locale_idx) const;
void SaveToDB();
void SaveToDB(uint32 mapid, uint8 spawnMask);
bool LoadFromDB(uint32 guid, Map *map);
+1
View File
@@ -538,6 +538,7 @@ struct ItemPrototype
{
case INVTYPE_RELIC:
case INVTYPE_SHIELD:
case INVTYPE_HOLDABLE:
return true;
}
+1 -1
View File
@@ -388,7 +388,7 @@ enum TrinityStrings
LANG_COMMAND_GRAVEYARDALRLINKED = 450,
LANG_COMMAND_GRAVEYARDLINKED = 451,
LANG_COMMAND_GRAVEYARDWRONGZONE = 452,
LANG_COMMAND_GRAVEYARDWRONGTEAM = 453,
// = 453,
LANG_COMMAND_GRAVEYARDERROR = 454,
LANG_COMMAND_GRAVEYARD_NOTEAM = 455,
LANG_COMMAND_GRAVEYARD_ANY = 456,
+2 -7
View File
@@ -2822,12 +2822,7 @@ bool ChatHandler::HandleWpShowCommand(const char* args)
std::string show = show_str;
uint32 Maxpoint;
sLog.outDebug("DEBUG: HandleWpShowCommand: lowguid: %u", lowguid);
sLog.outDebug("DEBUG: HandleWpShowCommand: Habe creature: %ld", target );
sLog.outDebug("DEBUG: HandleWpShowCommand: wpshow - show: %s", show_str);
//PSendSysMessage("wpshow - show: %s", show);
sLog.outDebug("DEBUG: HandleWpShowCommand: lowguid: %u show: %s", lowguid, show_str);
// Show info for the selected waypoint
if(show == "info")
@@ -2848,7 +2843,7 @@ bool ChatHandler::HandleWpShowCommand(const char* args)
QueryResult *result =
WorldDatabase.PQuery( "SELECT id, point, waittime, emote, spell, text1, text2, text3, text4, text5, model1, model2 FROM creature_movement WHERE wpguid = %u",
target->GetGUID() );
target->GetGUIDLow() );
if(!result)
{
// Since we compare float values, we have to deal with
-7
View File
@@ -3580,13 +3580,6 @@ bool ChatHandler::HandleLinkGraveCommand(const char* args)
return false;
}
if(graveyard->map_id != areaEntry->mapid && g_team != 0)
{
SendSysMessage(LANG_COMMAND_GRAVEYARDWRONGTEAM);
SetSentErrorMessage(true);
return false;
}
if(objmgr.AddGraveYardLink(g_id,player->GetZoneId(),g_team))
PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, g_id,zoneId);
else
+2 -1
View File
@@ -271,7 +271,8 @@ bool LootStoreItem::IsValid(LootStore const& store, uint32 entry) const
if( chance != 0 && chance < 0.000001f ) // loot with low chance
{
sLog.outErrorDb("Table '%s' entry %d item %d: low chance (%d) - skipped", store.GetName(), entry, itemid, chance);
sLog.outErrorDb("Table '%s' entry %d item %d: low chance (%f) - skipped",
store.GetName(), entry, itemid, chance);
return false;
}
}
+1 -1
View File
@@ -136,7 +136,7 @@ void WorldSession::HandleWhoOpcode( WorldPacket & recv_data )
wstrToLower(str[i]);
sLog.outDebug("String %u: %s", i, str[i].c_str());
sLog.outDebug("String %u: %s", i, temp.c_str());
}
std::wstring wplayer_name;
+1
View File
@@ -188,6 +188,7 @@ MotionMaster::MoveChase(Unit* target, float dist, float angle)
if(i_owner->GetTypeId()==TYPEID_PLAYER)
{
DEBUG_LOG("Player (GUID: %u) chase to %s (GUID: %u)",
i_owner->GetGUIDLow(),
target->GetTypeId()==TYPEID_PLAYER ? "player" : "creature",
target->GetTypeId()==TYPEID_PLAYER ? i_owner->GetGUIDLow() : ((Creature*)i_owner)->GetDBTableGUIDLow() );
Mutate(new TargetedMovementGenerator<Player>(*target,dist,angle));
+3 -2
View File
@@ -139,14 +139,15 @@ void WorldSession::SendTrainerList( uint64 guid,std::string strTitle )
if (!ci)
{
sLog.outDebug( "WORLD: SendTrainerList - (%u) NO CREATUREINFO! (GUID: %u)", uint32(GUID_LOPART(guid)), guid );
sLog.outDebug( "WORLD: SendTrainerList - (GUID: %u) NO CREATUREINFO!",GUID_LOPART(guid) );
return;
}
TrainerSpellData const* trainer_spells = unit->GetTrainerSpells();
if(!trainer_spells)
{
sLog.outDebug( "WORLD: SendTrainerList - Training spells not found for creature (GUID: %u Entry: %u)", guid, unit->GetEntry());
sLog.outDebug( "WORLD: SendTrainerList - Training spells not found for creature (GUID: %u Entry: %u)",
GUID_LOPART(guid), unit->GetEntry());
return;
}
+2 -2
View File
@@ -1280,7 +1280,7 @@ namespace Trinity
data = new WorldPacket(SMSG_MESSAGECHAT, 200);
// TODO: i_object.GetName() also must be localized?
i_object.BuildMonsterChat(data,i_msgtype,text,i_language,i_object.GetName(),i_targetGUID);
i_object.BuildMonsterChat(data,i_msgtype,text,i_language,i_object.GetNameForLocaleIdx(loc_idx),i_targetGUID);
i_data_cache[cache_idx] = data;
}
@@ -1545,4 +1545,4 @@ void WorldObject::GetNearPoint(WorldObject const* searcher, float &x, float &y,
z = GetPositionZ();
UpdateGroundPositionZ(x,y,z);
}
}
+2
View File
@@ -399,6 +399,8 @@ class TRINITY_DLL_SPEC WorldObject : public Object
const char* GetName() const { return m_name.c_str(); }
void SetName(std::string newname) { m_name=newname; }
virtual const char* GetNameForLocaleIdx(int32 /*locale_idx*/) const { return GetName(); }
float GetDistance( const WorldObject* obj ) const;
float GetDistance(const float x, const float y, const float z) const;
float GetDistance2d(const WorldObject* obj) const;
+60 -27
View File
@@ -4827,12 +4827,6 @@ void ObjectMgr::LoadGraveyardZones()
continue;
}
if(entry->map_id != areaEntry->mapid && team != 0)
{
sLog.outErrorDb("Table `game_graveyard_zone` has record for ghost zone (%u) at map %u and graveyard (%u) at map %u for team %u, but in case maps are different, player faction setting is ignored. Use faction 0 instead.",zoneId,areaEntry->mapid, safeLocId, entry->map_id, team);
team = 0;
}
if(!AddGraveYardLink(safeLocId,zoneId,team,false))
sLog.outErrorDb("Table `game_graveyard_zone` has a duplicate record for Graveyard (ID: %u) and Zone (ID: %u), skipped.",safeLocId,zoneId);
} while( result->NextRow() );
@@ -4854,7 +4848,7 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float
// if mapId == graveyard.mapId (ghost in plain zone or city or battleground) and search graveyard at same map
// then check faction
// if mapId != graveyard.mapId (ghost in instance) and search any graveyard associated
// then skip check faction
// then check faction
GraveYardMap::const_iterator graveLow = mGraveYardMap.lower_bound(zoneId);
GraveYardMap::const_iterator graveUp = mGraveYardMap.upper_bound(zoneId);
if(graveLow==graveUp)
@@ -4863,11 +4857,21 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float
return NULL;
}
// at corpse map
bool foundNear = false;
float distNear;
WorldSafeLocsEntry const* entryNear = NULL;
// at entrance map for corpse map
bool foundEntr = false;
float distEntr;
WorldSafeLocsEntry const* entryEntr = NULL;
// some where other
WorldSafeLocsEntry const* entryFar = NULL;
MapEntry const* mapEntry = sMapStore.LookupEntry(MapId);
for(GraveYardMap::const_iterator itr = graveLow; itr != graveUp; ++itr)
{
GraveYardData const& data = itr->second;
@@ -4879,40 +4883,69 @@ WorldSafeLocsEntry const *ObjectMgr::GetClosestGraveYard(float x, float y, float
continue;
}
// remember first graveyard at another map and ignore other
if(MapId != entry->map_id)
{
if(!entryFar)
entryFar = entry;
continue;
}
// skip enemy faction graveyard at same map (normal area, city, or battleground)
// skip enemy faction graveyard
// team == 0 case can be at call from .neargrave
if(data.team != 0 && team != 0 && data.team != team)
continue;
// find now nearest graveyard at same map
float dist2 = (entry->x - x)*(entry->x - x)+(entry->y - y)*(entry->y - y)+(entry->z - z)*(entry->z - z);
if(foundNear)
// find now nearest graveyard at other map
if(MapId != entry->map_id)
{
if(dist2 < distNear)
// if find graveyard at different map from where entrance placed (or no entrance data), use any first
if (!mapEntry || mapEntry->entrance_map < 0 || mapEntry->entrance_map != entry->map_id ||
mapEntry->entrance_x == 0 && mapEntry->entrance_y == 0)
{
// not have any corrdinates for check distance anyway
entryFar = entry;
continue;
}
// at entrance map calculate distance (2D);
float dist2 = (entry->x - mapEntry->entrance_x)*(entry->x - mapEntry->entrance_x)
+(entry->y - mapEntry->entrance_y)*(entry->y - mapEntry->entrance_y);
if(foundEntr)
{
if(dist2 < distEntr)
{
distEntr = dist2;
entryEntr = entry;
}
}
else
{
foundEntr = true;
distEntr = dist2;
entryEntr = entry;
}
}
// find now nearest graveyard at same map
else
{
float dist2 = (entry->x - x)*(entry->x - x)+(entry->y - y)*(entry->y - y)+(entry->z - z)*(entry->z - z);
if(foundNear)
{
if(dist2 < distNear)
{
distNear = dist2;
entryNear = entry;
}
}
else
{
foundNear = true;
distNear = dist2;
entryNear = entry;
}
}
else
{
foundNear = true;
distNear = dist2;
entryNear = entry;
}
}
// find now nearest graveyard at same map
if(entryNear)
return entryNear;
if(entryEntr)
return entryEntr;
return entryFar;
}
@@ -5131,7 +5164,7 @@ AreaTrigger const* ObjectMgr::GetGoBackTrigger(uint32 Map) const
if(!mapEntry) return NULL;
for (AreaTriggerMap::const_iterator itr = mAreaTriggers.begin(); itr != mAreaTriggers.end(); itr++)
{
if(itr->second.target_mapId == mapEntry->parent_map)
if(itr->second.target_mapId == mapEntry->entrance_map)
{
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first);
if(atEntry && atEntry->mapid == Map)
+19 -2
View File
@@ -10256,9 +10256,26 @@ Item* Player::EquipItem( uint16 pos, Item *pItem, bool update )
if(pProto && isInCombat()&& pProto->Class == ITEM_CLASS_WEAPON && m_weaponChangeTimer == 0)
{
m_weaponChangeTimer = DEFAULT_SWITCH_WEAPON;
uint32 cooldownSpell = SPELL_ID_WEAPON_SWITCH_COOLDOWN_1_5s;
if (getClass() == CLASS_ROGUE)
m_weaponChangeTimer = ROGUE_SWITCH_WEAPON;
cooldownSpell = SPELL_ID_WEAPON_SWITCH_COOLDOWN_1_0s;
SpellEntry const* spellProto = sSpellStore.LookupEntry(cooldownSpell);
if (!spellProto)
sLog.outError("Weapon switch cooldown spell %u couldn't be found in Spell.dbc", cooldownSpell);
else
{
m_weaponChangeTimer = spellProto->StartRecoveryTime;
WorldPacket data(SMSG_SPELL_COOLDOWN, 8+1+4);
data << uint64(GetGUID());
data << uint8(1);
data << uint32(cooldownSpell);
data << uint32(0);
GetSession()->SendPacket(&data);
}
}
}
-6
View File
@@ -680,12 +680,6 @@ struct ItemPosCount
};
typedef std::vector<ItemPosCount> ItemPosCountVec;
enum SwitchWeapon
{
DEFAULT_SWITCH_WEAPON = 1500, //cooldown in ms
ROGUE_SWITCH_WEAPON = 1000
};
enum TradeSlots
{
TRADE_SLOT_COUNT = 7,
+2
View File
@@ -1903,6 +1903,8 @@ enum CorpseDynFlags
#define SPELL_ID_GENERIC_LEARN 483
#define SPELL_ID_PASSIVE_BATTLE_STANCE 2457
#define SPELL_ID_PASSIVE_RESURRECTION_SICKNESS 15007
#define SPELL_ID_WEAPON_SWITCH_COOLDOWN_1_5s 6119
#define SPELL_ID_WEAPON_SWITCH_COOLDOWN_1_0s 6123
enum WeatherType
{
+9 -8
View File
@@ -202,13 +202,16 @@ World::AddSession_ (WorldSession* s)
return;
}
WorldSession* old = m_sessions[s->GetAccountId ()];
m_sessions[s->GetAccountId ()] = s;
// if session already exist, prepare to it deleting at next world update
// NOTE - KickPlayer() should be called on "old" in RemoveSession()
if (old)
m_kicked_sessions.insert (old);
{
SessionMap::const_iterator old = m_sessions.find(s->GetAccountId ());
if(old != m_sessions.end())
m_kicked_sessions.insert (old->second);
}
m_sessions[s->GetAccountId ()] = s;
uint32 Sessions = GetActiveAndQueuedSessionCount ();
uint32 pLimit = GetPlayerAmountLimit ();
@@ -291,9 +294,7 @@ void World::RemoveQueuedPlayer(WorldSession* sess)
{
if(*iter==sess)
{
Queue::iterator iter2 = iter;
++iter;
m_QueuedPlayer.erase(iter2);
iter = m_QueuedPlayer.erase(iter);
decrease_session = false; // removing queued session
break;
}
+3 -3
View File
@@ -464,9 +464,9 @@ struct MapEntry
// 99 text flags
//chat* unknownText2 // 100-115 unknown empty text fields
// 116 text flags
int32 parent_map; // 117 map_id of parent map
//float start_x // 118 enter x coordinate (if exist single entry)
//float start_y // 119 enter y coordinate (if exist single entry)
int32 entrance_map; // 117 map_id of entrance map
float entrance_x; // 118 entrance x coordinate (if exist single entry)
float entrance_y; // 119 entrance y coordinate (if exist single entry)
uint32 resetTimeRaid; // 120
uint32 resetTimeHeroic; // 121
// 122-123
+1 -1
View File
@@ -55,7 +55,7 @@ const char ItemRandomSuffixfmt[]="nxxxxxxxxxxxxxxxxxxiiiiii";
const char ItemSetEntryfmt[]="dssssssssssssssssxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiii";
const char LockEntryfmt[]="niiiiixxxiiiiixxxiixxxxxxxxxxxxxx";
const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char MapEntryfmt[]="nxixssssssssssssssssxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxiixxi";
const char MapEntryfmt[]="nxixssssssssssssssssxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiffiixxi";
const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx";
const char RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii";
const char SkillLinefmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxxi";
+2 -1
View File
@@ -102,7 +102,8 @@ bool SqlQueryHolder::SetQuery(size_t index, const char *sql)
if(m_queries[index].first != NULL)
{
sLog.outError("Attempt assign query to holder index (%u) where other query stored (Old: [%s] New: [%s])",index,m_queries.size(),m_queries[index].first,sql);
sLog.outError("Attempt assign query to holder index (%u) where other query stored (Old: [%s] New: [%s])",
index,m_queries[index].first,sql);
return false;
}