Merge pull request #357 from UltraNix/ObjectGuidAzerothCore

Implemented ObjectGuid support for AzerothCore.
This commit is contained in:
Rochet2
2021-04-26 19:46:20 +03:00
committed by GitHub
19 changed files with 206 additions and 181 deletions

View File

@@ -251,10 +251,10 @@ template <typename T>
struct UniqueObjectKey
{
T event_id;
uint64 guid;
ObjectGuid guid;
uint32 instance_id;
UniqueObjectKey(T event_id, uint64 guid, uint32 instance_id) :
UniqueObjectKey(T event_id, ObjectGuid guid, uint32 instance_id) :
event_id(event_id),
guid(guid),
instance_id(instance_id)
@@ -367,7 +367,7 @@ namespace std
hash_helper::result_type operator()(argument_type const& k) const
{
return hash_helper::hash(k.event_id, k.instance_id, k.guid);
return hash_helper::hash(k.event_id, k.instance_id, k.guid.GetRawValue());
}
};
}

View File

@@ -17,7 +17,7 @@ namespace LuaCorpse
/**
* Returns the GUID of the [Player] that left the [Corpse] behind.
*
* @return uint64 ownerGUID
* @return ObjectGuid ownerGUID
*/
int GetOwnerGUID(lua_State* L, Corpse* corpse)
{

View File

@@ -924,7 +924,7 @@ auto const& threatlist = creature->getThreatManager().getThreatList();
*/
int GetDBTableGUIDLow(lua_State* L, Creature* creature)
{
#if defined(TRINITY)
#if defined(TRINITY) || defined(AZEROTHCORE)
Eluna::Push(L, creature->GetSpawnId());
#else
// on mangos based this is same as lowguid

View File

@@ -47,10 +47,24 @@ typedef QueryResult ElunaQuery;
#define HIGHGUID_GROUP HighGuid::Group
#elif AZEROTHCORE
typedef QueryResult ElunaQuery;
#define ELUNA_LOG_INFO(...) sLog->outString(__VA_ARGS__);
#define ELUNA_LOG_ERROR(...) sLog->outError(__VA_ARGS__);
#define ELUNA_LOG_DEBUG(...) sLog->outDebug(LOG_FILTER_NONE,__VA_ARGS__);
#define ELUNA_LOG_INFO(...) LOG_INFO("eluna", __VA_ARGS__);
#define ELUNA_LOG_ERROR(...) LOG_ERROR("eluna", __VA_ARGS__);
#define ELUNA_LOG_DEBUG(...) LOG_DEBUG("eluna", __VA_ARGS__);
#define GET_GUID GetGUID
#define HIGHGUID_PLAYER HighGuid::Player
#define HIGHGUID_UNIT HighGuid::Unit
#define HIGHGUID_ITEM HighGuid::Item
#define HIGHGUID_GAMEOBJECT HighGuid::GameObject
#define HIGHGUID_PET HighGuid::Pet
#define HIGHGUID_TRANSPORT HighGuid::Transport
#define HIGHGUID_VEHICLE HighGuid::Vehicle
#define HIGHGUID_CONTAINER HighGuid::Container
#define HIGHGUID_DYNAMICOBJECT HighGuid::DynamicObject
#define HIGHGUID_CORPSE HighGuid::Corpse
#define HIGHGUID_MO_TRANSPORT HighGuid::Mo_Transport
#define HIGHGUID_INSTANCE HighGuid::Instance
#define HIGHGUID_GROUP HighGuid::Group
#else
typedef QueryNamedResult ElunaQuery;
#define ASSERT MANGOS_ASSERT
@@ -63,7 +77,7 @@ typedef QueryNamedResult ElunaQuery;
#define GetTemplate GetProto
#endif
#if defined(TRINITY) || defined(MANGOS)
#if defined(TRINITY) || defined(AZEROTHCORE) || defined(MANGOS)
#ifndef MAKE_NEW_GUID
#define MAKE_NEW_GUID(l, e, h) ObjectGuid(h, e, l)
#endif

View File

@@ -160,10 +160,8 @@ namespace LuaGameObject
*/
int GetDBTableGUIDLow(lua_State* L, GameObject* go)
{
#ifdef TRINITY
#if defined(TRINITY) || defined(AZEROTHCORE)
Eluna::Push(L, go->GetSpawnId());
#elif AZEROTHCORE
Eluna::Push(L, go->GetDBTableGUIDLow());
#else
// on mangos based this is same as lowguid
Eluna::Push(L, go->GetGUIDLow());

View File

@@ -124,13 +124,13 @@ namespace LuaGlobalFunctions
/**
* Finds and Returns [Player] by guid if found
*
* @param uint64 guid : guid of the [Player], you can get it with [Object:GetGUID]
* @param ObjectGuid guid : guid of the [Player], you can get it with [Object:GetGUID]
* @return [Player] player
*/
int GetPlayerByGUID(lua_State* L)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
Eluna::Push(L, eObjectAccessor()FindPlayer(ObjectGuid(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
Eluna::Push(L, eObjectAccessor()FindPlayer(guid));
return 1;
}
@@ -261,14 +261,14 @@ namespace LuaGlobalFunctions
/**
* Returns [Guild] by the leader's GUID
*
* @param uint64 guid : the guid of a [Guild] leader
* @param ObjectGuid guid : the guid of a [Guild] leader
* @return [Guild] guild, or `nil` if it doesn't exist
*/
int GetGuildByLeaderGUID(lua_State* L)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
Eluna::Push(L, eGuildMgr->GetGuildByLeader(ObjectGuid(guid)));
Eluna::Push(L, eGuildMgr->GetGuildByLeader(guid));
return 1;
}
@@ -291,7 +291,7 @@ namespace LuaGlobalFunctions
* [Player] and [Creature] for example can have the same low GUID but not GUID.
*
* @param uint32 lowguid : low GUID of the [Player]
* @return uint64 guid
* @return ObjectGuid guid
*/
int GetPlayerGUID(lua_State* L)
{
@@ -307,7 +307,7 @@ namespace LuaGlobalFunctions
* [Player] and [Item] for example can have the same low GUID but not GUID.
*
* @param uint32 lowguid : low GUID of the [Item]
* @return uint64 guid
* @return ObjectGuid guid
*/
int GetItemGUID(lua_State* L)
{
@@ -325,7 +325,7 @@ namespace LuaGlobalFunctions
*
* @param uint32 lowguid : low GUID of the [GameObject]
* @param uint32 entry : entry ID of the [GameObject]
* @return uint64 guid
* @return ObjectGuid guid
*/
int GetObjectGUID(lua_State* L)
{
@@ -344,7 +344,7 @@ namespace LuaGlobalFunctions
*
* @param uint32 lowguid : low GUID of the [Creature]
* @param uint32 entry : entry ID of the [Creature]
* @return uint64 guid
* @return ObjectGuid guid
*/
int GetUnitGUID(lua_State* L)
{
@@ -370,14 +370,14 @@ namespace LuaGlobalFunctions
* For example creatures in instances use the same low GUID assigned for that spawn in the database.
* This is why to identify a creature you have to know the instanceId and low GUID. See [Map:GetIntstanceId]
*
* @param uint64 guid : GUID of an [Object]
* @param ObjectGuid guid : GUID of an [Object]
* @return uint32 lowguid : low GUID of the [Object]
*/
int GetGUIDLow(lua_State* L)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
Eluna::Push(L, GUID_LOPART(guid));
Eluna::Push(L, guid.GetCounter());
return 1;
}
@@ -435,13 +435,13 @@ namespace LuaGlobalFunctions
*
* GUID consist of entry ID, low GUID, and type ID.
*
* @param uint64 guid : GUID of an [Object]
* @param ObjectGuid guid : GUID of an [Object]
* @return int32 typeId : type ID of the [Object]
*/
int GetGUIDType(lua_State* L)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
Eluna::Push(L, static_cast<int>(GUID_HIPART(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
Eluna::Push(L, static_cast<int>(guid.GetHigh()));
return 1;
}
@@ -450,13 +450,13 @@ namespace LuaGlobalFunctions
*
* GUID consist of entry ID, low GUID, and type ID.
*
* @param uint64 guid : GUID of an [Creature] or [GameObject]
* @param ObjectGuid guid : GUID of an [Creature] or [GameObject]
* @return uint32 entry : entry ID, or `0` if `guid` is not a [Creature] or [GameObject]
*/
int GetGUIDEntry(lua_State* L)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
Eluna::Push(L, GUID_ENPART(guid));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
Eluna::Push(L, guid.GetEntry());
return 1;
}
@@ -537,7 +537,7 @@ namespace LuaGlobalFunctions
lua_pushvalue(L, 3);
int functionRef = luaL_ref(L, LUA_REGISTRYINDEX);
if (functionRef >= 0)
return Eluna::GetEluna(L)->Register(L, regtype, id, 0, 0, ev, functionRef, shots);
return Eluna::GetEluna(L)->Register(L, regtype, id, ObjectGuid(), 0, ev, functionRef, shots);
else
luaL_argerror(L, 3, "unable to make a ref to function");
return 0;
@@ -552,7 +552,7 @@ namespace LuaGlobalFunctions
lua_pushvalue(L, 2);
int functionRef = luaL_ref(L, LUA_REGISTRYINDEX);
if (functionRef >= 0)
return Eluna::GetEluna(L)->Register(L, regtype, 0, 0, 0, ev, functionRef, shots);
return Eluna::GetEluna(L)->Register(L, regtype, 0, ObjectGuid(), 0, ev, functionRef, shots);
else
luaL_argerror(L, 2, "unable to make a ref to function");
return 0;
@@ -560,7 +560,7 @@ namespace LuaGlobalFunctions
static int RegisterUniqueHelper(lua_State* L, int regtype)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
uint32 instanceId = Eluna::CHECKVAL<uint32>(L, 2);
uint32 ev = Eluna::CHECKVAL<uint32>(L, 3);
luaL_checktype(L, 4, LUA_TFUNCTION);
@@ -1149,7 +1149,7 @@ namespace LuaGlobalFunctions
* @proto cancel = (guid, instance_id, event, function)
* @proto cancel = (guid, instance_id, event, function, shots)
*
* @param uint64 guid : the GUID of a single [Creature]
* @param ObjectGuid guid : the GUID of a single [Creature]
* @param uint32 instance_id : the instance ID of a single [Creature]
* @param uint32 event : refer to CreatureEvents above
* @param function function : function that will be called when the event occurs
@@ -1708,7 +1708,7 @@ namespace LuaGlobalFunctions
#ifndef AZEROTHCORE
if (!creature->Create(map->GenerateLowGuid<HighGuid::Unit>(), map, phase, entry, pos))
#else
if (!creature->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT), map, phase, entry, 0, x, y, z, o))
if (!creature->Create(map->GenerateLowGuid<HighGuid::Unit>(), map, phase, entry, 0, x, y, z, o))
#endif
{
delete creature;
@@ -1718,11 +1718,8 @@ namespace LuaGlobalFunctions
creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase);
#ifndef AZEROTHCORE
uint32 db_guid = creature->GetSpawnId();
#else
uint32 db_guid = creature->GetDBTableGUIDLow();
#endif
// To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells()
// current "creature" variable is deleted and created fresh new, otherwise old values might trigger asserts or cause undefined behavior
creature->CleanupsBeforeDelete();
@@ -1731,7 +1728,7 @@ namespace LuaGlobalFunctions
#ifndef AZEROTHCORE
if (!creature->LoadFromDB(db_guid, map, true, true))
#else
if (!creature->LoadFromDB(db_guid, map))
if (!creature->LoadFromDB(db_guid, map, true))
#endif
{
delete creature;
@@ -1783,7 +1780,7 @@ namespace LuaGlobalFunctions
QuaternionData rot = QuaternionData::fromEulerAnglesZYX(o, 0.f, 0.f);
if (!object->Create(guidLow, objectInfo->entry, map, phase, Position(x, y, z, o), rot, 0, GO_STATE_READY))
#else
uint32 guidLow = sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT);
uint32 guidLow = map->GenerateLowGuid<HighGuid::GameObject>();
if (!object->Create(guidLow, entry, map, phase, x, y, z, o, G3D::Quat(0.0f, 0.0f, 0.0f, 0.0f), 100, GO_STATE_READY))
#endif
{
@@ -1799,11 +1796,7 @@ namespace LuaGlobalFunctions
{
// fill the gameobject data and save to the db
object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), phase);
#ifndef AZEROTHCORE
guidLow = object->GetSpawnId();
#else
guidLow = object->GetDBTableGUIDLow();
#endif
// delete the old object and do a clean load from DB with a fresh new GameObject instance.
// this is required to avoid weird behavior and memory leaks
@@ -2157,7 +2150,7 @@ namespace LuaGlobalFunctions
item->SaveToDB();
#endif
draft.AddItem(item);
#if defined TRINITY
#if defined TRINITY || AZEROTHCORE
Eluna::Push(L, item->GetGUID().GetCounter());
#else
Eluna::Push(L, item->GetGUIDLow());
@@ -2768,7 +2761,7 @@ namespace LuaGlobalFunctions
*
* @proto (entry)
* @proto (entry, event_type)
* @param uint64 guid : the GUID of a single [Creature] whose handlers will be cleared
* @param ObjectGuid guid : the GUID of a single [Creature] whose handlers will be cleared
* @param uint32 instance_id : the instance ID of a single [Creature] whose handlers will be cleared
* @param uint32 event_type : the event whose handlers will be cleared, see [Global:RegisterCreatureEvent]
*/
@@ -2778,7 +2771,7 @@ namespace LuaGlobalFunctions
if (lua_isnoneornil(L, 3))
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
uint32 instanceId = Eluna::CHECKVAL<uint32>(L, 2);
Eluna* E = Eluna::GetEluna(L);
@@ -2787,7 +2780,7 @@ namespace LuaGlobalFunctions
}
else
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 1);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 1);
uint32 instanceId = Eluna::CHECKVAL<uint32>(L, 2);
uint32 event_type = Eluna::CHECKVAL<uint32>(L, 3);
Eluna::GetEluna(L)->CreatureUniqueBindings->Clear(Key((Hooks::CreatureEvents)event_type, guid, instanceId));

View File

@@ -20,7 +20,7 @@ using namespace Hooks;
return;\
LOCK_ELUNA
void Eluna::OnAddMember(Group* group, uint64 guid)
void Eluna::OnAddMember(Group* group, ObjectGuid guid)
{
START_HOOK(GROUP_EVENT_ON_MEMBER_ADD);
Push(group);
@@ -28,7 +28,7 @@ void Eluna::OnAddMember(Group* group, uint64 guid)
CallAllFunctions(GroupEventBindings, key);
}
void Eluna::OnInviteMember(Group* group, uint64 guid)
void Eluna::OnInviteMember(Group* group, ObjectGuid guid)
{
START_HOOK(GROUP_EVENT_ON_MEMBER_INVITE);
Push(group);
@@ -36,7 +36,7 @@ void Eluna::OnInviteMember(Group* group, uint64 guid)
CallAllFunctions(GroupEventBindings, key);
}
void Eluna::OnRemoveMember(Group* group, uint64 guid, uint8 method)
void Eluna::OnRemoveMember(Group* group, ObjectGuid guid, uint8 method)
{
START_HOOK(GROUP_EVENT_ON_MEMBER_REMOVE);
Push(group);
@@ -45,7 +45,7 @@ void Eluna::OnRemoveMember(Group* group, uint64 guid, uint8 method)
CallAllFunctions(GroupEventBindings, key);
}
void Eluna::OnChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
void Eluna::OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid)
{
START_HOOK(GROUP_EVENT_ON_LEADER_CHANGE);
Push(group);
@@ -61,7 +61,7 @@ void Eluna::OnDisband(Group* group)
CallAllFunctions(GroupEventBindings, key);
}
void Eluna::OnCreate(Group* group, uint64 leaderGuid, GroupType groupType)
void Eluna::OnCreate(Group* group, ObjectGuid leaderGuid, GroupType groupType)
{
START_HOOK(GROUP_EVENT_ON_CREATE);
Push(group);

View File

@@ -15,13 +15,13 @@ namespace LuaGroup
/**
* Returns 'true' if the [Player] is the [Group] leader
*
* @param uint64 guid : guid of a possible leader
* @param ObjectGuid guid : guid of a possible leader
* @return bool isLeader
*/
int IsLeader(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
Eluna::Push(L, group->IsLeader(ObjectGuid(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
Eluna::Push(L, group->IsLeader(guid));
return 1;
}
@@ -61,26 +61,26 @@ namespace LuaGroup
/**
* Returns 'true' if the [Player] is a member of this [Group]
*
* @param uint64 guid : guid of a player
* @param ObjectGuid guid : guid of a player
* @return bool isMember
*/
int IsMember(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
Eluna::Push(L, group->IsMember(ObjectGuid(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
Eluna::Push(L, group->IsMember(guid));
return 1;
}
/**
* Returns 'true' if the [Player] is an assistant of this [Group]
*
* @param uint64 guid : guid of a player
* @param ObjectGuid guid : guid of a player
* @return bool isAssistant
*/
int IsAssistant(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
Eluna::Push(L, group->IsAssistant(ObjectGuid(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
Eluna::Push(L, group->IsAssistant(guid));
return 1;
}
@@ -195,7 +195,7 @@ namespace LuaGroup
/**
* Returns [Group] leader GUID
*
* @return uint64 leaderGUID
* @return ObjectGuid leaderGUID
*/
int GetLeaderGUID(lua_State* L, Group* group)
{
@@ -210,7 +210,7 @@ namespace LuaGroup
/**
* Returns the [Group]'s GUID
*
* @return uint64 groupGUID
* @return ObjectGuid groupGUID
*/
int GetGUID(lua_State* L, Group* group)
{
@@ -226,7 +226,7 @@ namespace LuaGroup
* Returns a [Group] member's GUID by their name
*
* @param string name : the [Player]'s name
* @return uint64 memberGUID
* @return ObjectGuid memberGUID
*/
int GetMemberGUID(lua_State* L, Group* group)
{
@@ -253,25 +253,25 @@ namespace LuaGroup
/**
* Returns the [Player]'s subgroup ID of this [Group]
*
* @param uint64 guid : guid of the player
* @param ObjectGuid guid : guid of the player
* @return uint8 subGroupID : a valid subgroup ID or MAX_RAID_SUBGROUPS+1
*/
int GetMemberGroup(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
Eluna::Push(L, group->GetMemberGroup(ObjectGuid(guid)));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
Eluna::Push(L, group->GetMemberGroup(guid));
return 1;
}
/**
* Sets the leader of this [Group]
*
* @param uint64 guid : guid of the new leader
* @param ObjectGuid guid : guid of the new leader
*/
int SetLeader(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
group->ChangeLeader(ObjectGuid(guid));
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
group->ChangeLeader(guid);
group->SendUpdate();
return 0;
}
@@ -281,18 +281,18 @@ namespace LuaGroup
*
* @param [WorldPacket] packet : the [WorldPacket] to send
* @param bool ignorePlayersInBg : ignores [Player]s in a battleground
* @param uint64 ignore : ignore a [Player] by their GUID
* @param ObjectGuid ignore : ignore a [Player] by their GUID
*/
int SendPacket(lua_State* L, Group* group)
{
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(L, 2);
bool ignorePlayersInBg = Eluna::CHECKVAL<bool>(L, 3);
uint64 ignore = Eluna::CHECKVAL<uint64>(L, 4);
ObjectGuid ignore = Eluna::CHECKVAL<ObjectGuid>(L, 4);
#ifdef CMANGOS
group->BroadcastPacket(*data, ignorePlayersInBg, -1, ObjectGuid(ignore));
group->BroadcastPacket(*data, ignorePlayersInBg, -1, ignore);
#else
group->BroadcastPacket(data, ignorePlayersInBg, -1, ObjectGuid(ignore));
group->BroadcastPacket(data, ignorePlayersInBg, -1, ignore);
#endif
return 0;
}
@@ -310,19 +310,19 @@ namespace LuaGroup
* };
* </pre>
*
* @param uint64 guid : guid of the player to remove
* @param ObjectGuid guid : guid of the player to remove
* @param [RemoveMethod] method : method used to remove the player
* @return bool removed
*/
int RemoveMember(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
uint32 method = Eluna::CHECKVAL<uint32>(L, 3, 0);
#if defined TRINITY || AZEROTHCORE
Eluna::Push(L, group->RemoveMember(ObjectGuid(guid), (RemoveMethod)method));
Eluna::Push(L, group->RemoveMember(guid, (RemoveMethod)method));
#else
Eluna::Push(L, group->RemoveMember(ObjectGuid(guid), method));
Eluna::Push(L, group->RemoveMember(guid, method));
#endif
return 1;
}
@@ -350,12 +350,12 @@ namespace LuaGroup
/**
* Sets the member's subGroup
*
* @param uint64 guid : guid of the player to move
* @param ObjectGuid guid : guid of the player to move
* @param uint8 groupID : the subGroup's ID
*/
int SetMembersGroup(lua_State* L, Group* group)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
uint8 subGroup = Eluna::CHECKVAL<uint8>(L, 3);
if (subGroup >= MAX_RAID_SUBGROUPS)
@@ -367,7 +367,7 @@ namespace LuaGroup
if (!group->HasFreeSlotSubGroup(subGroup))
return 0;
group->ChangeMembersGroup(ObjectGuid(guid), subGroup);
group->ChangeMembersGroup(guid, subGroup);
return 0;
}
@@ -375,22 +375,22 @@ namespace LuaGroup
* Sets the target icon of an object for the [Group]
*
* @param uint8 icon : the icon (Skull, Square, etc)
* @param uint64 target : GUID of the icon target, 0 is to clear the icon
* @param uint64 setter : GUID of the icon setter
* @param ObjectGuid target : GUID of the icon target, 0 is to clear the icon
* @param ObjectGuid setter : GUID of the icon setter
*/
int SetTargetIcon(lua_State* L, Group* group)
{
uint8 icon = Eluna::CHECKVAL<uint8>(L, 2);
uint64 target = Eluna::CHECKVAL<uint64>(L, 3);
uint64 setter = Eluna::CHECKVAL<uint64>(L, 4, 0);
ObjectGuid target = Eluna::CHECKVAL<ObjectGuid>(L, 3);
ObjectGuid setter = Eluna::CHECKVAL<ObjectGuid>(L, 4, ObjectGuid());
if (icon >= TARGETICONCOUNT)
return luaL_argerror(L, 2, "valid target icon expected");
#if (defined(CLASSIC) || defined(TBC))
group->SetTargetIcon(icon, ObjectGuid(target));
group->SetTargetIcon(icon, target);
#else
group->SetTargetIcon(icon, ObjectGuid(setter), ObjectGuid(target));
group->SetTargetIcon(icon, setter, target);
#endif
return 0;
}

View File

@@ -92,7 +92,7 @@ namespace LuaGuild
/**
* Returns [Guild] leader GUID
*
* @return uint64 leaderGUID
* @return ObjectGuid leaderGUID
*/
int GetLeaderGUID(lua_State* L, Guild* guild)
{

View File

@@ -71,7 +71,7 @@ bool Eluna::OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
// This is a hack fix to stop spell casting visual bug when a spell is not cast on use
WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 18);
data << uint8(59); // EQUIP_ERR_NONE / EQUIP_ERR_CANT_BE_DISENCHANTED
data << ObjectGuid(guid);
data << guid;
data << ObjectGuid(uint64(0));
data << uint8(0);
#ifdef CMANGOS

View File

@@ -749,6 +749,10 @@ void Eluna::Push(lua_State* luastate, Object const* obj)
ElunaTemplate<Object>::Push(luastate, obj);
}
}
void Eluna::Push(lua_State* luastate, ObjectGuid const guid)
{
ElunaTemplate<unsigned long long>::Push(luastate, new unsigned long long(guid.GetRawValue()));
}
static int CheckIntegerRange(lua_State* luastate, int narg, int min, int max)
{
@@ -851,6 +855,10 @@ template<> unsigned long Eluna::CHECKVAL<unsigned long>(lua_State* luastate, int
{
return static_cast<unsigned long>(CHECKVAL<unsigned long long>(luastate, narg));
}
template<> ObjectGuid Eluna::CHECKVAL<ObjectGuid>(lua_State* luastate, int narg)
{
return ObjectGuid(uint64((CHECKVAL<unsigned long long>(luastate, narg))));
}
template<> Object* Eluna::CHECKOBJ<Object>(lua_State* luastate, int narg, bool error)
{
@@ -936,7 +944,7 @@ static void createCancelCallback(lua_State* L, uint64 bindingID, BindingMap<K>*
}
// Saves the function reference ID given to the register type's store for given entry under the given event
int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, uint64 guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots)
int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, ObjectGuid guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots)
{
uint64 bindingID;
@@ -1037,7 +1045,7 @@ int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, uint64 guid, uint
}
else
{
if (guid == 0)
if (guid.IsEmpty())
{
luaL_unref(L, LUA_REGISTRYINDEX, functionRef);
luaL_error(L, "guid was 0!");
@@ -1167,7 +1175,7 @@ int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, uint64 guid, uint
}
luaL_unref(L, LUA_REGISTRYINDEX, functionRef);
std::ostringstream oss;
oss << "regtype " << static_cast<uint32>(regtype) << ", event " << event_id << ", entry " << entry << ", guid " << guid << ", instance " << instanceId;
oss << "regtype " << static_cast<uint32>(regtype) << ", event " << event_id << ", entry " << entry << ", guid " << guid.GetRawValue() << ", instance " << instanceId;
luaL_error(L, "Unknown event type (%s)", oss.str().c_str());
return 0;
}

View File

@@ -188,7 +188,7 @@ private:
// Some helpers for hooks to call event handlers.
// The bodies of the templates are in HookHelpers.h, so if you want to use them you need to #include "HookHelpers.h".
template<typename K1, typename K2> int SetupStack(BindingMap<K1>* bindings1, BindingMap<K2>* bindings2, const K1& key1, const K2& key2, int number_of_arguments);
int CallOneFunction(int number_of_functions, int number_of_arguments, int number_of_results);
int CallOneFunction(int number_of_functions, int number_of_arguments, int number_of_results);
void CleanUpStack(int number_of_arguments);
template<typename T> void ReplaceArgument(T value, uint8 index);
template<typename K1, typename K2> void CallAllFunctions(BindingMap<K1>* bindings1, BindingMap<K2>* bindings2, const K1& key1, const K2& key2);
@@ -223,6 +223,7 @@ private:
void Push(const double value) { Push(L, value); ++push_counter; }
void Push(const std::string& value) { Push(L, value); ++push_counter; }
void Push(const char* value) { Push(L, value); ++push_counter; }
void Push(ObjectGuid const value) { Push(L, value); ++push_counter; }
template<typename T>
void Push(T const* ptr) { Push(L, ptr); ++push_counter; }
@@ -288,6 +289,7 @@ public:
static void Push(lua_State* luastate, Unit const* unit);
static void Push(lua_State* luastate, Pet const* pet);
static void Push(lua_State* luastate, TempSummon const* summon);
static void Push(lua_State* luastate, ObjectGuid const guid);
template<typename T>
static void Push(lua_State* luastate, T const* ptr)
{
@@ -323,7 +325,7 @@ public:
bool IsEnabled() const { return enabled && IsInitialized(); }
bool HasLuaState() const { return L != NULL; }
uint64 GetCallstackId() const { return callstackid; }
int Register(lua_State* L, uint8 reg, uint32 entry, uint64 guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots);
int Register(lua_State* L, uint8 reg, uint32 entry, ObjectGuid guid, uint32 instanceId, uint32 event_id, int functionRef, uint32 shots);
// Checks
template<typename T> static T CHECKVAL(lua_State* luastate, int narg);
@@ -345,7 +347,7 @@ public:
void OnTimedEvent(int funcRef, uint32 delay, uint32 calls, WorldObject* obj);
bool OnCommand(Player* player, const char* text);
void OnWorldUpdate(uint32 diff);
void OnLootItem(Player* pPlayer, Item* pItem, uint32 count, uint64 guid);
void OnLootItem(Player* pPlayer, Item* pItem, uint32 count, ObjectGuid guid);
void OnLootMoney(Player* pPlayer, uint32 amount);
void OnFirstLogin(Player* pPlayer);
void OnEquip(Player* pPlayer, Item* pItem, uint8 bag, uint8 slot);
@@ -449,7 +451,7 @@ public:
bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Channel* pChannel);
bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Player* pReceiver);
void OnEmote(Player* pPlayer, uint32 emote);
void OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, uint64 guid);
void OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, ObjectGuid guid);
void OnSpellCast(Player* pPlayer, Spell* pSpell, bool skipCheck);
void OnLogin(Player* pPlayer);
void OnLogout(Player* pPlayer);
@@ -498,12 +500,12 @@ public:
void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId);
/* Group */
void OnAddMember(Group* group, uint64 guid);
void OnInviteMember(Group* group, uint64 guid);
void OnRemoveMember(Group* group, uint64 guid, uint8 method);
void OnChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid);
void OnAddMember(Group* group, ObjectGuid guid);
void OnInviteMember(Group* group, ObjectGuid guid);
void OnRemoveMember(Group* group, ObjectGuid guid, uint8 method);
void OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid);
void OnDisband(Group* group);
void OnCreate(Group* group, uint64 leaderGuid, GroupType groupType);
void OnCreate(Group* group, ObjectGuid leaderGuid, GroupType groupType);
/* Map */
void OnCreate(Map* map);

View File

@@ -205,45 +205,41 @@ namespace LuaMap
/**
* Returns a [WorldObject] by its GUID from the map if it is spawned.
*
* @param uint64 guid
* @param ObjectGuid guid
*/
int GetWorldObject(lua_State* L, Map* map)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
#if defined TRINITY || AZEROTHCORE
switch (GUID_HIPART(guid))
switch (guid.GetHigh())
{
case HIGHGUID_PLAYER:
#ifndef AZEROTHCORE
Eluna::Push(L, eObjectAccessor()GetPlayer(map, ObjectGuid(guid)));
#else
Eluna::Push(L, map->GetPlayer(ObjectGuid(guid)));
#endif // !AZEROTHCORE
Eluna::Push(L, eObjectAccessor()GetPlayer(map, guid));
break;
case HIGHGUID_TRANSPORT:
case HIGHGUID_MO_TRANSPORT:
case HIGHGUID_GAMEOBJECT:
Eluna::Push(L, map->GetGameObject(ObjectGuid(guid)));
Eluna::Push(L, map->GetGameObject(guid));
break;
case HIGHGUID_VEHICLE:
case HIGHGUID_UNIT:
Eluna::Push(L, map->GetCreature(ObjectGuid(guid)));
Eluna::Push(L, map->GetCreature(guid));
break;
case HIGHGUID_PET:
Eluna::Push(L, map->GetPet(ObjectGuid(guid)));
Eluna::Push(L, map->GetPet(guid));
break;
case HIGHGUID_DYNAMICOBJECT:
Eluna::Push(L, map->GetDynamicObject(ObjectGuid(guid)));
Eluna::Push(L, map->GetDynamicObject(guid));
break;
case HIGHGUID_CORPSE:
Eluna::Push(L, map->GetCorpse(ObjectGuid(guid)));
Eluna::Push(L, map->GetCorpse(guid));
break;
default:
break;
}
#else
Eluna::Push(L, map->GetWorldObject(ObjectGuid(guid)));
Eluna::Push(L, map->GetWorldObject(guid));
#endif
return 1;
}

View File

@@ -163,8 +163,8 @@ namespace LuaObject
* the same GUID but not on the same map.
*
* On TrinityCore this value is unique across all maps
*
* @return uint64 guid
*
* @return ObjectGuid guid
*/
int GetGUID(lua_State* L, Object* obj)
{
@@ -186,7 +186,7 @@ namespace LuaObject
*/
int GetGUIDLow(lua_State* L, Object* obj)
{
#ifdef TRINITY
#if defined TRINITY || AZEROTHCORE
Eluna::Push(L, obj->GetGUID().GetCounter());
#else
Eluna::Push(L, obj->GetGUIDLow());

View File

@@ -59,7 +59,7 @@ bool Eluna::OnCommand(Player* player, const char* text)
return CallAllFunctionsBool(PlayerEventBindings, key, true);
}
void Eluna::OnLootItem(Player* pPlayer, Item* pItem, uint32 count, uint64 guid)
void Eluna::OnLootItem(Player* pPlayer, Item* pItem, uint32 count, ObjectGuid guid)
{
START_HOOK(PLAYER_EVENT_ON_LOOT_ITEM);
Push(pPlayer);
@@ -311,7 +311,7 @@ void Eluna::OnEmote(Player* pPlayer, uint32 emote)
CallAllFunctions(PlayerEventBindings, key);
}
void Eluna::OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, uint64 guid)
void Eluna::OnTextEmote(Player* pPlayer, uint32 textEmote, uint32 emoteNum, ObjectGuid guid)
{
START_HOOK(PLAYER_EVENT_ON_TEXT_EMOTE);
Push(pPlayer);

View File

@@ -1370,14 +1370,14 @@ namespace LuaPlayer
*
* The item can be equipped, in bags or in bank.
*
* @param uint64 guid : an item guid
* @param ObjectGuid guid : an item guid
* @return [Item] item
*/
int GetItemByGUID(lua_State* L, Player* player)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
Eluna::Push(L, player->GetItemByGuid(ObjectGuid(guid)));
Eluna::Push(L, player->GetItemByGuid(guid));
return 1;
}
@@ -2135,18 +2135,18 @@ namespace LuaPlayer
/**
* Shows the mailbox window to the player from specified guid.
*
* @param uint64 guid = playerguid : guid of the mailbox window sender
* @param ObjectGuid guid = playerguid : guid of the mailbox window sender
*/
int SendShowMailBox(lua_State* L, Player* player)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2, player->GET_GUID());
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2, player->GET_GUID());
#if (defined(CLASSIC) || defined(TBC))
WorldPacket data(CMSG_GET_MAIL_LIST, 8);
data << uint64(guid);
data << guid;
player->GetSession()->HandleGetMailList(data);
#else
player->GetSession()->SendShowMailBox(ObjectGuid(guid));
player->GetSession()->SendShowMailBox(guid);
#endif
return 0;
}
@@ -2209,7 +2209,7 @@ namespace LuaPlayer
player->SetSummonPoint(summoner->GetMapId(), x, y, z);
WorldPacket data(SMSG_SUMMON_REQUEST, 8 + 4 + 4);
data << uint64(summoner->GetGUIDLow());
data << summoner->GET_GUID();
data << uint32(summoner->GetZoneId());
data << uint32(MAX_PLAYER_SUMMON_DELAY * IN_MILLISECONDS);
#ifdef CMANGOS
@@ -2278,11 +2278,10 @@ namespace LuaPlayer
return 0;
WorldPacket data(MSG_AUCTION_HELLO, 12);
data << unit->GET_GUID();
#ifdef TRINITY
data << uint64(unit->GetGUID().GetCounter());
data << uint32(ahEntry->ID);
#else
data << uint64(unit->GetGUIDLow());
data << uint32(ahEntry->houseId);
#endif
data << uint8(1);
@@ -2434,7 +2433,7 @@ namespace LuaPlayer
#ifndef AZEROTHCORE
player->UnbindInstance(map, (Difficulty)difficulty);
#else
sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUIDLow(), map, Difficulty(difficulty), true, player);
sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUID(), map, Difficulty(difficulty), true, player);
#endif//AZEROTHCORE
#else//CLASSIC
player->UnbindInstance(map);
@@ -2459,12 +2458,12 @@ namespace LuaPlayer
#elif defined AZEROTHCORE
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
{
const BoundInstancesMap& binds = sInstanceSaveMgr->PlayerGetBoundInstances(player->GetGUIDLow(), Difficulty(i));
const BoundInstancesMap& binds = sInstanceSaveMgr->PlayerGetBoundInstances(player->GetGUID(), Difficulty(i));
for (BoundInstancesMap::const_iterator itr = binds.begin(); itr != binds.end();)
{
if (itr->first != player->GetMapId())
{
sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUIDLow(), itr->first, Difficulty(i), true, player);
sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUID(), itr->first, Difficulty(i), true, player);
itr = binds.begin();
}
else
@@ -2870,11 +2869,7 @@ namespace LuaPlayer
{
if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature))
for (uint16 z = 0; z < creatureCount; ++z)
#ifndef AZEROTHCORE
player->KilledMonster(creatureInfo, ObjectGuid::Empty);
#else
player->KilledMonster(creatureInfo, 0);
#endif
}
else if (creature < 0)
for (uint16 z = 0; z < creatureCount; ++z)
@@ -3061,7 +3056,7 @@ namespace LuaPlayer
* @param string text
* @param uint32 lang : language the [Player] will speak
* @param [Player] receiver : is the [Player] that will receive the whisper, if TrinityCore
* @param uint64 guid : is the GUID of a [Player] that will receive the whisper, not TrinityCore
* @param ObjectGuid guid : is the GUID of a [Player] that will receive the whisper, not TrinityCore
*/
int Whisper(lua_State* L, Player* player)
{
@@ -3070,12 +3065,12 @@ namespace LuaPlayer
#ifdef TRINITY
Player* receiver = Eluna::CHECKOBJ<Player>(L, 4);
#else
uint64 guid = Eluna::CHECKVAL<uint64>(L, 4);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 4);
#endif
#ifdef TRINITY
player->Whisper(text, (Language)lang, receiver);
#else
player->Whisper(text, lang, ObjectGuid(guid));
player->Whisper(text, lang, guid);
#endif
return 0;
}
@@ -3637,10 +3632,10 @@ namespace LuaPlayer
WorldPacket data(SMSG_MESSAGECHAT, 100);
data << uint8(channel);
data << int32(LANG_ADDON);
data << uint64(player->GET_GUID());
data << player->GET_GUID();
#ifndef CLASSIC
data << uint32(0);
data << uint64(receiver->GET_GUID());
data << receiver->GET_GUID();
#endif
data << uint32(fullmsg.length() + 1);
data << fullmsg;
@@ -4114,7 +4109,7 @@ namespace LuaPlayer
/*int KillGOCredit(lua_State* L, Player* player)
{
uint32 entry = Eluna::CHECKVAL<uint32>(L, 2);
uint64 guid = Eluna::CHECKVAL<uint64>(L, 3);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 3);
player->KillCreditGO(entry, guid);
return 0;
}*/

View File

@@ -140,19 +140,23 @@ void Eluna::OnChange(Weather* /*weather*/, uint32 zone, WeatherState state, floa
// Auction House
void Eluna::OnAdd(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
{
#ifdef AZEROTHCORE
Player* owner = eObjectAccessor()FindPlayer(entry->owner);
#else
Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER));
#endif
#ifdef TRINITY
Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow);
uint32 expiretime = entry->expire_time;
#elif AZEROTHCORE
Item* item = eAuctionMgr->GetAItem(entry->item_guidlow);
Item* item = eAuctionMgr->GetAItem(entry->item_guid);
uint32 expiretime = entry->expire_time;
#else
Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow);
uint32 expiretime = entry->expireTime;
#endif
if (!owner || !item)
return;
@@ -170,12 +174,17 @@ void Eluna::OnAdd(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
void Eluna::OnRemove(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
{
#ifdef AZEROTHCORE
Player* owner = eObjectAccessor()FindPlayer(entry->owner);
#else
Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER));
#endif
#ifdef TRINITY
Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow);
uint32 expiretime = entry->expire_time;
#elif AZEROTHCORE
Item* item = eAuctionMgr->GetAItem(entry->item_guidlow);
Item* item = eAuctionMgr->GetAItem(entry->item_guid);
uint32 expiretime = entry->expire_time;
#else
Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow);
@@ -200,12 +209,17 @@ void Eluna::OnRemove(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
void Eluna::OnSuccessful(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
{
#ifdef AZEROTHCORE
Player* owner = eObjectAccessor()FindPlayer(entry->owner);
#else
Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER));
#endif
#ifdef TRINITY
Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow);
uint32 expiretime = entry->expire_time;
#elif AZEROTHCORE
Item* item = eAuctionMgr->GetAItem(entry->item_guidlow);
Item* item = eAuctionMgr->GetAItem(entry->item_guid);
uint32 expiretime = entry->expire_time;
#else
Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow);
@@ -230,12 +244,17 @@ void Eluna::OnSuccessful(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
void Eluna::OnExpire(AuctionHouseObject* /*ah*/, AuctionEntry* entry)
{
#ifdef AZEROTHCORE
Player* owner = eObjectAccessor()FindPlayer(entry->owner);
#else
Player* owner = eObjectAccessor()FindPlayer(MAKE_NEW_GUID(entry->owner, 0, HIGHGUID_PLAYER));
#endif
#ifdef TRINITY
Item* item = eAuctionMgr->GetAItem(entry->itemGUIDLow);
uint32 expiretime = entry->expire_time;
#elif AZEROTHCORE
Item* item = eAuctionMgr->GetAItem(entry->item_guidlow);
Item* item = eAuctionMgr->GetAItem(entry->item_guid);
uint32 expiretime = entry->expire_time;
#else
Item* item = eAuctionMgr->GetAItem(entry->itemGuidLow);

View File

@@ -602,7 +602,7 @@ namespace LuaUnit
/**
* Returns the [Unit]'s owner's GUID.
*
* @return uint64 ownerGUID
* @return ObjectGuid ownerGUID
*/
int GetOwnerGUID(lua_State* L, Unit* unit)
{
@@ -628,7 +628,7 @@ namespace LuaUnit
/**
* Returns the [Unit]'s creator's GUID.
*
* @return uint64 creatorGUID
* @return ObjectGuid creatorGUID
*/
int GetCreatorGUID(lua_State* L, Unit* unit)
{
@@ -643,7 +643,7 @@ namespace LuaUnit
/**
* Returns the [Unit]'s charmer's GUID.
*
* @return uint64 charmerGUID
* @return ObjectGuid charmerGUID
*/
int GetCharmerGUID(lua_State* L, Unit* unit)
{
@@ -658,7 +658,7 @@ namespace LuaUnit
/**
* Returns the GUID of the [Unit]'s charmed entity.
*
* @return uint64 charmedGUID
* @return ObjectGuid charmedGUID
*/
int GetCharmGUID(lua_State* L, Unit* unit)
{
@@ -675,7 +675,7 @@ namespace LuaUnit
/**
* Returns the GUID of the [Unit]'s pet.
*
* @return uint64 petGUID
* @return ObjectGuid petGUID
*/
int GetPetGUID(lua_State* L, Unit* unit)
{
@@ -690,7 +690,7 @@ namespace LuaUnit
/**
* Returns the GUID of the [Unit]'s charmer or owner.
*
* @return uint64 controllerGUID
* @return ObjectGuid controllerGUID
*/
int GetControllerGUID(lua_State* L, Unit* unit)
{
@@ -705,7 +705,7 @@ namespace LuaUnit
/**
* Returns the GUID of the [Unit]'s charmer or owner or its own GUID.
*
* @return uint64 controllerGUID
* @return ObjectGuid controllerGUID
*/
int GetControllerGUIDS(lua_State* L, Unit* unit)
{
@@ -1355,7 +1355,7 @@ namespace LuaUnit
/**
* Returns the Critter Guid
*
* @return uint64 critterGuid
* @return ObjectGuid critterGuid
*/
int GetCritterGUID(lua_State* L, Unit* unit)
{
@@ -1444,16 +1444,16 @@ namespace LuaUnit
/**
* Sets the [Unit]'s owner GUID to given GUID.
*
* @param uint64 guid : new owner guid
* @param ObjectGuid guid : new owner guid
*/
int SetOwnerGUID(lua_State* L, Unit* unit)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
#if defined TRINITY || AZEROTHCORE
unit->SetOwnerGUID(ObjectGuid(guid));
unit->SetOwnerGUID(guid);
#else
unit->SetOwnerGuid(ObjectGuid(guid));
unit->SetOwnerGuid(guid);
#endif
return 0;
}
@@ -1785,15 +1785,15 @@ namespace LuaUnit
/**
* Sets creator GUID
*
* @param uint64 guid
* @param ObjectGuid guid
*/
int SetCreatorGUID(lua_State* L, Unit* unit)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
#if defined TRINITY || AZEROTHCORE
unit->SetCreatorGUID(ObjectGuid(guid));
unit->SetCreatorGUID(guid);
#else
unit->SetCreatorGuid(ObjectGuid(guid));
unit->SetCreatorGuid(guid);
#endif
return 0;
}
@@ -1801,15 +1801,15 @@ namespace LuaUnit
/**
* Sets pet GUID
*
* @param uint64 guid
* @param ObjectGuid guid
*/
int SetPetGUID(lua_State* L, Unit* unit)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
#if defined TRINITY || AZEROTHCORE
unit->SetPetGUID(ObjectGuid(guid));
unit->SetPetGUID(guid);
#else
unit->SetPetGuid(ObjectGuid(guid));
unit->SetPetGuid(guid);
#endif
return 0;
}
@@ -1907,11 +1907,11 @@ namespace LuaUnit
int SetCritterGUID(lua_State* L, Unit* unit)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
#if defined TRINITY || AZEROTHCORE
unit->SetCritterGUID(ObjectGuid(guid));
unit->SetCritterGUID(guid);
#else
unit->SetCritterGuid(ObjectGuid(guid));
unit->SetCritterGuid(guid);
#endif
return 0;
}
@@ -2444,7 +2444,7 @@ namespace LuaUnit
* @param int32 bp1 = nil : custom basepoints for [Spell] effect 2. If nil, no change is made
* @param int32 bp2 = nil : custom basepoints for [Spell] effect 3. If nil, no change is made
* @param [Item] castItem = nil
* @param uint64 originalCaster = 0
* @param ObjectGuid originalCaster = ObjectGuid()
*/
int CastCustomSpell(lua_State* L, Unit* unit)
{
@@ -2458,7 +2458,7 @@ namespace LuaUnit
bool has_bp2 = !lua_isnoneornil(L, 7);
int32 bp2 = Eluna::CHECKVAL<int32>(L, 7, 0);
Item* castItem = Eluna::CHECKOBJ<Item>(L, 8, false);
uint64 originalCaster = Eluna::CHECKVAL<uint64>(L, 9, 0);
ObjectGuid originalCaster = Eluna::CHECKVAL<ObjectGuid>(L, 9, ObjectGuid());
#ifdef TRINITY
CastSpellExtraArgs args;
@@ -2473,7 +2473,7 @@ namespace LuaUnit
if (castItem)
args.SetCastItem(castItem);
if (originalCaster)
args.SetOriginalCaster(ObjectGuid(originalCaster));
args.SetOriginalCaster(originalCaster);
unit->CastSpell(target, spell, args);
#else
unit->CastCustomSpell(target, spell, has_bp0 ? &bp0 : NULL, has_bp1 ? &bp1 : NULL, has_bp2 ? &bp2 : NULL, triggered, castItem, NULL, ObjectGuid(originalCaster));

View File

@@ -163,11 +163,11 @@ namespace LuaPacket
/**
* Reads and returns an unsigned 64-bit integer value from the [WorldPacket].
*
* @return uint64 value : value returned as string
* @return ObjectGuid value : value returned as string
*/
int ReadGUID(lua_State* L, WorldPacket* packet)
{
uint64 guid;
ObjectGuid guid;
(*packet) >> guid;
Eluna::Push(L, guid);
return 1;
@@ -189,11 +189,11 @@ namespace LuaPacket
/**
* Writes an unsigned 64-bit integer value to the [WorldPacket].
*
* @param uint64 value : the value to be written to the [WorldPacket]
* @param ObjectGuid value : the value to be written to the [WorldPacket]
*/
int WriteGUID(lua_State* L, WorldPacket* packet)
{
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2);
(*packet) << guid;
return 0;
}