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 struct UniqueObjectKey
{ {
T event_id; T event_id;
uint64 guid; ObjectGuid guid;
uint32 instance_id; 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), event_id(event_id),
guid(guid), guid(guid),
instance_id(instance_id) instance_id(instance_id)
@@ -367,7 +367,7 @@ namespace std
hash_helper::result_type operator()(argument_type const& k) const 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. * Returns the GUID of the [Player] that left the [Corpse] behind.
* *
* @return uint64 ownerGUID * @return ObjectGuid ownerGUID
*/ */
int GetOwnerGUID(lua_State* L, Corpse* corpse) 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) int GetDBTableGUIDLow(lua_State* L, Creature* creature)
{ {
#if defined(TRINITY) #if defined(TRINITY) || defined(AZEROTHCORE)
Eluna::Push(L, creature->GetSpawnId()); Eluna::Push(L, creature->GetSpawnId());
#else #else
// on mangos based this is same as lowguid // on mangos based this is same as lowguid

View File

@@ -47,10 +47,24 @@ typedef QueryResult ElunaQuery;
#define HIGHGUID_GROUP HighGuid::Group #define HIGHGUID_GROUP HighGuid::Group
#elif AZEROTHCORE #elif AZEROTHCORE
typedef QueryResult ElunaQuery; typedef QueryResult ElunaQuery;
#define ELUNA_LOG_INFO(...) sLog->outString(__VA_ARGS__); #define ELUNA_LOG_INFO(...) LOG_INFO("eluna", __VA_ARGS__);
#define ELUNA_LOG_ERROR(...) sLog->outError(__VA_ARGS__); #define ELUNA_LOG_ERROR(...) LOG_ERROR("eluna", __VA_ARGS__);
#define ELUNA_LOG_DEBUG(...) sLog->outDebug(LOG_FILTER_NONE,__VA_ARGS__); #define ELUNA_LOG_DEBUG(...) LOG_DEBUG("eluna", __VA_ARGS__);
#define GET_GUID GetGUID #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 #else
typedef QueryNamedResult ElunaQuery; typedef QueryNamedResult ElunaQuery;
#define ASSERT MANGOS_ASSERT #define ASSERT MANGOS_ASSERT
@@ -63,7 +77,7 @@ typedef QueryNamedResult ElunaQuery;
#define GetTemplate GetProto #define GetTemplate GetProto
#endif #endif
#if defined(TRINITY) || defined(MANGOS) #if defined(TRINITY) || defined(AZEROTHCORE) || defined(MANGOS)
#ifndef MAKE_NEW_GUID #ifndef MAKE_NEW_GUID
#define MAKE_NEW_GUID(l, e, h) ObjectGuid(h, e, l) #define MAKE_NEW_GUID(l, e, h) ObjectGuid(h, e, l)
#endif #endif

View File

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

View File

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

View File

@@ -20,7 +20,7 @@ using namespace Hooks;
return;\ return;\
LOCK_ELUNA LOCK_ELUNA
void Eluna::OnAddMember(Group* group, uint64 guid) void Eluna::OnAddMember(Group* group, ObjectGuid guid)
{ {
START_HOOK(GROUP_EVENT_ON_MEMBER_ADD); START_HOOK(GROUP_EVENT_ON_MEMBER_ADD);
Push(group); Push(group);
@@ -28,7 +28,7 @@ void Eluna::OnAddMember(Group* group, uint64 guid)
CallAllFunctions(GroupEventBindings, key); CallAllFunctions(GroupEventBindings, key);
} }
void Eluna::OnInviteMember(Group* group, uint64 guid) void Eluna::OnInviteMember(Group* group, ObjectGuid guid)
{ {
START_HOOK(GROUP_EVENT_ON_MEMBER_INVITE); START_HOOK(GROUP_EVENT_ON_MEMBER_INVITE);
Push(group); Push(group);
@@ -36,7 +36,7 @@ void Eluna::OnInviteMember(Group* group, uint64 guid)
CallAllFunctions(GroupEventBindings, key); 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); START_HOOK(GROUP_EVENT_ON_MEMBER_REMOVE);
Push(group); Push(group);
@@ -45,7 +45,7 @@ void Eluna::OnRemoveMember(Group* group, uint64 guid, uint8 method)
CallAllFunctions(GroupEventBindings, key); 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); START_HOOK(GROUP_EVENT_ON_LEADER_CHANGE);
Push(group); Push(group);
@@ -61,7 +61,7 @@ void Eluna::OnDisband(Group* group)
CallAllFunctions(GroupEventBindings, key); 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); START_HOOK(GROUP_EVENT_ON_CREATE);
Push(group); Push(group);

View File

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

View File

@@ -92,7 +92,7 @@ namespace LuaGuild
/** /**
* Returns [Guild] leader GUID * Returns [Guild] leader GUID
* *
* @return uint64 leaderGUID * @return ObjectGuid leaderGUID
*/ */
int GetLeaderGUID(lua_State* L, Guild* guild) 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 // 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); WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 18);
data << uint8(59); // EQUIP_ERR_NONE / EQUIP_ERR_CANT_BE_DISENCHANTED data << uint8(59); // EQUIP_ERR_NONE / EQUIP_ERR_CANT_BE_DISENCHANTED
data << ObjectGuid(guid); data << guid;
data << ObjectGuid(uint64(0)); data << ObjectGuid(uint64(0));
data << uint8(0); data << uint8(0);
#ifdef CMANGOS #ifdef CMANGOS

View File

@@ -749,6 +749,10 @@ void Eluna::Push(lua_State* luastate, Object const* obj)
ElunaTemplate<Object>::Push(luastate, 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) 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)); 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) 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 // 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; uint64 bindingID;
@@ -1037,7 +1045,7 @@ int Eluna::Register(lua_State* L, uint8 regtype, uint32 entry, uint64 guid, uint
} }
else else
{ {
if (guid == 0) if (guid.IsEmpty())
{ {
luaL_unref(L, LUA_REGISTRYINDEX, functionRef); luaL_unref(L, LUA_REGISTRYINDEX, functionRef);
luaL_error(L, "guid was 0!"); 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); luaL_unref(L, LUA_REGISTRYINDEX, functionRef);
std::ostringstream oss; 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()); luaL_error(L, "Unknown event type (%s)", oss.str().c_str());
return 0; return 0;
} }

View File

@@ -188,7 +188,7 @@ private:
// Some helpers for hooks to call event handlers. // 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". // 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); 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); void CleanUpStack(int number_of_arguments);
template<typename T> void ReplaceArgument(T value, uint8 index); 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); 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 double value) { Push(L, value); ++push_counter; }
void Push(const std::string& 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(const char* value) { Push(L, value); ++push_counter; }
void Push(ObjectGuid const value) { Push(L, value); ++push_counter; }
template<typename T> template<typename T>
void Push(T const* ptr) { Push(L, ptr); ++push_counter; } 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, Unit const* unit);
static void Push(lua_State* luastate, Pet const* pet); static void Push(lua_State* luastate, Pet const* pet);
static void Push(lua_State* luastate, TempSummon const* summon); static void Push(lua_State* luastate, TempSummon const* summon);
static void Push(lua_State* luastate, ObjectGuid const guid);
template<typename T> template<typename T>
static void Push(lua_State* luastate, T const* ptr) static void Push(lua_State* luastate, T const* ptr)
{ {
@@ -323,7 +325,7 @@ public:
bool IsEnabled() const { return enabled && IsInitialized(); } bool IsEnabled() const { return enabled && IsInitialized(); }
bool HasLuaState() const { return L != NULL; } bool HasLuaState() const { return L != NULL; }
uint64 GetCallstackId() const { return callstackid; } 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 // Checks
template<typename T> static T CHECKVAL(lua_State* luastate, int narg); 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); void OnTimedEvent(int funcRef, uint32 delay, uint32 calls, WorldObject* obj);
bool OnCommand(Player* player, const char* text); bool OnCommand(Player* player, const char* text);
void OnWorldUpdate(uint32 diff); 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 OnLootMoney(Player* pPlayer, uint32 amount);
void OnFirstLogin(Player* pPlayer); void OnFirstLogin(Player* pPlayer);
void OnEquip(Player* pPlayer, Item* pItem, uint8 bag, uint8 slot); 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, Channel* pChannel);
bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Player* pReceiver); bool OnChat(Player* pPlayer, uint32 type, uint32 lang, std::string& msg, Player* pReceiver);
void OnEmote(Player* pPlayer, uint32 emote); 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 OnSpellCast(Player* pPlayer, Spell* pSpell, bool skipCheck);
void OnLogin(Player* pPlayer); void OnLogin(Player* pPlayer);
void OnLogout(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); void OnBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId);
/* Group */ /* Group */
void OnAddMember(Group* group, uint64 guid); void OnAddMember(Group* group, ObjectGuid guid);
void OnInviteMember(Group* group, uint64 guid); void OnInviteMember(Group* group, ObjectGuid guid);
void OnRemoveMember(Group* group, uint64 guid, uint8 method); void OnRemoveMember(Group* group, ObjectGuid guid, uint8 method);
void OnChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid); void OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid);
void OnDisband(Group* group); void OnDisband(Group* group);
void OnCreate(Group* group, uint64 leaderGuid, GroupType groupType); void OnCreate(Group* group, ObjectGuid leaderGuid, GroupType groupType);
/* Map */ /* Map */
void OnCreate(Map* 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. * 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) 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 #if defined TRINITY || AZEROTHCORE
switch (GUID_HIPART(guid)) switch (guid.GetHigh())
{ {
case HIGHGUID_PLAYER: case HIGHGUID_PLAYER:
#ifndef AZEROTHCORE Eluna::Push(L, eObjectAccessor()GetPlayer(map, guid));
Eluna::Push(L, eObjectAccessor()GetPlayer(map, ObjectGuid(guid)));
#else
Eluna::Push(L, map->GetPlayer(ObjectGuid(guid)));
#endif // !AZEROTHCORE
break; break;
case HIGHGUID_TRANSPORT: case HIGHGUID_TRANSPORT:
case HIGHGUID_MO_TRANSPORT: case HIGHGUID_MO_TRANSPORT:
case HIGHGUID_GAMEOBJECT: case HIGHGUID_GAMEOBJECT:
Eluna::Push(L, map->GetGameObject(ObjectGuid(guid))); Eluna::Push(L, map->GetGameObject(guid));
break; break;
case HIGHGUID_VEHICLE: case HIGHGUID_VEHICLE:
case HIGHGUID_UNIT: case HIGHGUID_UNIT:
Eluna::Push(L, map->GetCreature(ObjectGuid(guid))); Eluna::Push(L, map->GetCreature(guid));
break; break;
case HIGHGUID_PET: case HIGHGUID_PET:
Eluna::Push(L, map->GetPet(ObjectGuid(guid))); Eluna::Push(L, map->GetPet(guid));
break; break;
case HIGHGUID_DYNAMICOBJECT: case HIGHGUID_DYNAMICOBJECT:
Eluna::Push(L, map->GetDynamicObject(ObjectGuid(guid))); Eluna::Push(L, map->GetDynamicObject(guid));
break; break;
case HIGHGUID_CORPSE: case HIGHGUID_CORPSE:
Eluna::Push(L, map->GetCorpse(ObjectGuid(guid))); Eluna::Push(L, map->GetCorpse(guid));
break; break;
default: default:
break; break;
} }
#else #else
Eluna::Push(L, map->GetWorldObject(ObjectGuid(guid))); Eluna::Push(L, map->GetWorldObject(guid));
#endif #endif
return 1; return 1;
} }

View File

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

View File

@@ -59,7 +59,7 @@ bool Eluna::OnCommand(Player* player, const char* text)
return CallAllFunctionsBool(PlayerEventBindings, key, true); 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); START_HOOK(PLAYER_EVENT_ON_LOOT_ITEM);
Push(pPlayer); Push(pPlayer);
@@ -311,7 +311,7 @@ void Eluna::OnEmote(Player* pPlayer, uint32 emote)
CallAllFunctions(PlayerEventBindings, key); 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); START_HOOK(PLAYER_EVENT_ON_TEXT_EMOTE);
Push(pPlayer); Push(pPlayer);

View File

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

View File

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

View File

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