mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Eluna implement changes from new_mthread to master ~ Does not add multithread support
This commit is contained in:
@@ -24,9 +24,9 @@ namespace LuaAura
|
||||
*
|
||||
* @return [Unit] caster
|
||||
*/
|
||||
int GetCaster(lua_State* L, Aura* aura)
|
||||
int GetCaster(Eluna* E, Aura* aura)
|
||||
{
|
||||
Eluna::Push(L, aura->GetCaster());
|
||||
Eluna::Push(E->L, aura->GetCaster());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -35,12 +35,12 @@ namespace LuaAura
|
||||
*
|
||||
* @return string caster_guid : the GUID of the Unit as a decimal string
|
||||
*/
|
||||
int GetCasterGUID(lua_State* L, Aura* aura)
|
||||
int GetCasterGUID(Eluna* E, Aura* aura)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, aura->GetCasterGuid());
|
||||
Eluna::Push(E->L, aura->GetCasterGuid());
|
||||
#else
|
||||
Eluna::Push(L, aura->GetCasterGUID());
|
||||
Eluna::Push(E->L, aura->GetCasterGUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -50,9 +50,9 @@ namespace LuaAura
|
||||
*
|
||||
* @return uint32 caster_level
|
||||
*/
|
||||
int GetCasterLevel(lua_State* L, Aura* aura)
|
||||
int GetCasterLevel(Eluna* E, Aura* aura)
|
||||
{
|
||||
Eluna::Push(L, aura->GetCaster()->getLevel());
|
||||
Eluna::Push(E->L, aura->GetCaster()->getLevel());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -61,12 +61,12 @@ namespace LuaAura
|
||||
*
|
||||
* @return int32 duration : amount of time left in milliseconds
|
||||
*/
|
||||
int GetDuration(lua_State* L, Aura* aura)
|
||||
int GetDuration(Eluna* E, Aura* aura)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, aura->GetAuraDuration());
|
||||
Eluna::Push(E->L, aura->GetAuraDuration());
|
||||
#else
|
||||
Eluna::Push(L, aura->GetDuration());
|
||||
Eluna::Push(E->L, aura->GetDuration());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -76,9 +76,9 @@ namespace LuaAura
|
||||
*
|
||||
* @return uint32 aura_id
|
||||
*/
|
||||
int GetAuraId(lua_State* L, Aura* aura)
|
||||
int GetAuraId(Eluna* E, Aura* aura)
|
||||
{
|
||||
Eluna::Push(L, aura->GetId());
|
||||
Eluna::Push(E->L, aura->GetId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -90,12 +90,12 @@ namespace LuaAura
|
||||
*
|
||||
* @return int32 max_duration : the maximum duration of the Aura, in milliseconds
|
||||
*/
|
||||
int GetMaxDuration(lua_State* L, Aura* aura)
|
||||
int GetMaxDuration(Eluna* E, Aura* aura)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, aura->GetAuraMaxDuration());
|
||||
Eluna::Push(E->L, aura->GetAuraMaxDuration());
|
||||
#else
|
||||
Eluna::Push(L, aura->GetMaxDuration());
|
||||
Eluna::Push(E->L, aura->GetMaxDuration());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -107,9 +107,9 @@ namespace LuaAura
|
||||
*
|
||||
* @return uint32 stack_amount
|
||||
*/
|
||||
int GetStackAmount(lua_State* L, Aura* aura)
|
||||
int GetStackAmount(Eluna* E, Aura* aura)
|
||||
{
|
||||
Eluna::Push(L, aura->GetStackAmount());
|
||||
Eluna::Push(E->L, aura->GetStackAmount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -118,12 +118,12 @@ namespace LuaAura
|
||||
*
|
||||
* @return [Unit] owner
|
||||
*/
|
||||
int GetOwner(lua_State* L, Aura* aura)
|
||||
int GetOwner(Eluna* E, Aura* aura)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, aura->GetTarget());
|
||||
Eluna::Push(E->L, aura->GetTarget());
|
||||
#else
|
||||
Eluna::Push(L, aura->GetOwner());
|
||||
Eluna::Push(E->L, aura->GetOwner());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -133,9 +133,9 @@ namespace LuaAura
|
||||
*
|
||||
* @param int32 duration : the new duration of the Aura, in milliseconds
|
||||
*/
|
||||
int SetDuration(lua_State* L, Aura* aura)
|
||||
int SetDuration(Eluna* E, Aura* aura)
|
||||
{
|
||||
int32 duration = Eluna::CHECKVAL<int32>(L, 2);
|
||||
int32 duration = Eluna::CHECKVAL<int32>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
aura->GetHolder()->SetAuraDuration(duration);
|
||||
#else
|
||||
@@ -152,9 +152,9 @@ namespace LuaAura
|
||||
*
|
||||
* @param int32 duration : the new maximum duration of the Aura, in milliseconds
|
||||
*/
|
||||
int SetMaxDuration(lua_State* L, Aura* aura)
|
||||
int SetMaxDuration(Eluna* E, Aura* aura)
|
||||
{
|
||||
int32 duration = Eluna::CHECKVAL<int32>(L, 2);
|
||||
int32 duration = Eluna::CHECKVAL<int32>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
aura->GetHolder()->SetAuraMaxDuration(duration);
|
||||
#else
|
||||
@@ -171,9 +171,9 @@ namespace LuaAura
|
||||
*
|
||||
* @param uint32 amount
|
||||
*/
|
||||
int SetStackAmount(lua_State* L, Aura* aura)
|
||||
int SetStackAmount(Eluna* E, Aura* aura)
|
||||
{
|
||||
uint8 amount = Eluna::CHECKVAL<uint8>(L, 2);
|
||||
uint8 amount = Eluna::CHECKVAL<uint8>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
aura->GetHolder()->SetStackAmount(amount);
|
||||
#else
|
||||
@@ -185,13 +185,14 @@ namespace LuaAura
|
||||
/**
|
||||
* Remove this [Aura] from the [Unit] it is applied to.
|
||||
*/
|
||||
int Remove(lua_State* /*L*/, Aura* aura)
|
||||
int Remove(Eluna* E, Aura* aura)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
aura->GetHolder()->RemoveAura(aura->GetEffIndex());
|
||||
#else
|
||||
aura->Remove();
|
||||
#endif
|
||||
Eluna::CHECKOBJ<ElunaObject>(E->L, 1)->Invalidate();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return string name
|
||||
*/
|
||||
int GetName(lua_State* L, BattleGround* bg)
|
||||
int GetName(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetName());
|
||||
Eluna::Push(E->L, bg->GetName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -26,11 +26,11 @@ namespace LuaBattleGround
|
||||
* @param uint32 team : team ID
|
||||
* @return uint32 count
|
||||
*/
|
||||
int GetAlivePlayersCountByTeam(lua_State* L, BattleGround* bg)
|
||||
int GetAlivePlayersCountByTeam(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
uint32 team = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 team = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, bg->GetAlivePlayersCountByTeam((Team)team));
|
||||
Eluna::Push(E->L, bg->GetAlivePlayersCountByTeam((Team)team));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -39,9 +39,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return [Map] map
|
||||
*/
|
||||
int GetMap(lua_State* L, BattleGround* bg)
|
||||
int GetMap(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetBgMap());
|
||||
Eluna::Push(E->L, bg->GetBgMap());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -51,11 +51,11 @@ namespace LuaBattleGround
|
||||
* @param uint32 kills : amount of kills
|
||||
* @return uint32 bonusHonor
|
||||
*/
|
||||
int GetBonusHonorFromKillCount(lua_State* L, BattleGround* bg)
|
||||
int GetBonusHonorFromKillCount(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
uint32 kills = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 kills = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, bg->GetBonusHonorFromKill(kills));
|
||||
Eluna::Push(E->L, bg->GetBonusHonorFromKill(kills));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -64,9 +64,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return BattleGroundBracketId bracketId
|
||||
*/
|
||||
int GetBracketId(lua_State* L, BattleGround* bg)
|
||||
int GetBracketId(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetBracketId());
|
||||
Eluna::Push(E->L, bg->GetBracketId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -75,12 +75,12 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 endTime
|
||||
*/
|
||||
int GetEndTime(lua_State* L, BattleGround* bg)
|
||||
int GetEndTime(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
#ifdef CATA
|
||||
Eluna::Push(L, bg->GetRemainingTime());
|
||||
Eluna::Push(E->L, bg->GetRemainingTime());
|
||||
#else
|
||||
Eluna::Push(L, bg->GetEndTime());
|
||||
Eluna::Push(E->L, bg->GetEndTime());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -91,11 +91,11 @@ namespace LuaBattleGround
|
||||
* @param uint32 team : team ID
|
||||
* @return uint32 freeSlots
|
||||
*/
|
||||
int GetFreeSlotsForTeam(lua_State* L, BattleGround* bg)
|
||||
int GetFreeSlotsForTeam(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
uint32 team = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 team = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, bg->GetFreeSlotsForTeam((Team)team));
|
||||
Eluna::Push(E->L, bg->GetFreeSlotsForTeam((Team)team));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -104,9 +104,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 instanceId
|
||||
*/
|
||||
int GetInstanceId(lua_State* L, BattleGround* bg)
|
||||
int GetInstanceId(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetInstanceID());
|
||||
Eluna::Push(E->L, bg->GetInstanceID());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -115,9 +115,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 mapId
|
||||
*/
|
||||
int GetMapId(lua_State* L, BattleGround* bg)
|
||||
int GetMapId(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMapId());
|
||||
Eluna::Push(E->L, bg->GetMapId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -126,9 +126,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return BattleGroundTypeId typeId
|
||||
*/
|
||||
int GetTypeId(lua_State* L, BattleGround* bg)
|
||||
int GetTypeId(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetTypeID());
|
||||
Eluna::Push(E->L, bg->GetTypeID());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -137,9 +137,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 maxLevel
|
||||
*/
|
||||
int GetMaxLevel(lua_State* L, BattleGround* bg)
|
||||
int GetMaxLevel(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMaxLevel());
|
||||
Eluna::Push(E->L, bg->GetMaxLevel());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -148,9 +148,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 minLevel
|
||||
*/
|
||||
int GetMinLevel(lua_State* L, BattleGround* bg)
|
||||
int GetMinLevel(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMinLevel());
|
||||
Eluna::Push(E->L, bg->GetMinLevel());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -159,9 +159,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 maxPlayerCount
|
||||
*/
|
||||
int GetMaxPlayers(lua_State* L, BattleGround* bg)
|
||||
int GetMaxPlayers(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMaxPlayers());
|
||||
Eluna::Push(E->L, bg->GetMaxPlayers());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -170,9 +170,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 minPlayerCount
|
||||
*/
|
||||
int GetMinPlayers(lua_State* L, BattleGround* bg)
|
||||
int GetMinPlayers(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMinPlayers());
|
||||
Eluna::Push(E->L, bg->GetMinPlayers());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -181,9 +181,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 maxTeamPlayerCount
|
||||
*/
|
||||
int GetMaxPlayersPerTeam(lua_State* L, BattleGround* bg)
|
||||
int GetMaxPlayersPerTeam(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMaxPlayersPerTeam());
|
||||
Eluna::Push(E->L, bg->GetMaxPlayersPerTeam());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -192,9 +192,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return uint32 minTeamPlayerCount
|
||||
*/
|
||||
int GetMinPlayersPerTeam(lua_State* L, BattleGround* bg)
|
||||
int GetMinPlayersPerTeam(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetMinPlayersPerTeam());
|
||||
Eluna::Push(E->L, bg->GetMinPlayersPerTeam());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -203,9 +203,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return Team team
|
||||
*/
|
||||
int GetWinner(lua_State* L, BattleGround* bg)
|
||||
int GetWinner(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetWinner());
|
||||
Eluna::Push(E->L, bg->GetWinner());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -214,9 +214,9 @@ namespace LuaBattleGround
|
||||
*
|
||||
* @return BattleGroundStatus status
|
||||
*/
|
||||
int GetStatus(lua_State* L, BattleGround* bg)
|
||||
int GetStatus(Eluna* E, BattleGround* bg)
|
||||
{
|
||||
Eluna::Push(L, bg->GetStatus());
|
||||
Eluna::Push(E->L, bg->GetStatus());
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,12 +14,12 @@ namespace LuaCorpse
|
||||
*
|
||||
* @return uint64 ownerGUID
|
||||
*/
|
||||
int GetOwnerGUID(lua_State* L, Corpse* corpse)
|
||||
int GetOwnerGUID(Eluna* E, Corpse* corpse)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, corpse->GetOwnerGuid());
|
||||
Eluna::Push(E->L, corpse->GetOwnerGuid());
|
||||
#else
|
||||
Eluna::Push(L, corpse->GetOwnerGUID());
|
||||
Eluna::Push(E->L, corpse->GetOwnerGUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -29,9 +29,9 @@ namespace LuaCorpse
|
||||
*
|
||||
* @return uint32 ghostTime
|
||||
*/
|
||||
int GetGhostTime(lua_State* L, Corpse* corpse)
|
||||
int GetGhostTime(Eluna* E, Corpse* corpse)
|
||||
{
|
||||
Eluna::Push(L, uint32(corpse->GetGhostTime()));
|
||||
Eluna::Push(E->L, uint32(corpse->GetGhostTime()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -49,9 +49,9 @@ namespace LuaCorpse
|
||||
*
|
||||
* @return [CorpseType] corpseType
|
||||
*/
|
||||
int GetType(lua_State* L, Corpse* corpse)
|
||||
int GetType(Eluna* E, Corpse* corpse)
|
||||
{
|
||||
Eluna::Push(L, corpse->GetType());
|
||||
Eluna::Push(E->L, corpse->GetType());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace LuaCorpse
|
||||
* Resets the [Corpse] ghost time.
|
||||
*
|
||||
*/
|
||||
int ResetGhostTime(lua_State* /*L*/, Corpse* corpse)
|
||||
int ResetGhostTime(Eluna* /*E*/, Corpse* corpse)
|
||||
{
|
||||
corpse->ResetGhostTime();
|
||||
return 0;
|
||||
@@ -69,7 +69,7 @@ namespace LuaCorpse
|
||||
* Saves the [Corpse] to the database.
|
||||
*
|
||||
*/
|
||||
int SaveToDB(lua_State* /*L*/, Corpse* corpse)
|
||||
int SaveToDB(Eluna* /*E*/, Corpse* corpse)
|
||||
{
|
||||
corpse->SaveToDB();
|
||||
return 0;
|
||||
@@ -79,7 +79,7 @@ namespace LuaCorpse
|
||||
* Deletes the [Corpse] from the world.
|
||||
*
|
||||
*/
|
||||
int DeleteBonesFromWorld(lua_State* /*L*/, Corpse* corpse)
|
||||
int DeleteBonesFromWorld(Eluna* /*E*/, Corpse* corpse)
|
||||
{
|
||||
corpse->DeleteBonesFromWorld();
|
||||
return 0;
|
||||
|
||||
@@ -22,9 +22,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool reputationDisabled
|
||||
*/
|
||||
int IsReputationGainDisabled(lua_State* L, Creature* creature)
|
||||
int IsReputationGainDisabled(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsReputationGainDisabled());
|
||||
Eluna::Push(E->L, creature->IsReputationGainDisabled());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool regeneratesHealth
|
||||
*/
|
||||
int CanRegenerateHealth(lua_State* L, Creature* creature)
|
||||
int CanRegenerateHealth(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->IsRegeneratingHealth());
|
||||
Eluna::Push(E->L, creature->IsRegeneratingHealth());
|
||||
#else
|
||||
Eluna::Push(L, creature->isRegeneratingHealth());
|
||||
Eluna::Push(E->L, creature->isRegeneratingHealth());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -51,14 +51,14 @@ namespace LuaCreature
|
||||
* @param uint32 questID : the ID of a [Quest]
|
||||
* @return bool completesQuest
|
||||
*/
|
||||
int CanCompleteQuest(lua_State* L, Creature* creature)
|
||||
int CanCompleteQuest(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 quest_id = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 quest_id = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->HasInvolvedQuest(quest_id));
|
||||
Eluna::Push(E->L, creature->HasInvolvedQuest(quest_id));
|
||||
#else
|
||||
Eluna::Push(L, creature->hasInvolvedQuest(quest_id));
|
||||
Eluna::Push(E->L, creature->hasInvolvedQuest(quest_id));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -70,14 +70,14 @@ namespace LuaCreature
|
||||
* @param bool mustBeDead = false : if `true`, only returns `true` if the [Creature] is also dead. Otherwise, it must be alive.
|
||||
* @return bool targetable
|
||||
*/
|
||||
int IsTargetableForAttack(lua_State* L, Creature* creature)
|
||||
int IsTargetableForAttack(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool mustBeDead = Eluna::CHECKVAL<bool>(L, 2, false);
|
||||
bool mustBeDead = Eluna::CHECKVAL<bool>(E->L, 2, false);
|
||||
|
||||
#ifdef MANGOS
|
||||
Eluna::Push(L, creature->IsTargetableForAttack(mustBeDead));
|
||||
Eluna::Push(E->L, creature->IsTargetableForAttack(mustBeDead));
|
||||
#else
|
||||
Eluna::Push(L, creature->isTargetableForAttack(mustBeDead));
|
||||
Eluna::Push(E->L, creature->isTargetableForAttack(mustBeDead));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -91,13 +91,13 @@ namespace LuaCreature
|
||||
* @param bool checkFaction = true : if `true`, the [Creature] must be the same faction as `friend` to assist
|
||||
* @return bool canAssist
|
||||
*/
|
||||
int CanAssistTo(lua_State* L, Creature* creature)
|
||||
int CanAssistTo(Eluna* E, Creature* creature)
|
||||
{
|
||||
Unit* u = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* enemy = Eluna::CHECKOBJ<Unit>(L, 3);
|
||||
bool checkfaction = Eluna::CHECKVAL<bool>(L, 4, true);
|
||||
Unit* u = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
Unit* enemy = Eluna::CHECKOBJ<Unit>(E->L, 3);
|
||||
bool checkfaction = Eluna::CHECKVAL<bool>(E->L, 4, true);
|
||||
|
||||
Eluna::Push(L, creature->CanAssistTo(u, enemy, checkfaction));
|
||||
Eluna::Push(E->L, creature->CanAssistTo(u, enemy, checkfaction));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -107,9 +107,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool searchedForAssistance
|
||||
*/
|
||||
int HasSearchedAssistance(lua_State* L, Creature* creature)
|
||||
int HasSearchedAssistance(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->HasSearchedAssistance());
|
||||
Eluna::Push(E->L, creature->HasSearchedAssistance());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -119,14 +119,14 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool tapped
|
||||
*/
|
||||
int IsTappedBy(lua_State* L, Creature* creature)
|
||||
int IsTappedBy(Eluna* E, Creature* creature)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
#ifdef MANGOS
|
||||
Eluna::Push(L, creature->IsTappedBy(player));
|
||||
Eluna::Push(E->L, creature->IsTappedBy(player));
|
||||
#else
|
||||
Eluna::Push(L, creature->isTappedBy(player));
|
||||
Eluna::Push(E->L, creature->isTappedBy(player));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -137,12 +137,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool hasLootRecipient
|
||||
*/
|
||||
int HasLootRecipient(lua_State* L, Creature* creature)
|
||||
int HasLootRecipient(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->HasLootRecipient());
|
||||
Eluna::Push(E->L, creature->HasLootRecipient());
|
||||
#else
|
||||
Eluna::Push(L, creature->hasLootRecipient());
|
||||
Eluna::Push(E->L, creature->hasLootRecipient());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -153,13 +153,13 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool canAggro
|
||||
*/
|
||||
int CanAggro(lua_State* L, Creature* creature)
|
||||
int CanAggro(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifdef TRINITY
|
||||
Eluna::Push(L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC));
|
||||
Eluna::Push(E->L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC));
|
||||
#else
|
||||
// Eluna::Push(L, creature->CanInitiateAttack());
|
||||
Eluna::Push(L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE));
|
||||
// Eluna::Push(E->L, creature->CanInitiateAttack());
|
||||
Eluna::Push(E->L, !creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -170,9 +170,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool canSwim
|
||||
*/
|
||||
int CanSwim(lua_State* L, Creature* creature)
|
||||
int CanSwim(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->CanSwim());
|
||||
Eluna::Push(E->L, creature->CanSwim());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -182,9 +182,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool canWalk
|
||||
*/
|
||||
int CanWalk(lua_State* L, Creature* creature)
|
||||
int CanWalk(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->CanWalk());
|
||||
Eluna::Push(E->L, creature->CanWalk());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -194,9 +194,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool inEvadeMode
|
||||
*/
|
||||
int IsInEvadeMode(lua_State* L, Creature* creature)
|
||||
int IsInEvadeMode(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsInEvadeMode());
|
||||
Eluna::Push(E->L, creature->IsInEvadeMode());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -206,12 +206,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool isElite
|
||||
*/
|
||||
int IsElite(lua_State* L, Creature* creature)
|
||||
int IsElite(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->IsElite());
|
||||
Eluna::Push(E->L, creature->IsElite());
|
||||
#else
|
||||
Eluna::Push(L, creature->isElite());
|
||||
Eluna::Push(E->L, creature->isElite());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -222,9 +222,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool isGuard
|
||||
*/
|
||||
int IsGuard(lua_State* L, Creature* creature)
|
||||
int IsGuard(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsGuard());
|
||||
Eluna::Push(E->L, creature->IsGuard());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -234,9 +234,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool isCivilian
|
||||
*/
|
||||
int IsCivilian(lua_State* L, Creature* creature)
|
||||
int IsCivilian(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsCivilian());
|
||||
Eluna::Push(E->L, creature->IsCivilian());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -246,9 +246,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool isLeader
|
||||
*/
|
||||
int IsRacialLeader(lua_State* L, Creature* creature)
|
||||
int IsRacialLeader(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsRacialLeader());
|
||||
Eluna::Push(E->L, creature->IsRacialLeader());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -258,12 +258,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool isWorldBoss
|
||||
*/
|
||||
int IsWorldBoss(lua_State* L, Creature* creature)
|
||||
int IsWorldBoss(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->IsWorldBoss());
|
||||
Eluna::Push(E->L, creature->IsWorldBoss());
|
||||
#else
|
||||
Eluna::Push(L, creature->isWorldBoss());
|
||||
Eluna::Push(E->L, creature->isWorldBoss());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -275,11 +275,11 @@ namespace LuaCreature
|
||||
* @param uint32 spellId : the ID of a [Spell]
|
||||
* @return bool hasCooldown
|
||||
*/
|
||||
int HasCategoryCooldown(lua_State* L, Creature* creature)
|
||||
int HasCategoryCooldown(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 spell = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 spell = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->HasCategoryCooldown(spell));
|
||||
Eluna::Push(E->L, creature->HasCategoryCooldown(spell));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -290,11 +290,11 @@ namespace LuaCreature
|
||||
* @param uint32 spellId : the ID of a [Spell]
|
||||
* @return bool hasSpell
|
||||
*/
|
||||
int HasSpell(lua_State* L, Creature* creature)
|
||||
int HasSpell(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 id = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 id = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->HasSpell(id));
|
||||
Eluna::Push(E->L, creature->HasSpell(id));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -305,14 +305,14 @@ namespace LuaCreature
|
||||
* @param uint32 questId : the ID of a [Quest]
|
||||
* @return bool hasQuest
|
||||
*/
|
||||
int HasQuest(lua_State* L, Creature* creature)
|
||||
int HasQuest(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 questId = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 questId = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->HasQuest(questId));
|
||||
Eluna::Push(E->L, creature->HasQuest(questId));
|
||||
#else
|
||||
Eluna::Push(L, creature->hasQuest(questId));
|
||||
Eluna::Push(E->L, creature->hasQuest(questId));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -324,11 +324,11 @@ namespace LuaCreature
|
||||
* @param uint32 spellId : the ID of a [Spell]
|
||||
* @return bool hasCooldown
|
||||
*/
|
||||
int HasSpellCooldown(lua_State* L, Creature* creature)
|
||||
int HasSpellCooldown(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 spellId = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 spellId = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->HasSpellCooldown(spellId));
|
||||
Eluna::Push(E->L, creature->HasSpellCooldown(spellId));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -338,9 +338,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool canFly
|
||||
*/
|
||||
int CanFly(lua_State* L, Creature* creature)
|
||||
int CanFly(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->CanFly());
|
||||
Eluna::Push(E->L, creature->CanFly());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -351,32 +351,32 @@ namespace LuaCreature
|
||||
*
|
||||
* @return bool canFly
|
||||
*/
|
||||
int IsTrigger(lua_State* L, Creature* creature)
|
||||
int IsTrigger(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsTrigger());
|
||||
Eluna::Push(E->L, creature->IsTrigger());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsDamageEnoughForLootingAndReward(lua_State* L, Creature* creature)
|
||||
int IsDamageEnoughForLootingAndReward(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->IsDamageEnoughForLootingAndReward());
|
||||
Eluna::Push(E->L, creature->IsDamageEnoughForLootingAndReward());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int CanStartAttack(lua_State* L, Creature* creature) // TODO: Implement core side
|
||||
int CanStartAttack(Eluna* E, Creature* creature) // TODO: Implement core side
|
||||
{
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
bool force = Eluna::CHECKVAL<bool>(L, 3, true);
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
bool force = Eluna::CHECKVAL<bool>(E->L, 3, true);
|
||||
|
||||
Eluna::Push(L, creature->CanStartAttack(target, force));
|
||||
Eluna::Push(E->L, creature->CanStartAttack(target, force));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int HasLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features
|
||||
int HasLootMode(Eluna* E, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->HasLootMode(lootMode));
|
||||
Eluna::Push(E->L, creature->HasLootMode(lootMode));
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -391,9 +391,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 respawnDelay : the respawn delay, in seconds
|
||||
*/
|
||||
int GetRespawnDelay(lua_State* L, Creature* creature)
|
||||
int GetRespawnDelay(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetRespawnDelay());
|
||||
Eluna::Push(E->L, creature->GetRespawnDelay());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -403,9 +403,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return float wanderRadius
|
||||
*/
|
||||
int GetWanderRadius(lua_State* L, Creature* creature)
|
||||
int GetWanderRadius(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetRespawnRadius());
|
||||
Eluna::Push(E->L, creature->GetRespawnRadius());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -415,9 +415,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 pathId
|
||||
*/
|
||||
int GetWaypointPath(lua_State* L, Creature* creature)
|
||||
int GetWaypointPath(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetWaypointPath());
|
||||
Eluna::Push(E->L, creature->GetWaypointPath());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -427,12 +427,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 wpId
|
||||
*/
|
||||
int GetCurrentWaypointId(lua_State* L, Creature* creature)
|
||||
int GetCurrentWaypointId(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifdef TRINITY
|
||||
Eluna::Push(L, creature->GetCurrentWaypointID());
|
||||
Eluna::Push(E->L, creature->GetCurrentWaypointID());
|
||||
#else
|
||||
Eluna::Push(L, creature->GetMotionMaster()->getLastReachedWaypoint());
|
||||
Eluna::Push(E->L, creature->GetMotionMaster()->getLastReachedWaypoint());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -442,9 +442,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return MovementGeneratorType defaultMovementType
|
||||
*/
|
||||
int GetDefaultMovementType(lua_State* L, Creature* creature)
|
||||
int GetDefaultMovementType(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetDefaultMovementType());
|
||||
Eluna::Push(E->L, creature->GetDefaultMovementType());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -454,16 +454,16 @@ namespace LuaCreature
|
||||
* @param Unit target
|
||||
* @return float aggroRange
|
||||
*/
|
||||
int GetAggroRange(lua_State* L, Creature* creature)
|
||||
int GetAggroRange(Eluna* E, Creature* creature)
|
||||
{
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
float AttackDist = creature->GetAttackDistance(target);
|
||||
float ThreatRadius = sWorld.getConfig(CONFIG_FLOAT_THREAT_RADIUS);
|
||||
Eluna::Push(L, ThreatRadius > AttackDist ? ThreatRadius : AttackDist);
|
||||
Eluna::Push(E->L, ThreatRadius > AttackDist ? ThreatRadius : AttackDist);
|
||||
#else
|
||||
Eluna::Push(L, creature->GetAggroRange(target));
|
||||
Eluna::Push(E->L, creature->GetAggroRange(target));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -477,11 +477,11 @@ namespace LuaCreature
|
||||
* @param Unit target
|
||||
* @return float attackDistance
|
||||
*/
|
||||
int GetAttackDistance(lua_State* L, Creature* creature)
|
||||
int GetAttackDistance(Eluna* E, Creature* creature)
|
||||
{
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->GetAttackDistance(target));
|
||||
Eluna::Push(E->L, creature->GetAttackDistance(target));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -490,12 +490,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return Group lootRecipientGroup : the group or `nil`
|
||||
*/
|
||||
int GetLootRecipientGroup(lua_State* L, Creature* creature)
|
||||
int GetLootRecipientGroup(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->GetGroupLootRecipient());
|
||||
Eluna::Push(E->L, creature->GetGroupLootRecipient());
|
||||
#else
|
||||
Eluna::Push(L, creature->GetLootRecipientGroup());
|
||||
Eluna::Push(E->L, creature->GetLootRecipientGroup());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -505,9 +505,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return Player lootRecipient : the player or `nil`
|
||||
*/
|
||||
int GetLootRecipient(lua_State* L, Creature* creature)
|
||||
int GetLootRecipient(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetLootRecipient());
|
||||
Eluna::Push(E->L, creature->GetLootRecipient());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -520,9 +520,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return string scriptName
|
||||
*/
|
||||
int GetScriptName(lua_State* L, Creature* creature)
|
||||
int GetScriptName(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetScriptName());
|
||||
Eluna::Push(E->L, creature->GetScriptName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -535,9 +535,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return string AIName
|
||||
*/
|
||||
int GetAIName(lua_State* L, Creature* creature)
|
||||
int GetAIName(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetAIName());
|
||||
Eluna::Push(E->L, creature->GetAIName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -549,9 +549,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 scriptID
|
||||
*/
|
||||
int GetScriptId(lua_State* L, Creature* creature)
|
||||
int GetScriptId(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetScriptId());
|
||||
Eluna::Push(E->L, creature->GetScriptId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -561,11 +561,11 @@ namespace LuaCreature
|
||||
* @param uint32 spellID
|
||||
* @return uint32 cooldown : the cooldown, in milliseconds
|
||||
*/
|
||||
int GetCreatureSpellCooldownDelay(lua_State* L, Creature* creature)
|
||||
int GetCreatureSpellCooldownDelay(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 spell = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 spell = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, creature->GetCreatureSpellCooldownDelay(spell));
|
||||
Eluna::Push(E->L, creature->GetCreatureSpellCooldownDelay(spell));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -574,9 +574,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 corpseDelay : the delay, in seconds
|
||||
*/
|
||||
int GetCorpseDelay(lua_State* L, Creature* creature)
|
||||
int GetCorpseDelay(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetCorpseDelay());
|
||||
Eluna::Push(E->L, creature->GetCorpseDelay());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -589,7 +589,7 @@ namespace LuaCreature
|
||||
* @return float z
|
||||
* @return float o
|
||||
*/
|
||||
int GetHomePosition(lua_State* L, Creature* creature)
|
||||
int GetHomePosition(Eluna* E, Creature* creature)
|
||||
{
|
||||
float x, y, z, o;
|
||||
#ifndef TRINITY
|
||||
@@ -598,10 +598,10 @@ namespace LuaCreature
|
||||
creature->GetHomePosition(x, y, z, o);
|
||||
#endif
|
||||
|
||||
Eluna::Push(L, x);
|
||||
Eluna::Push(L, y);
|
||||
Eluna::Push(L, z);
|
||||
Eluna::Push(L, o);
|
||||
Eluna::Push(E->L, x);
|
||||
Eluna::Push(E->L, y);
|
||||
Eluna::Push(E->L, z);
|
||||
Eluna::Push(E->L, o);
|
||||
return 4;
|
||||
}
|
||||
|
||||
@@ -614,12 +614,12 @@ namespace LuaCreature
|
||||
* @param float z
|
||||
* @param float o
|
||||
*/
|
||||
int SetHomePosition(lua_State* L, Creature* creature)
|
||||
int SetHomePosition(Eluna* E, Creature* creature)
|
||||
{
|
||||
float x = Eluna::CHECKVAL<float>(L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(L, 4);
|
||||
float o = Eluna::CHECKVAL<float>(L, 5);
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
float o = Eluna::CHECKVAL<float>(E->L, 5);
|
||||
|
||||
#ifndef TRINITY
|
||||
creature->SetRespawnCoord(x, y, z, o);
|
||||
@@ -658,13 +658,13 @@ namespace LuaCreature
|
||||
* @param int32 aura = 0 : if positive, the target must have this [Aura]. If negative, the the target must not have this Aura
|
||||
* @return Unit target : the target, or `nil`
|
||||
*/
|
||||
int GetAITarget(lua_State* L, Creature* creature)
|
||||
int GetAITarget(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 targetType = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
bool playerOnly = Eluna::CHECKVAL<bool>(L, 3, false);
|
||||
uint32 position = Eluna::CHECKVAL<uint32>(L, 4, 0);
|
||||
float dist = Eluna::CHECKVAL<float>(L, 5, 0.0f);
|
||||
int32 aura = Eluna::CHECKVAL<int32>(L, 6, 0);
|
||||
uint32 targetType = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
bool playerOnly = Eluna::CHECKVAL<bool>(E->L, 3, false);
|
||||
uint32 position = Eluna::CHECKVAL<uint32>(E->L, 4, 0);
|
||||
float dist = Eluna::CHECKVAL<float>(E->L, 5, 0.0f);
|
||||
int32 aura = Eluna::CHECKVAL<int32>(E->L, 6, 0);
|
||||
|
||||
#ifdef MANGOS
|
||||
ThreatList const& threatlist = creature->GetThreatManager().getThreatList();
|
||||
@@ -711,7 +711,7 @@ namespace LuaCreature
|
||||
std::list<Unit*>::const_iterator itr = targetList.begin();
|
||||
if (position)
|
||||
std::advance(itr, position);
|
||||
Eluna::Push(L, *itr);
|
||||
Eluna::Push(E->L, *itr);
|
||||
}
|
||||
break;
|
||||
case SELECT_TARGET_FARTHEST:
|
||||
@@ -720,7 +720,7 @@ namespace LuaCreature
|
||||
std::list<Unit*>::reverse_iterator ritr = targetList.rbegin();
|
||||
if (position)
|
||||
std::advance(ritr, position);
|
||||
Eluna::Push(L, *ritr);
|
||||
Eluna::Push(E->L, *ritr);
|
||||
}
|
||||
break;
|
||||
case SELECT_TARGET_RANDOM:
|
||||
@@ -730,11 +730,11 @@ namespace LuaCreature
|
||||
std::advance(itr, urand(0, position));
|
||||
else
|
||||
std::advance(itr, urand(0, targetList.size() - 1));
|
||||
Eluna::Push(L, *itr);
|
||||
Eluna::Push(E->L, *itr);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
luaL_argerror(L, 2, "SelectAggroTarget expected");
|
||||
luaL_argerror(E->L, 2, "SelectAggroTarget expected");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -746,10 +746,10 @@ namespace LuaCreature
|
||||
*
|
||||
* @return table targets
|
||||
*/
|
||||
int GetAITargets(lua_State* L, Creature* creature)
|
||||
int GetAITargets(Eluna* E, Creature* creature)
|
||||
{
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
#ifdef MANGOS
|
||||
@@ -765,12 +765,12 @@ namespace LuaCreature
|
||||
if (!target)
|
||||
continue;
|
||||
++i;
|
||||
Eluna::Push(L, i);
|
||||
Eluna::Push(L, target);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, i);
|
||||
Eluna::Push(E->L, target);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -779,12 +779,12 @@ namespace LuaCreature
|
||||
*
|
||||
* @return int targetsCount
|
||||
*/
|
||||
int GetAITargetsCount(lua_State* L, Creature* creature)
|
||||
int GetAITargetsCount(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifdef MANGOS
|
||||
Eluna::Push(L, creature->GetThreatManager().getThreatList().size());
|
||||
Eluna::Push(E->L, creature->GetThreatManager().getThreatList().size());
|
||||
#else
|
||||
Eluna::Push(L, creature->getThreatManager().getThreatList().size());
|
||||
Eluna::Push(E->L, creature->getThreatManager().getThreatList().size());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -797,9 +797,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @return NPCFlags npcFlags
|
||||
*/
|
||||
int GetNPCFlags(lua_State* L, Creature* creature)
|
||||
int GetNPCFlags(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetUInt32Value(UNIT_NPC_FLAGS));
|
||||
Eluna::Push(E->L, creature->GetUInt32Value(UNIT_NPC_FLAGS));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -809,17 +809,17 @@ namespace LuaCreature
|
||||
*
|
||||
* @return uint32 shieldBlockValue
|
||||
*/
|
||||
int GetShieldBlockValue(lua_State* L, Creature* creature)
|
||||
int GetShieldBlockValue(Eluna* E, Creature* creature)
|
||||
{
|
||||
Eluna::Push(L, creature->GetShieldBlockValue());
|
||||
Eluna::Push(E->L, creature->GetShieldBlockValue());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TRINITY
|
||||
int GetLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features
|
||||
int GetLootMode(Eluna* E, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
Eluna::Push(L, creature->GetLootMode());
|
||||
Eluna::Push(E->L, creature->GetLootMode());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -831,9 +831,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param NPCFlags flags
|
||||
*/
|
||||
int SetNPCFlags(lua_State* L, Creature* creature)
|
||||
int SetNPCFlags(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 flags = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 flags = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
creature->SetUInt32Value(UNIT_NPC_FLAGS, flags);
|
||||
return 0;
|
||||
@@ -845,9 +845,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool enable = true
|
||||
*/
|
||||
int SetDisableGravity(lua_State* L, Creature* creature)
|
||||
int SetDisableGravity(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool enable = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool enable = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
#ifdef TRINITY
|
||||
creature->SetDisableGravity(!enable);
|
||||
@@ -858,9 +858,9 @@ namespace LuaCreature
|
||||
}
|
||||
|
||||
#ifdef TRINITY
|
||||
int SetLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features
|
||||
int SetLootMode(Eluna* E, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
|
||||
creature->SetLootMode(lootMode);
|
||||
return 0;
|
||||
@@ -872,9 +872,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param DeathState deathState
|
||||
*/
|
||||
int SetDeathState(lua_State* L, Creature* creature)
|
||||
int SetDeathState(Eluna* E, Creature* creature)
|
||||
{
|
||||
int32 state = Eluna::CHECKVAL<int32>(L, 2);
|
||||
int32 state = Eluna::CHECKVAL<int32>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
creature->SetDeathState((DeathState)state);
|
||||
@@ -889,9 +889,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool enable = true : `true` to enable walking, `false` for running
|
||||
*/
|
||||
int SetWalk(lua_State* L, Creature* creature) // TODO: Move same to Player ?
|
||||
int SetWalk(Eluna* E, Creature* creature) // TODO: Move same to Player ?
|
||||
{
|
||||
bool enable = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool enable = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
creature->SetWalk(enable);
|
||||
return 0;
|
||||
@@ -904,11 +904,11 @@ namespace LuaCreature
|
||||
* @param uint32 off_hand : off hand [Item]'s entry
|
||||
* @param uint32 ranged : ranged [Item]'s entry
|
||||
*/
|
||||
int SetEquipmentSlots(lua_State* L, Creature* creature)
|
||||
int SetEquipmentSlots(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 main_hand = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 off_hand = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint32 ranged = Eluna::CHECKVAL<uint32>(L, 4);
|
||||
uint32 main_hand = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
uint32 off_hand = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
uint32 ranged = Eluna::CHECKVAL<uint32>(E->L, 4);
|
||||
|
||||
#ifdef TRINITY
|
||||
creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, main_hand);
|
||||
@@ -927,9 +927,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool allow = true : `true` to allow aggro, `false` to disable aggro
|
||||
*/
|
||||
int SetAggroEnabled(lua_State* L, Creature* creature)
|
||||
int SetAggroEnabled(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool allow = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool allow = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
#ifdef TRINITY
|
||||
if (allow)
|
||||
@@ -951,9 +951,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool disable = true : `true` to disable reputation, `false` to enable
|
||||
*/
|
||||
int SetDisableReputationGain(lua_State* L, Creature* creature)
|
||||
int SetDisableReputationGain(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool disable = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool disable = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
creature->SetDisableReputationGain(disable);
|
||||
return 0;
|
||||
@@ -965,7 +965,7 @@ namespace LuaCreature
|
||||
* This is used by raid bosses to prevent Players from using out-of-combat
|
||||
* actions once the encounter has begun.
|
||||
*/
|
||||
int SetInCombatWithZone(lua_State* /*L*/, Creature* creature)
|
||||
int SetInCombatWithZone(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->SetInCombatWithZone();
|
||||
return 0;
|
||||
@@ -976,9 +976,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param float distance
|
||||
*/
|
||||
int SetWanderRadius(lua_State* L, Creature* creature)
|
||||
int SetWanderRadius(Eluna* E, Creature* creature)
|
||||
{
|
||||
float dist = Eluna::CHECKVAL<float>(L, 2);
|
||||
float dist = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
|
||||
creature->SetRespawnRadius(dist);
|
||||
return 0;
|
||||
@@ -989,9 +989,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param uint32 delay : the delay, in seconds
|
||||
*/
|
||||
int SetRespawnDelay(lua_State* L, Creature* creature)
|
||||
int SetRespawnDelay(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
creature->SetRespawnDelay(delay);
|
||||
return 0;
|
||||
@@ -1002,9 +1002,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param MovementGeneratorType type
|
||||
*/
|
||||
int SetDefaultMovementType(lua_State* L, Creature* creature)
|
||||
int SetDefaultMovementType(Eluna* E, Creature* creature)
|
||||
{
|
||||
int32 type = Eluna::CHECKVAL<int32>(L, 2);
|
||||
int32 type = Eluna::CHECKVAL<int32>(E->L, 2);
|
||||
|
||||
creature->SetDefaultMovementType((MovementGeneratorType)type);
|
||||
return 0;
|
||||
@@ -1015,9 +1015,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool enable = true : `true` to disable searching, `false` to allow
|
||||
*/
|
||||
int SetNoSearchAssistance(lua_State* L, Creature* creature)
|
||||
int SetNoSearchAssistance(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool val = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool val = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
creature->SetNoSearchAssistance(val);
|
||||
return 0;
|
||||
@@ -1028,9 +1028,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool enable = true : `true` to disable calling for help, `false` to enable
|
||||
*/
|
||||
int SetNoCallAssistance(lua_State* L, Creature* creature)
|
||||
int SetNoCallAssistance(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool val = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool val = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
creature->SetNoCallAssistance(val);
|
||||
return 0;
|
||||
@@ -1041,9 +1041,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param bool enable = true : `true` to enable hovering, `false` to disable
|
||||
*/
|
||||
int SetHover(lua_State* L, Creature* creature)
|
||||
int SetHover(Eluna* E, Creature* creature)
|
||||
{
|
||||
bool enable = Eluna::CHECKVAL<bool>(L, 2, true);
|
||||
bool enable = Eluna::CHECKVAL<bool>(E->L, 2, true);
|
||||
|
||||
#ifdef TRINITY
|
||||
creature->SetHover(enable);
|
||||
@@ -1069,9 +1069,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param uint32 delay = 0 : dely to despawn in milliseconds
|
||||
*/
|
||||
int DespawnOrUnsummon(lua_State* L, Creature* creature)
|
||||
int DespawnOrUnsummon(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 msTimeToDespawn = Eluna::CHECKVAL<uint32>(L, 2, 0);
|
||||
uint32 msTimeToDespawn = Eluna::CHECKVAL<uint32>(E->L, 2, 0);
|
||||
|
||||
#ifndef TRINITY
|
||||
creature->ForcedDespawn(msTimeToDespawn);
|
||||
@@ -1084,7 +1084,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Respawn this [Creature].
|
||||
*/
|
||||
int Respawn(lua_State* /*L*/, Creature* creature)
|
||||
int Respawn(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->Respawn();
|
||||
return 0;
|
||||
@@ -1093,7 +1093,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Remove this [Creature]'s corpse.
|
||||
*/
|
||||
int RemoveCorpse(lua_State* /*L*/, Creature* creature)
|
||||
int RemoveCorpse(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->RemoveCorpse();
|
||||
return 0;
|
||||
@@ -1102,7 +1102,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Make the [Creature] start following it's waypoint path.
|
||||
*/
|
||||
int MoveWaypoint(lua_State* /*L*/, Creature* creature)
|
||||
int MoveWaypoint(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
creature->GetMotionMaster()->MoveWaypoint();
|
||||
@@ -1115,7 +1115,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Make the [Creature] call for assistance in combat from other nearby [Creature]s.
|
||||
*/
|
||||
int CallAssistance(lua_State* /*L*/, Creature* creature)
|
||||
int CallAssistance(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->CallAssistance();
|
||||
return 0;
|
||||
@@ -1126,9 +1126,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param float radius
|
||||
*/
|
||||
int CallForHelp(lua_State* L, Creature* creature)
|
||||
int CallForHelp(Eluna* E, Creature* creature)
|
||||
{
|
||||
float radius = Eluna::CHECKVAL<float>(L, 2);
|
||||
float radius = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
|
||||
creature->CallForHelp(radius);
|
||||
return 0;
|
||||
@@ -1137,7 +1137,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Make the [Creature] flee combat to get assistance from a nearby friendly [Creature].
|
||||
*/
|
||||
int FleeToGetAssistance(lua_State* /*L*/, Creature* creature)
|
||||
int FleeToGetAssistance(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->DoFleeToGetAssistance();
|
||||
return 0;
|
||||
@@ -1148,9 +1148,9 @@ namespace LuaCreature
|
||||
*
|
||||
* @param Unit target
|
||||
*/
|
||||
int AttackStart(lua_State* L, Creature* creature)
|
||||
int AttackStart(Eluna* E, Creature* creature)
|
||||
{
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* target = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
|
||||
creature->AI()->AttackStart(target);
|
||||
return 0;
|
||||
@@ -1159,7 +1159,7 @@ namespace LuaCreature
|
||||
/**
|
||||
* Save the [Creature] in the database.
|
||||
*/
|
||||
int SaveToDB(lua_State* /*L*/, Creature* creature)
|
||||
int SaveToDB(Eluna* /*E*/, Creature* creature)
|
||||
{
|
||||
creature->SaveToDB();
|
||||
return 0;
|
||||
@@ -1170,12 +1170,12 @@ namespace LuaCreature
|
||||
*
|
||||
* This should be called every update cycle for the Creature's AI.
|
||||
*/
|
||||
int SelectVictim(lua_State* L, Creature* creature)
|
||||
int SelectVictim(Eluna* E, Creature* creature)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, creature->SelectHostileTarget());
|
||||
Eluna::Push(E->L, creature->SelectHostileTarget());
|
||||
#else
|
||||
Eluna::Push(L, creature->SelectVictim());
|
||||
Eluna::Push(E->L, creature->SelectVictim());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -1186,10 +1186,10 @@ namespace LuaCreature
|
||||
* @param uint32 entry : the Creature ID to transform into
|
||||
* @param uint32 dataGUIDLow = 0 : use this Creature's model and equipment instead of the defaults
|
||||
*/
|
||||
int UpdateEntry(lua_State* L, Creature* creature)
|
||||
int UpdateEntry(Eluna* E, Creature* creature)
|
||||
{
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 dataGuidLow = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
uint32 dataGuidLow = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
#ifndef TRINITY
|
||||
creature->UpdateEntry(entry, ALLIANCE, dataGuidLow ? eObjectMgr->GetCreatureData(dataGuidLow) : NULL);
|
||||
@@ -1200,23 +1200,23 @@ namespace LuaCreature
|
||||
}
|
||||
|
||||
#ifdef TRINITY
|
||||
int ResetLootMode(lua_State* /*L*/, Creature* creature) // TODO: Implement LootMode features
|
||||
int ResetLootMode(Eluna* /*E*/, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
creature->ResetLootMode();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int RemoveLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features
|
||||
int RemoveLootMode(Eluna* E, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
|
||||
creature->RemoveLootMode(lootMode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AddLootMode(lua_State* L, Creature* creature) // TODO: Implement LootMode features
|
||||
int AddLootMode(Eluna* E, Creature* creature) // TODO: Implement LootMode features
|
||||
{
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 lootMode = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
|
||||
creature->AddLootMode(lootMode);
|
||||
return 0;
|
||||
|
||||
@@ -21,40 +21,42 @@ to_Abort(false), events(_events), funcRef(_funcRef), delay(_delay), calls(_calls
|
||||
|
||||
LuaEvent::~LuaEvent()
|
||||
{
|
||||
luaL_unref(sEluna->L, LUA_REGISTRYINDEX, funcRef); // Free lua function ref
|
||||
luaL_unref((*events->E)->L, LUA_REGISTRYINDEX, funcRef); // Free lua function ref
|
||||
}
|
||||
|
||||
void LuaEvent::Execute()
|
||||
{
|
||||
// In multithread get map from object and the map's lua state
|
||||
lua_rawgeti(sEluna->L, LUA_REGISTRYINDEX, funcRef);
|
||||
Eluna::Push(sEluna->L, funcRef);
|
||||
Eluna::Push(sEluna->L, delay);
|
||||
Eluna::Push(sEluna->L, calls);
|
||||
lua_rawgeti((*events->E)->L, LUA_REGISTRYINDEX, funcRef);
|
||||
Eluna::Push((*events->E)->L, funcRef);
|
||||
Eluna::Push((*events->E)->L, delay);
|
||||
Eluna::Push((*events->E)->L, calls);
|
||||
if (calls) // Must be before calling
|
||||
--calls;
|
||||
Eluna::Push(sEluna->L, events->obj);
|
||||
Eluna::ExecuteCall(sEluna->L, 4, 0);
|
||||
Eluna::Push((*events->E)->L, events->obj);
|
||||
(*events->E)->ExecuteCall(4, 0);
|
||||
|
||||
ASSERT(!(*events->E)->event_level);
|
||||
(*events->E)->InvalidateObjects();
|
||||
}
|
||||
|
||||
ElunaEventProcessor::ElunaEventProcessor(WorldObject* _obj) : m_time(0), obj(_obj)
|
||||
ElunaEventProcessor::ElunaEventProcessor(Eluna** _E, WorldObject* _obj) : m_time(0), obj(_obj), E(_E)
|
||||
{
|
||||
// In multithread get the object's map's lua state
|
||||
Eluna* E = obj ? sEluna : sEluna;
|
||||
|
||||
EventMgr::WriteGuard lock(E->eventMgr->GetLock());
|
||||
E->eventMgr->processors.insert(this);
|
||||
if (obj)
|
||||
{
|
||||
EventMgr::WriteGuard lock((*E)->eventMgr->GetLock());
|
||||
(*E)->eventMgr->processors.insert(this);
|
||||
}
|
||||
}
|
||||
|
||||
ElunaEventProcessor::~ElunaEventProcessor()
|
||||
{
|
||||
RemoveEvents();
|
||||
|
||||
// In multithread get the object's map's lua state
|
||||
if (Eluna* E = obj ? sEluna : sEluna)
|
||||
if (obj)
|
||||
{
|
||||
EventMgr::WriteGuard lock(E->eventMgr->GetLock());
|
||||
E->eventMgr->processors.erase(this);
|
||||
EventMgr::WriteGuard lock((*E)->eventMgr->GetLock());
|
||||
(*E)->eventMgr->processors.erase(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +119,7 @@ void ElunaEventProcessor::AddEvent(int funcRef, uint32 delay, uint32 repeats)
|
||||
AddEvent(new LuaEvent(this, funcRef, delay, repeats));
|
||||
}
|
||||
|
||||
EventMgr::EventMgr() : globalProcessor(NULL)
|
||||
EventMgr::EventMgr(Eluna** _E) : globalProcessor(new ElunaEventProcessor(_E, NULL)), E(_E)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -125,6 +127,7 @@ EventMgr::~EventMgr()
|
||||
{
|
||||
RemoveEvents();
|
||||
delete globalProcessor;
|
||||
globalProcessor = NULL;
|
||||
}
|
||||
|
||||
void EventMgr::RemoveEvents()
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "Platform/Define.h"
|
||||
#endif
|
||||
|
||||
class Eluna;
|
||||
class EventMgr;
|
||||
class ElunaEventProcessor;
|
||||
class WorldObject;
|
||||
@@ -49,7 +50,7 @@ public:
|
||||
typedef std::multimap<uint64, LuaEvent*> EventList;
|
||||
typedef UNORDERED_MAP<int, LuaEvent*> EventMap;
|
||||
|
||||
ElunaEventProcessor(WorldObject* _obj);
|
||||
ElunaEventProcessor(Eluna** _E, WorldObject* _obj);
|
||||
~ElunaEventProcessor();
|
||||
|
||||
void Update(uint32 diff);
|
||||
@@ -65,6 +66,7 @@ private:
|
||||
EventList eventList;
|
||||
uint64 m_time;
|
||||
WorldObject* obj;
|
||||
Eluna** E;
|
||||
};
|
||||
|
||||
class EventMgr : public ElunaUtil::RWLockable
|
||||
@@ -73,8 +75,9 @@ public:
|
||||
typedef UNORDERED_SET<ElunaEventProcessor*> ProcessorSet;
|
||||
ProcessorSet processors;
|
||||
ElunaEventProcessor* globalProcessor;
|
||||
Eluna** E;
|
||||
|
||||
EventMgr();
|
||||
EventMgr(Eluna** _E);
|
||||
~EventMgr();
|
||||
|
||||
// Remove all timed events
|
||||
|
||||
@@ -14,152 +14,152 @@
|
||||
#endif
|
||||
namespace LuaQuery
|
||||
{
|
||||
void CheckFields(lua_State* L, ElunaQuery* result)
|
||||
void CheckFields(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
if (Eluna::CHECKVAL<uint32>(L, 2) >= RESULT->GetFieldCount())
|
||||
luaL_argerror(L, 2, "invalid field index");
|
||||
if (Eluna::CHECKVAL<uint32>(E->L, 2) >= RESULT->GetFieldCount())
|
||||
luaL_argerror(E->L, 2, "invalid field index");
|
||||
}
|
||||
|
||||
/* BOOLEAN */
|
||||
int IsNull(lua_State* L, ElunaQuery* result)
|
||||
int IsNull(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, RESULT->Fetch()[col].IsNULL());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].IsNULL());
|
||||
#else
|
||||
Eluna::Push(L, RESULT->Fetch()[col].IsNull());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].IsNull());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* GETTERS */
|
||||
int GetColumnCount(lua_State* L, ElunaQuery* result)
|
||||
int GetColumnCount(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
Eluna::Push(L, RESULT->GetFieldCount());
|
||||
Eluna::Push(E->L, RESULT->GetFieldCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetRowCount(lua_State* L, ElunaQuery* result)
|
||||
int GetRowCount(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
if (RESULT->GetRowCount() > (uint32)-1)
|
||||
Eluna::Push(L, (uint32)-1);
|
||||
Eluna::Push(E->L, (uint32)-1);
|
||||
else
|
||||
Eluna::Push(L, RESULT->GetRowCount());
|
||||
Eluna::Push(E->L, RESULT->GetRowCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetBool(lua_State* L, ElunaQuery* result)
|
||||
int GetBool(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetBool());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetBool());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt8(lua_State* L, ElunaQuery* result)
|
||||
int GetUInt8(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetUInt8());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetUInt8());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt16(lua_State* L, ElunaQuery* result)
|
||||
int GetUInt16(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetUInt16());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetUInt16());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt32(lua_State* L, ElunaQuery* result)
|
||||
int GetUInt32(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetUInt32());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetUInt32());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt64(lua_State* L, ElunaQuery* result)
|
||||
int GetUInt64(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetUInt64());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetUInt64());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInt8(lua_State* L, ElunaQuery* result)
|
||||
int GetInt8(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetInt8());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetInt8());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInt16(lua_State* L, ElunaQuery* result)
|
||||
int GetInt16(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetInt16());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetInt16());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInt32(lua_State* L, ElunaQuery* result)
|
||||
int GetInt32(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetInt32());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetInt32());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInt64(lua_State* L, ElunaQuery* result)
|
||||
int GetInt64(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetInt64());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetInt64());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetFloat(lua_State* L, ElunaQuery* result)
|
||||
int GetFloat(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetFloat());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetFloat());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetDouble(lua_State* L, ElunaQuery* result)
|
||||
int GetDouble(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetDouble());
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetDouble());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetString(lua_State* L, ElunaQuery* result)
|
||||
int GetString(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetCppString());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetCppString());
|
||||
#else
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetString());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetString());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetCString(lua_State* L, ElunaQuery* result)
|
||||
int GetCString(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
CheckFields(L, result);
|
||||
uint32 col = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
CheckFields(E, result);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetString());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetString());
|
||||
#else
|
||||
Eluna::Push(L, RESULT->Fetch()[col].GetCString());
|
||||
Eluna::Push(E->L, RESULT->Fetch()[col].GetCString());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -172,9 +172,9 @@ namespace LuaQuery
|
||||
*
|
||||
* @return bool hadNextRow
|
||||
*/
|
||||
int NextRow(lua_State* L, ElunaQuery* result)
|
||||
int NextRow(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
Eluna::Push(L, RESULT->NextRow());
|
||||
Eluna::Push(E->L, RESULT->NextRow());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -186,10 +186,10 @@ namespace LuaQuery
|
||||
*
|
||||
* @return table rowData : table filled with row columns and data where `T[column] = data`
|
||||
*/
|
||||
int GetRow(lua_State* L, ElunaQuery* result)
|
||||
int GetRow(Eluna* E, ElunaQuery* result)
|
||||
{
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
|
||||
uint32 col = RESULT->GetFieldCount();
|
||||
Field* row = RESULT->Fetch();
|
||||
@@ -201,17 +201,17 @@ namespace LuaQuery
|
||||
for (uint32 i = 0; i < col; ++i)
|
||||
{
|
||||
#ifdef TRINITY
|
||||
Eluna::Push(L, RESULT->GetFieldName(i));
|
||||
Eluna::Push(E->L, RESULT->GetFieldName(i));
|
||||
|
||||
const char* str = row[i].GetCString();
|
||||
if (row[i].IsNull() || !str)
|
||||
Eluna::Push(L);
|
||||
Eluna::Push(E->L);
|
||||
#else
|
||||
Eluna::Push(L, names[i]);
|
||||
Eluna::Push(E->L, names[i]);
|
||||
|
||||
const char* str = row[i].GetString();
|
||||
if (row[i].IsNULL() || !str)
|
||||
Eluna::Push(L);
|
||||
Eluna::Push(E->L);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
@@ -224,18 +224,18 @@ namespace LuaQuery
|
||||
case MYSQL_TYPE_LONG:
|
||||
case MYSQL_TYPE_FLOAT:
|
||||
case MYSQL_TYPE_DOUBLE:
|
||||
Eluna::Push(L, strtod(str, NULL));
|
||||
Eluna::Push(E->L, strtod(str, NULL));
|
||||
break;
|
||||
default:
|
||||
Eluna::Push(L, str);
|
||||
Eluna::Push(E->L, str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
lua_settable(L, tbl);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
293
ElunaTemplate.h
293
ElunaTemplate.h
@@ -16,11 +16,96 @@ extern "C"
|
||||
#include "LuaEngine.h"
|
||||
#include "ElunaUtility.h"
|
||||
|
||||
class ElunaGlobal
|
||||
{
|
||||
public:
|
||||
struct ElunaRegister
|
||||
{
|
||||
const char* name;
|
||||
int(*mfunc)(Eluna*);
|
||||
};
|
||||
|
||||
static int thunk(lua_State* L)
|
||||
{
|
||||
ElunaRegister* l = static_cast<ElunaRegister*>(lua_touserdata(L, lua_upvalueindex(1)));
|
||||
Eluna* E = static_cast<Eluna*>(lua_touserdata(L, lua_upvalueindex(2)));
|
||||
int args = lua_gettop(L);
|
||||
int expected = l->mfunc(E);
|
||||
args = lua_gettop(L) - args;
|
||||
if (args < 0 || args > expected) // Assert instead?
|
||||
{
|
||||
ELUNA_LOG_ERROR("[Eluna]: %s returned unexpected amount of arguments %i out of %i. Report to devs", l->name, args, expected);
|
||||
}
|
||||
for (; args < expected; ++args)
|
||||
lua_pushnil(L);
|
||||
return expected;
|
||||
}
|
||||
|
||||
static void SetMethods(Eluna* E, ElunaRegister* methodTable)
|
||||
{
|
||||
if (!methodTable)
|
||||
return;
|
||||
|
||||
lua_pushglobaltable(E->L);
|
||||
|
||||
for (; methodTable && methodTable->name && methodTable->mfunc; ++methodTable)
|
||||
{
|
||||
lua_pushstring(E->L, methodTable->name);
|
||||
lua_pushlightuserdata(E->L, (void*)methodTable);
|
||||
lua_pushlightuserdata(E->L, (void*)E);
|
||||
lua_pushcclosure(E->L, thunk, 2);
|
||||
lua_settable(E->L, -3);
|
||||
}
|
||||
|
||||
lua_remove(E->L, -1);
|
||||
}
|
||||
};
|
||||
|
||||
class ElunaObject
|
||||
{
|
||||
public:
|
||||
ElunaObject(void* obj, bool manageMemory) : _isvalid(false), _invalidate(!manageMemory), object(obj)
|
||||
{
|
||||
SetValid(true);
|
||||
}
|
||||
|
||||
~ElunaObject()
|
||||
{
|
||||
}
|
||||
|
||||
void* GetObj() const { return object; }
|
||||
bool IsValid() const { return _isvalid; }
|
||||
bool CanInvalidate() const { return _invalidate; }
|
||||
|
||||
void SetObj(void* obj)
|
||||
{
|
||||
object = obj;
|
||||
}
|
||||
void SetValid(bool valid)
|
||||
{
|
||||
_isvalid = object && valid;
|
||||
}
|
||||
void SetValidation(bool invalidate)
|
||||
{
|
||||
_invalidate = invalidate;
|
||||
}
|
||||
void Invalidate()
|
||||
{
|
||||
if (CanInvalidate())
|
||||
_isvalid = false;
|
||||
}
|
||||
|
||||
private:
|
||||
bool _isvalid;
|
||||
bool _invalidate;
|
||||
void* object;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
struct ElunaRegister
|
||||
{
|
||||
const char* name;
|
||||
int(*mfunc)(lua_State*, T*);
|
||||
int(*mfunc)(Eluna*, T*);
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
@@ -30,106 +115,88 @@ public:
|
||||
static const char* tname;
|
||||
static bool manageMemory;
|
||||
|
||||
static int typeT(lua_State* L)
|
||||
{
|
||||
lua_pushstring(L, tname);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// name will be used as type name
|
||||
// If gc is true, lua will handle the memory management for object pushed
|
||||
// gc should be used if pushing for example WorldPacket,
|
||||
// that will only be needed on lua side and will not be managed by TC/mangos/<core>
|
||||
static void Register(lua_State* L, const char* name, bool gc = false)
|
||||
static void Register(Eluna* E, const char* name, bool gc = false)
|
||||
{
|
||||
ASSERT(!tname || name);
|
||||
|
||||
tname = name;
|
||||
manageMemory = gc;
|
||||
|
||||
lua_newtable(L);
|
||||
int methods = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int methods = lua_gettop(E->L);
|
||||
|
||||
// store method table in globals so that
|
||||
// scripts can add functions in Lua
|
||||
lua_pushvalue(L, methods);
|
||||
lua_setglobal(L, tname);
|
||||
lua_pushvalue(E->L, methods);
|
||||
lua_setglobal(E->L, tname);
|
||||
|
||||
luaL_newmetatable(L, tname);
|
||||
int metatable = lua_gettop(L);
|
||||
luaL_newmetatable(E->L, tname);
|
||||
int metatable = lua_gettop(E->L);
|
||||
|
||||
// tostring
|
||||
lua_pushcfunction(L, tostringT);
|
||||
lua_setfield(L, metatable, "__tostring");
|
||||
lua_pushcfunction(E->L, tostringT);
|
||||
lua_setfield(E->L, metatable, "__tostring");
|
||||
|
||||
// garbage collecting
|
||||
if (manageMemory)
|
||||
{
|
||||
lua_pushcfunction(L, gcT);
|
||||
lua_setfield(L, metatable, "__gc");
|
||||
lua_pushcfunction(E->L, gcT);
|
||||
lua_setfield(E->L, metatable, "__gc");
|
||||
}
|
||||
|
||||
// make methods accessible through metatable
|
||||
lua_pushvalue(L, methods);
|
||||
lua_setfield(L, metatable, "__index");
|
||||
lua_pushvalue(E->L, methods);
|
||||
lua_setfield(E->L, metatable, "__index");
|
||||
|
||||
// make new indexes saved to methods
|
||||
lua_pushvalue(L, methods);
|
||||
lua_setfield(L, metatable, "__newindex");
|
||||
lua_pushvalue(E->L, methods);
|
||||
lua_setfield(E->L, metatable, "__newindex");
|
||||
|
||||
// special method to get the object type
|
||||
lua_pushcfunction(L, typeT);
|
||||
lua_setfield(L, methods, "GetObjectType");
|
||||
lua_pushcfunction(E->L, typeT);
|
||||
lua_setfield(E->L, methods, "GetObjectType");
|
||||
|
||||
// pop methods and metatable
|
||||
lua_pop(L, 2);
|
||||
lua_pop(E->L, 2);
|
||||
}
|
||||
|
||||
template<typename C>
|
||||
static void SetMethods(lua_State* L, ElunaRegister<C>* methodTable)
|
||||
static void SetMethods(Eluna* E, ElunaRegister<C>* methodTable)
|
||||
{
|
||||
if (!methodTable)
|
||||
return;
|
||||
|
||||
luaL_getmetatable(L, tname);
|
||||
if (!lua_istable(L, -1))
|
||||
luaL_getmetatable(E->L, tname);
|
||||
if (!lua_istable(E->L, -1))
|
||||
{
|
||||
lua_remove(L, -1);
|
||||
lua_remove(E->L, -1);
|
||||
ELUNA_LOG_ERROR("%s missing metatable", tname);
|
||||
return;
|
||||
}
|
||||
|
||||
lua_getfield(L, -1, "__index");
|
||||
lua_remove(L, -2);
|
||||
if (!lua_istable(L, -1))
|
||||
lua_getfield(E->L, -1, "__index");
|
||||
lua_remove(E->L, -2);
|
||||
if (!lua_istable(E->L, -1))
|
||||
{
|
||||
lua_remove(L, -1);
|
||||
lua_remove(E->L, -1);
|
||||
ELUNA_LOG_ERROR("%s missing method table from metatable", tname);
|
||||
return;
|
||||
}
|
||||
|
||||
for (; methodTable && methodTable->name && methodTable->mfunc; ++methodTable)
|
||||
{
|
||||
lua_pushstring(L, methodTable->name);
|
||||
lua_pushlightuserdata(L, (void*)methodTable);
|
||||
lua_pushcclosure(L, thunk, 1);
|
||||
lua_settable(L, -3);
|
||||
lua_pushstring(E->L, methodTable->name);
|
||||
lua_pushlightuserdata(E->L, (void*)methodTable);
|
||||
lua_pushlightuserdata(E->L, (void*)E);
|
||||
lua_pushcclosure(E->L, thunk, 2);
|
||||
lua_settable(E->L, -3);
|
||||
}
|
||||
|
||||
lua_remove(L, -1);
|
||||
}
|
||||
|
||||
// Remember special case ElunaTemplate<Vehicle>::gcT
|
||||
static int gcT(lua_State* L)
|
||||
{
|
||||
if (!manageMemory)
|
||||
return 0;
|
||||
|
||||
// Get object pointer (and check type, no error)
|
||||
T** ptrHold = static_cast<T**>(luaL_testudata(L, -1, tname));
|
||||
if (ptrHold)
|
||||
delete *ptrHold;
|
||||
return 0;
|
||||
lua_remove(E->L, -1);
|
||||
}
|
||||
|
||||
static int push(lua_State* L, T const* obj)
|
||||
@@ -140,91 +207,125 @@ public:
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!manageMemory)
|
||||
{
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, sEluna->userdata_table);
|
||||
//if (!manageMemory)
|
||||
//{
|
||||
lua_getglobal(L, ELUNA_OBJECT_STORE);
|
||||
ASSERT(lua_istable(L, -1));
|
||||
lua_pushfstring(L, "%p", obj);
|
||||
lua_gettable(L, -2);
|
||||
if (!lua_isnoneornil(L, -1) && luaL_checkudata(L, -1, tname))
|
||||
{
|
||||
// remove userdata_table, leave userdata
|
||||
lua_remove(L, -2);
|
||||
|
||||
// set userdata valid
|
||||
if (ElunaObject* elunaObj = Eluna::CHECKOBJ<ElunaObject>(L, -1, false))
|
||||
elunaObj->SetValid(true);
|
||||
return 1;
|
||||
}
|
||||
lua_remove(L, -1);
|
||||
// left userdata_table in stack
|
||||
}
|
||||
//}
|
||||
|
||||
// Create new userdata
|
||||
T const** ptrHold = static_cast<T const**>(lua_newuserdata(L, sizeof(T const*)));
|
||||
ElunaObject** ptrHold = static_cast<ElunaObject**>(lua_newuserdata(L, sizeof(ElunaObject*)));
|
||||
if (!ptrHold)
|
||||
{
|
||||
ELUNA_LOG_ERROR("%s could not create new userdata", tname);
|
||||
lua_pop(L, manageMemory ? 1 : 2);
|
||||
lua_pop(L, 2 /*manageMemory ? 1 : 2*/);
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
}
|
||||
*ptrHold = obj;
|
||||
*ptrHold = new ElunaObject((void*)(obj), manageMemory);
|
||||
|
||||
// Set metatable for it
|
||||
luaL_getmetatable(L, tname);
|
||||
if (!lua_istable(L, -1))
|
||||
{
|
||||
ELUNA_LOG_ERROR("%s missing metatable", tname);
|
||||
lua_pop(L, manageMemory ? 2 : 3);
|
||||
lua_pop(L, 3 /*manageMemory ? 2 : 3*/);
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
}
|
||||
lua_setmetatable(L, -2);
|
||||
|
||||
if (!manageMemory)
|
||||
{
|
||||
//if (!manageMemory)
|
||||
//{
|
||||
lua_pushfstring(L, "%p", obj);
|
||||
lua_pushvalue(L, -2);
|
||||
lua_settable(L, -4);
|
||||
lua_remove(L, -2);
|
||||
}
|
||||
//}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static T* check(lua_State* L, int narg, bool error = true)
|
||||
{
|
||||
T** ptrHold = static_cast<T**>(lua_touserdata(L, narg));
|
||||
if (!ptrHold)
|
||||
ElunaObject* elunaObj = Eluna::CHECKOBJ<ElunaObject>(L, narg, error);
|
||||
|
||||
if (!elunaObj)
|
||||
return NULL;
|
||||
|
||||
//if (!manageMemory)
|
||||
//{
|
||||
// // Check pointer validity
|
||||
// lua_rawgeti(L, LUA_REGISTRYINDEX, sEluna->userdata_table);
|
||||
// lua_pushfstring(L, "%p", (*ptrHold)->GetObj());
|
||||
// lua_gettable(L, -2);
|
||||
// lua_remove(L, -2);
|
||||
// bool valid = lua_isuserdata(L, -1) != 0;
|
||||
// lua_remove(L, -1);
|
||||
// if (!valid)
|
||||
// {
|
||||
// char buff[256];
|
||||
// snprintf(buff, 256, "%s expected, got pointer to nonexisting object (%s). This should never happen", tname, luaL_typename(L, narg));
|
||||
// if (error)
|
||||
// {
|
||||
// luaL_argerror(L, narg, buff);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ELUNA_LOG_ERROR("%s", buff);
|
||||
// }
|
||||
// return NULL;
|
||||
// }
|
||||
//}
|
||||
|
||||
if (!elunaObj->IsValid())
|
||||
{
|
||||
char buff[256];
|
||||
snprintf(buff, 256, "%s expected, got pointer to nonexisting (invalidated) object (%s). Check your code.", tname, luaL_typename(L, narg));
|
||||
if (error)
|
||||
{
|
||||
char buff[256];
|
||||
snprintf(buff, 256, "%s expected, got %s", tname, luaL_typename(L, narg));
|
||||
luaL_argerror(L, narg, buff);
|
||||
}
|
||||
else
|
||||
{
|
||||
ELUNA_LOG_ERROR("%s", buff);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
return static_cast<T*>(elunaObj->GetObj());
|
||||
}
|
||||
|
||||
if (!manageMemory)
|
||||
static int typeT(lua_State* L)
|
||||
{
|
||||
lua_pushstring(L, tname);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Remember special case ElunaTemplate<Vehicle>::gcT
|
||||
static int gcT(lua_State* L)
|
||||
{
|
||||
// Get object pointer (and check type, no error)
|
||||
ElunaObject** ptrHold = static_cast<ElunaObject**>(luaL_testudata(L, -1, tname));
|
||||
if (ptrHold)
|
||||
{
|
||||
// Check pointer validity
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, sEluna->userdata_table);
|
||||
lua_pushfstring(L, "%p", *ptrHold);
|
||||
lua_gettable(L, -2);
|
||||
lua_remove(L, -2);
|
||||
bool valid = lua_isuserdata(L, -1) != 0;
|
||||
lua_remove(L, -1);
|
||||
if (!valid)
|
||||
{
|
||||
char buff[256];
|
||||
snprintf(buff, 256, "%s expected, got pointer to nonexisting object (%s). This should never happen", tname, luaL_typename(L, narg));
|
||||
if (error)
|
||||
{
|
||||
luaL_argerror(L, narg, buff);
|
||||
}
|
||||
else
|
||||
{
|
||||
ELUNA_LOG_ERROR("%s", buff);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (manageMemory)
|
||||
delete static_cast<T*>((*ptrHold)->GetObj());
|
||||
delete *ptrHold;
|
||||
}
|
||||
return *ptrHold;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int thunk(lua_State* L)
|
||||
@@ -233,16 +334,18 @@ public:
|
||||
if (!obj)
|
||||
return 0;
|
||||
ElunaRegister<T>* l = static_cast<ElunaRegister<T>*>(lua_touserdata(L, lua_upvalueindex(1)));
|
||||
int args = lua_gettop(L);
|
||||
int expected = l->mfunc(L, obj);
|
||||
args = lua_gettop(L) - args;
|
||||
Eluna* E = static_cast<Eluna*>(lua_touserdata(L, lua_upvalueindex(2)));
|
||||
int top = lua_gettop(L);
|
||||
int expected = l->mfunc(E, obj);
|
||||
int args = lua_gettop(L) - top;
|
||||
if (args < 0 || args > expected) // Assert instead?
|
||||
{
|
||||
ELUNA_LOG_ERROR("[Eluna]: %s returned unexpected amount of arguments %i out of %i. Report to devs", l->name, args, expected);
|
||||
}
|
||||
for (; args < expected; ++args)
|
||||
lua_pushnil(L);
|
||||
return expected;
|
||||
if (args == expected)
|
||||
return expected;
|
||||
lua_settop(L, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tostringT(lua_State* L)
|
||||
|
||||
@@ -15,14 +15,14 @@ namespace LuaGameObject
|
||||
* @param uint32 questId : quest entry Id to check
|
||||
* @return bool hasQuest
|
||||
*/
|
||||
int HasQuest(lua_State* L, GameObject* go)
|
||||
int HasQuest(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 questId = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 questId = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, go->HasQuest(questId));
|
||||
Eluna::Push(E->L, go->HasQuest(questId));
|
||||
#else
|
||||
Eluna::Push(L, go->hasQuest(questId));
|
||||
Eluna::Push(E->L, go->hasQuest(questId));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -32,9 +32,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return bool isSpawned
|
||||
*/
|
||||
int IsSpawned(lua_State* L, GameObject* go)
|
||||
int IsSpawned(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->isSpawned());
|
||||
Eluna::Push(E->L, go->isSpawned());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -43,9 +43,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return bool isTransport
|
||||
*/
|
||||
int IsTransport(lua_State* L, GameObject* go)
|
||||
int IsTransport(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->IsTransport());
|
||||
Eluna::Push(E->L, go->IsTransport());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -54,15 +54,15 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return bool isActive
|
||||
*/
|
||||
int IsActive(lua_State* L, GameObject* go)
|
||||
int IsActive(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->isActiveObject());
|
||||
Eluna::Push(E->L, go->isActiveObject());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*int IsDestructible(lua_State* L, GameObject* go) // TODO: Implementation core side
|
||||
/*int IsDestructible(Eluna* E, GameObject* go) // TODO: Implementation core side
|
||||
{
|
||||
Eluna::Push(L, go->IsDestructibleBuilding());
|
||||
Eluna::Push(E->L, go->IsDestructibleBuilding());
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
@@ -71,9 +71,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return uint32 displayId
|
||||
*/
|
||||
int GetDisplayId(lua_State* L, GameObject* go)
|
||||
int GetDisplayId(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->GetDisplayId());
|
||||
Eluna::Push(E->L, go->GetDisplayId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -92,9 +92,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return [GOState] goState
|
||||
*/
|
||||
int GetGoState(lua_State* L, GameObject* go)
|
||||
int GetGoState(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->GetGoState());
|
||||
Eluna::Push(E->L, go->GetGoState());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -114,9 +114,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @return [LootState] lootState
|
||||
*/
|
||||
int GetLootState(lua_State* L, GameObject* go)
|
||||
int GetLootState(Eluna* E, GameObject* go)
|
||||
{
|
||||
Eluna::Push(L, go->getLootState());
|
||||
Eluna::Push(E->L, go->getLootState());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -134,9 +134,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param [GOState] state : all available go states can be seen above
|
||||
*/
|
||||
int SetGoState(lua_State* L, GameObject* go)
|
||||
int SetGoState(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 state = Eluna::CHECKVAL<uint32>(L, 2, 0);
|
||||
uint32 state = Eluna::CHECKVAL<uint32>(E->L, 2, 0);
|
||||
|
||||
if (state == 0)
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
@@ -164,9 +164,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param [LootState] state : all available loot states can be seen above
|
||||
*/
|
||||
int SetLootState(lua_State* L, GameObject* go)
|
||||
int SetLootState(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 state = Eluna::CHECKVAL<uint32>(L, 2, 0);
|
||||
uint32 state = Eluna::CHECKVAL<uint32>(E->L, 2, 0);
|
||||
|
||||
if (state == 0)
|
||||
go->SetLootState(GO_NOT_READY);
|
||||
@@ -184,7 +184,7 @@ namespace LuaGameObject
|
||||
* Saves [GameObject] to the database
|
||||
*
|
||||
*/
|
||||
int SaveToDB(lua_State* /*L*/, GameObject* go)
|
||||
int SaveToDB(Eluna* /*E*/, GameObject* go)
|
||||
{
|
||||
go->SaveToDB();
|
||||
return 0;
|
||||
@@ -195,9 +195,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param bool deleteFromDB : if true, it will delete the [GameObject] from the database
|
||||
*/
|
||||
int RemoveFromWorld(lua_State* L, GameObject* go)
|
||||
int RemoveFromWorld(Eluna* E, GameObject* go)
|
||||
{
|
||||
bool deldb = Eluna::CHECKVAL<bool>(L, 2, false);
|
||||
bool deldb = Eluna::CHECKVAL<bool>(E->L, 2, false);
|
||||
if (deldb)
|
||||
go->DeleteFromDB();
|
||||
go->RemoveFromWorld();
|
||||
@@ -209,9 +209,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param uint32 delay : cooldown time in seconds to restore the [GameObject] back to normal
|
||||
*/
|
||||
int UseDoorOrButton(lua_State* L, GameObject* go)
|
||||
int UseDoorOrButton(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(L, 2, 0);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(E->L, 2, 0);
|
||||
|
||||
go->UseDoorOrButton(delay);
|
||||
return 0;
|
||||
@@ -222,9 +222,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param uint32 delay : time in seconds to despawn
|
||||
*/
|
||||
int Despawn(lua_State* L, GameObject* go)
|
||||
int Despawn(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(L, 2, 1);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(E->L, 2, 1);
|
||||
if (!delay)
|
||||
delay = 1;
|
||||
|
||||
@@ -238,9 +238,9 @@ namespace LuaGameObject
|
||||
*
|
||||
* @param uint32 delay : time of respawn in seconds
|
||||
*/
|
||||
int Respawn(lua_State* L, GameObject* go)
|
||||
int Respawn(Eluna* E, GameObject* go)
|
||||
{
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(L, 2, 1);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(E->L, 2, 1);
|
||||
if (!delay)
|
||||
delay = 1;
|
||||
|
||||
|
||||
775
GlobalMethods.h
775
GlobalMethods.h
File diff suppressed because it is too large
Load Diff
152
GroupMethods.h
152
GroupMethods.h
@@ -15,10 +15,10 @@ namespace LuaGroup
|
||||
* @param uint64 guid : guid of a possible leader
|
||||
* @return bool isLeader
|
||||
*/
|
||||
int IsLeader(lua_State* L, Group* group)
|
||||
int IsLeader(Eluna* E, Group* group)
|
||||
{
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
|
||||
Eluna::Push(L, group->IsLeader(ObjectGuid(guid)));
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(E->L, 2);
|
||||
Eluna::Push(E->L, group->IsLeader(ObjectGuid(guid)));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -27,9 +27,9 @@ namespace LuaGroup
|
||||
*
|
||||
* @return bool isFull
|
||||
*/
|
||||
int IsFull(lua_State* L, Group* group)
|
||||
int IsFull(Eluna* E, Group* group)
|
||||
{
|
||||
Eluna::Push(L, group->IsFull());
|
||||
Eluna::Push(E->L, group->IsFull());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -38,9 +38,9 @@ namespace LuaGroup
|
||||
*
|
||||
* @return bool isRaid
|
||||
*/
|
||||
int IsRaidGroup(lua_State* L, Group* group)
|
||||
int IsRaidGroup(Eluna* E, Group* group)
|
||||
{
|
||||
Eluna::Push(L, group->isRaidGroup());
|
||||
Eluna::Push(E->L, group->isRaidGroup());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -49,9 +49,9 @@ namespace LuaGroup
|
||||
*
|
||||
* @return bool isBG
|
||||
*/
|
||||
int IsBGGroup(lua_State* L, Group* group)
|
||||
int IsBGGroup(Eluna* E, Group* group)
|
||||
{
|
||||
Eluna::Push(L, group->isBGGroup());
|
||||
Eluna::Push(E->L, group->isBGGroup());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -61,10 +61,10 @@ namespace LuaGroup
|
||||
* @param [Player] player : [Player] to check
|
||||
* @return bool isMember
|
||||
*/
|
||||
int IsMember(lua_State* L, Group* group)
|
||||
int IsMember(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Eluna::Push(L, group->IsMember(player->GET_GUID()));
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
Eluna::Push(E->L, group->IsMember(player->GET_GUID()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -74,11 +74,11 @@ namespace LuaGroup
|
||||
* @param [Player] player : [Player] to check
|
||||
* @return bool isAssistant
|
||||
*/
|
||||
int IsAssistant(lua_State* L, Group* group)
|
||||
int IsAssistant(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, group->IsAssistant(player->GET_GUID()));
|
||||
Eluna::Push(E->L, group->IsAssistant(player->GET_GUID()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -89,11 +89,11 @@ namespace LuaGroup
|
||||
* @param [Player] player2 : second [Player] to check
|
||||
* @return bool sameSubGroup
|
||||
*/
|
||||
int SameSubGroup(lua_State* L, Group* group)
|
||||
int SameSubGroup(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player1 = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player2 = Eluna::CHECKOBJ<Player>(L, 3);
|
||||
Eluna::Push(L, group->SameSubGroup(player1, player2));
|
||||
Player* player1 = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
Player* player2 = Eluna::CHECKOBJ<Player>(E->L, 3);
|
||||
Eluna::Push(E->L, group->SameSubGroup(player1, player2));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -103,10 +103,10 @@ namespace LuaGroup
|
||||
* @param uint8 subGroup : subGroup ID to check
|
||||
* @return bool hasFreeSlot
|
||||
*/
|
||||
int HasFreeSlotSubGroup(lua_State* L, Group* group)
|
||||
int HasFreeSlotSubGroup(Eluna* E, Group* group)
|
||||
{
|
||||
uint8 subGroup = Eluna::CHECKVAL<uint8>(L, 2);
|
||||
Eluna::Push(L, group->HasFreeSlotSubGroup(subGroup));
|
||||
uint8 subGroup = Eluna::CHECKVAL<uint8>(E->L, 2);
|
||||
Eluna::Push(E->L, group->HasFreeSlotSubGroup(subGroup));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -116,23 +116,23 @@ namespace LuaGroup
|
||||
* @param [Player] player : [Player] to invite
|
||||
* @return bool invited
|
||||
*/
|
||||
int AddInvite(lua_State* L, Group* group)
|
||||
int AddInvite(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, group->AddInvite(player));
|
||||
Eluna::Push(E->L, group->AddInvite(player));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*int IsLFGGroup(lua_State* L, Group* group) // TODO: Implementation
|
||||
/*int IsLFGGroup(Eluna* E, Group* group) // TODO: Implementation
|
||||
{
|
||||
Eluna::Push(L, group->isLFGGroup());
|
||||
Eluna::Push(E->L, group->isLFGGroup());
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
/*int IsBFGroup(lua_State* L, Group* group) // TODO: Implementation
|
||||
/*int IsBFGroup(Eluna* E, Group* group) // TODO: Implementation
|
||||
{
|
||||
Eluna::Push(L, group->isBFGroup());
|
||||
Eluna::Push(E->L, group->isBFGroup());
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
@@ -141,10 +141,10 @@ namespace LuaGroup
|
||||
*
|
||||
* @return table groupPlayers : table of [Player]s
|
||||
*/
|
||||
int GetMembers(lua_State* L, Group* group)
|
||||
int GetMembers(Eluna* E, Group* group)
|
||||
{
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
for (GroupReference* itr = group->GetFirstMember(); itr; itr = itr->next())
|
||||
@@ -159,12 +159,12 @@ namespace LuaGroup
|
||||
continue;
|
||||
|
||||
++i;
|
||||
Eluna::Push(L, i);
|
||||
Eluna::Push(L, member);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, i);
|
||||
Eluna::Push(E->L, member);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl); // push table to top of stack
|
||||
lua_settop(E->L, tbl); // push table to top of stack
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -173,12 +173,12 @@ namespace LuaGroup
|
||||
*
|
||||
* @return uint64 leaderGUID
|
||||
*/
|
||||
int GetLeaderGUID(lua_State* L, Group* group)
|
||||
int GetLeaderGUID(Eluna* E, Group* group)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, group->GetLeaderGuid());
|
||||
Eluna::Push(E->L, group->GetLeaderGuid());
|
||||
#else
|
||||
Eluna::Push(L, group->GetLeaderGUID());
|
||||
Eluna::Push(E->L, group->GetLeaderGUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -188,12 +188,12 @@ namespace LuaGroup
|
||||
*
|
||||
* @return [Player] leader
|
||||
*/
|
||||
int GetLeader(lua_State* L, Group* group)
|
||||
int GetLeader(Eluna* E, Group* group)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, eObjectAccessor->FindPlayer(group->GetLeaderGuid()));
|
||||
Eluna::Push(E->L, eObjectAccessor->FindPlayer(group->GetLeaderGuid()));
|
||||
#else
|
||||
Eluna::Push(L, eObjectAccessor->FindPlayer(group->GetLeaderGUID()));
|
||||
Eluna::Push(E->L, eObjectAccessor->FindPlayer(group->GetLeaderGUID()));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -203,12 +203,12 @@ namespace LuaGroup
|
||||
*
|
||||
* @return uint64 groupGUID
|
||||
*/
|
||||
int GetGUID(lua_State* L, Group* group)
|
||||
int GetGUID(Eluna* E, Group* group)
|
||||
{
|
||||
#ifdef CLASSIC
|
||||
Eluna::Push(L, group->GetId());
|
||||
Eluna::Push(E->L, group->GetId());
|
||||
#else
|
||||
Eluna::Push(L, group->GET_GUID());
|
||||
Eluna::Push(E->L, group->GET_GUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -219,13 +219,13 @@ namespace LuaGroup
|
||||
* @param string name : the [Player]'s name
|
||||
* @return uint64 memberGUID
|
||||
*/
|
||||
int GetMemberGUID(lua_State* L, Group* group)
|
||||
int GetMemberGUID(Eluna* E, Group* group)
|
||||
{
|
||||
const char* name = Eluna::CHECKVAL<const char*>(L, 2);
|
||||
const char* name = Eluna::CHECKVAL<const char*>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, group->GetMemberGuid(name));
|
||||
Eluna::Push(E->L, group->GetMemberGuid(name));
|
||||
#else
|
||||
Eluna::Push(L, group->GetMemberGUID(name));
|
||||
Eluna::Push(E->L, group->GetMemberGUID(name));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -235,9 +235,9 @@ namespace LuaGroup
|
||||
*
|
||||
* @return uint32 memberCount
|
||||
*/
|
||||
int GetMembersCount(lua_State* L, Group* group)
|
||||
int GetMembersCount(Eluna* E, Group* group)
|
||||
{
|
||||
Eluna::Push(L, group->GetMembersCount());
|
||||
Eluna::Push(E->L, group->GetMembersCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -247,11 +247,11 @@ namespace LuaGroup
|
||||
* @param [Player] player : the [Player] to check
|
||||
* @return uint8 subGroupID
|
||||
*/
|
||||
int GetMemberGroup(lua_State* L, Group* group)
|
||||
int GetMemberGroup(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, group->GetMemberGroup(player->GET_GUID()));
|
||||
Eluna::Push(E->L, group->GetMemberGroup(player->GET_GUID()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -260,9 +260,9 @@ namespace LuaGroup
|
||||
*
|
||||
* @param [Player] leader : the [Player] leader to change
|
||||
*/
|
||||
int SetLeader(lua_State* L, Group* group)
|
||||
int SetLeader(Eluna* E, Group* group)
|
||||
{
|
||||
Player* leader = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* leader = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
group->ChangeLeader(leader->GET_GUID());
|
||||
return 0;
|
||||
@@ -275,11 +275,11 @@ namespace LuaGroup
|
||||
* @param bool ignorePlayersInBg : ignores [Player]s in a battleground
|
||||
* @param uint64 ignore : ignore a [Player] by their GUID
|
||||
*/
|
||||
int SendPacket(lua_State* L, Group* group)
|
||||
int SendPacket(Eluna* E, Group* group)
|
||||
{
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(L, 2);
|
||||
bool ignorePlayersInBg = Eluna::CHECKVAL<bool>(L, 3);
|
||||
uint64 ignore = Eluna::CHECKVAL<uint64>(L, 4);
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(E->L, 2);
|
||||
bool ignorePlayersInBg = Eluna::CHECKVAL<bool>(E->L, 3);
|
||||
uint64 ignore = Eluna::CHECKVAL<uint64>(E->L, 4);
|
||||
|
||||
group->BroadcastPacket(data, ignorePlayersInBg, -1, ObjectGuid(ignore));
|
||||
return 0;
|
||||
@@ -302,15 +302,15 @@ namespace LuaGroup
|
||||
* @param [RemoveMethod] method : method used to remove the player
|
||||
* @return bool removed
|
||||
*/
|
||||
int RemoveMember(lua_State* L, Group* group)
|
||||
int RemoveMember(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint32 method = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint32 method = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, group->RemoveMember(player->GET_GUID(), method));
|
||||
Eluna::Push(E->L, group->RemoveMember(player->GET_GUID(), method));
|
||||
#else
|
||||
Eluna::Push(L, group->RemoveMember(player->GET_GUID(), (RemoveMethod)method));
|
||||
Eluna::Push(E->L, group->RemoveMember(player->GET_GUID(), (RemoveMethod)method));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -319,7 +319,7 @@ namespace LuaGroup
|
||||
* Disbands this [Group]
|
||||
*
|
||||
*/
|
||||
int Disband(lua_State* /*L*/, Group* group)
|
||||
int Disband(Eluna* /*E*/, Group* group)
|
||||
{
|
||||
group->Disband();
|
||||
return 0;
|
||||
@@ -329,7 +329,7 @@ namespace LuaGroup
|
||||
* Converts this [Group] to a raid [Group]
|
||||
*
|
||||
*/
|
||||
int ConvertToRaid(lua_State* /*L*/, Group* group)
|
||||
int ConvertToRaid(Eluna* /*E*/, Group* group)
|
||||
{
|
||||
group->ConvertToRaid();
|
||||
return 0;
|
||||
@@ -341,10 +341,10 @@ namespace LuaGroup
|
||||
* @param [Player] player : [Player] to move
|
||||
* @param uint8 groupID : the subGroup's ID
|
||||
*/
|
||||
int SetMembersGroup(lua_State* L, Group* group)
|
||||
int SetMembersGroup(Eluna* E, Group* group)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint8 groupID = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint8 groupID = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
|
||||
group->ChangeMembersGroup(player->GET_GUID(), groupID);
|
||||
return 0;
|
||||
@@ -357,14 +357,14 @@ namespace LuaGroup
|
||||
* @param uint64 target : GUID of the icon target, 0 is to clear the icon
|
||||
* @param uint64 setter : GUID of the icon setter
|
||||
*/
|
||||
int SetTargetIcon(lua_State* L, Group* group)
|
||||
int SetTargetIcon(Eluna* E, Group* group)
|
||||
{
|
||||
uint8 icon = Eluna::CHECKVAL<uint8>(L, 2);
|
||||
uint64 target = Eluna::CHECKVAL<uint64>(L, 3);
|
||||
uint64 setter = Eluna::CHECKVAL<uint64>(L, 4, 0);
|
||||
uint8 icon = Eluna::CHECKVAL<uint8>(E->L, 2);
|
||||
uint64 target = Eluna::CHECKVAL<uint64>(E->L, 3);
|
||||
uint64 setter = Eluna::CHECKVAL<uint64>(E->L, 4, 0);
|
||||
|
||||
if (icon >= TARGETICONCOUNT)
|
||||
return luaL_argerror(L, 2, "valid target icon expected");
|
||||
return luaL_argerror(E->L, 2, "valid target icon expected");
|
||||
|
||||
#if (defined(CLASSIC) || defined(TBC))
|
||||
group->SetTargetIcon(icon, ObjectGuid(target));
|
||||
@@ -374,7 +374,7 @@ namespace LuaGroup
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*int ConvertToLFG(lua_State* L, Group* group) // TODO: Implementation
|
||||
/*int ConvertToLFG(Eluna* E, Group* group) // TODO: Implementation
|
||||
{
|
||||
group->ConvertToLFG();
|
||||
return 0;
|
||||
|
||||
100
GuildMethods.h
100
GuildMethods.h
@@ -10,10 +10,10 @@
|
||||
namespace LuaGuild
|
||||
{
|
||||
/* GETTERS */
|
||||
int GetMembers(lua_State* L, Guild* guild)
|
||||
int GetMembers(Eluna* E, Guild* guild)
|
||||
{
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
SessionMap const& sessions = eWorld->GetAllSessions();
|
||||
@@ -24,76 +24,76 @@ namespace LuaGuild
|
||||
if (player->GetSession() && (player->GetGuildId() == guild->GetId()))
|
||||
{
|
||||
++i;
|
||||
Eluna::Push(L, i);
|
||||
Eluna::Push(L, player);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, i);
|
||||
Eluna::Push(E->L, player);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lua_settop(L, tbl); // push table to top of stack
|
||||
lua_settop(E->L, tbl); // push table to top of stack
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetMemberCount(lua_State* L, Guild* guild)
|
||||
int GetMemberCount(Eluna* E, Guild* guild)
|
||||
{
|
||||
Eluna::Push(L, guild->GetMemberSize());
|
||||
Eluna::Push(E->L, guild->GetMemberSize());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetLeader(lua_State* L, Guild* guild)
|
||||
int GetLeader(Eluna* E, Guild* guild)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, eObjectAccessor->FindPlayer(guild->GetLeaderGuid()));
|
||||
Eluna::Push(E->L, eObjectAccessor->FindPlayer(guild->GetLeaderGuid()));
|
||||
#else
|
||||
Eluna::Push(L, eObjectAccessor->FindPlayer(guild->GetLeaderGUID()));
|
||||
Eluna::Push(E->L, eObjectAccessor->FindPlayer(guild->GetLeaderGUID()));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetLeaderGUID(lua_State* L, Guild* guild)
|
||||
int GetLeaderGUID(Eluna* E, Guild* guild)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, guild->GetLeaderGuid());
|
||||
Eluna::Push(E->L, guild->GetLeaderGuid());
|
||||
#else
|
||||
Eluna::Push(L, guild->GetLeaderGUID());
|
||||
Eluna::Push(E->L, guild->GetLeaderGUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetId(lua_State* L, Guild* guild)
|
||||
int GetId(Eluna* E, Guild* guild)
|
||||
{
|
||||
Eluna::Push(L, guild->GetId());
|
||||
Eluna::Push(E->L, guild->GetId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetName(lua_State* L, Guild* guild)
|
||||
int GetName(Eluna* E, Guild* guild)
|
||||
{
|
||||
Eluna::Push(L, guild->GetName());
|
||||
Eluna::Push(E->L, guild->GetName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetMOTD(lua_State* L, Guild* guild)
|
||||
int GetMOTD(Eluna* E, Guild* guild)
|
||||
{
|
||||
Eluna::Push(L, guild->GetMOTD());
|
||||
Eluna::Push(E->L, guild->GetMOTD());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInfo(lua_State* L, Guild* guild)
|
||||
int GetInfo(Eluna* E, Guild* guild)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, guild->GetGINFO());
|
||||
Eluna::Push(E->L, guild->GetGINFO());
|
||||
#else
|
||||
Eluna::Push(L, guild->GetInfo());
|
||||
Eluna::Push(E->L, guild->GetInfo());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* SETTERS */
|
||||
#ifndef CATA
|
||||
int SetLeader(lua_State* L, Guild* guild)
|
||||
int SetLeader(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
guild->SetLeader(player->GET_GUID());
|
||||
@@ -105,10 +105,10 @@ namespace LuaGuild
|
||||
#endif
|
||||
|
||||
#ifndef CLASSIC
|
||||
int SetBankTabText(lua_State* L, Guild* guild)
|
||||
int SetBankTabText(Eluna* E, Guild* guild)
|
||||
{
|
||||
uint8 tabId = Eluna::CHECKVAL<uint8>(L, 2);
|
||||
const char* text = Eluna::CHECKVAL<const char*>(L, 3);
|
||||
uint8 tabId = Eluna::CHECKVAL<uint8>(E->L, 2);
|
||||
const char* text = Eluna::CHECKVAL<const char*>(E->L, 3);
|
||||
#ifndef TRINITY
|
||||
guild->SetGuildBankTabText(tabId, text);
|
||||
#else
|
||||
@@ -120,43 +120,43 @@ namespace LuaGuild
|
||||
|
||||
/* OTHER */
|
||||
// SendPacketToGuild(packet)
|
||||
int SendPacket(lua_State* L, Guild* guild)
|
||||
int SendPacket(Eluna* E, Guild* guild)
|
||||
{
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(L, 2);
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(E->L, 2);
|
||||
|
||||
guild->BroadcastPacket(data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// SendPacketToRankedInGuild(packet, rankId)
|
||||
int SendPacketToRanked(lua_State* L, Guild* guild)
|
||||
int SendPacketToRanked(Eluna* E, Guild* guild)
|
||||
{
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(L, 2);
|
||||
uint8 ranked = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(E->L, 2);
|
||||
uint8 ranked = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
|
||||
guild->BroadcastPacketToRank(data, ranked);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Disband(lua_State* /*L*/, Guild* guild)
|
||||
int Disband(Eluna* /*E*/, Guild* guild)
|
||||
{
|
||||
guild->Disband();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AddMember(lua_State* L, Guild* guild)
|
||||
int AddMember(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint8 rankId = Eluna::CHECKVAL<uint8>(L, 3, GUILD_RANK_NONE);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint8 rankId = Eluna::CHECKVAL<uint8>(E->L, 3, GUILD_RANK_NONE);
|
||||
|
||||
guild->AddMember(player->GET_GUID(), rankId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DeleteMember(lua_State* L, Guild* guild)
|
||||
int DeleteMember(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
bool isDisbanding = Eluna::CHECKVAL<bool>(L, 3, false);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
bool isDisbanding = Eluna::CHECKVAL<bool>(E->L, 3, false);
|
||||
|
||||
#ifndef TRINITY
|
||||
guild->DelMember(player->GET_GUID(), isDisbanding);
|
||||
@@ -166,10 +166,10 @@ namespace LuaGuild
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetMemberRank(lua_State* L, Guild* guild)
|
||||
int SetMemberRank(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint8 newRank = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint8 newRank = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
|
||||
guild->ChangeMemberRank(player->GET_GUID(), newRank);
|
||||
return 0;
|
||||
@@ -177,10 +177,10 @@ namespace LuaGuild
|
||||
|
||||
#ifndef CLASSIC
|
||||
// Move to Player methods
|
||||
int WithdrawBankMoney(lua_State* L, Guild* guild)
|
||||
int WithdrawBankMoney(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint32 money = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint32 money = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
#ifndef TRINITY
|
||||
if (guild->GetGuildBankMoney() < money)
|
||||
return 0;
|
||||
@@ -192,10 +192,10 @@ namespace LuaGuild
|
||||
}
|
||||
|
||||
// Move to Player methods
|
||||
int DepositBankMoney(lua_State* L, Guild* guild)
|
||||
int DepositBankMoney(Eluna* E, Guild* guild)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
uint32 money = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
uint32 money = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
|
||||
#ifndef TRINITY
|
||||
guild->SetBankMoney(guild->GetGuildBankMoney() + money);
|
||||
|
||||
416
HookMgr.cpp
416
HookMgr.cpp
@@ -46,12 +46,12 @@ using namespace HookMgr;
|
||||
#define EVENT_BEGIN(BINDMAP, EVENT, RET) \
|
||||
if (!BINDMAP->HasEvents(EVENT)) \
|
||||
RET; \
|
||||
lua_State* L = sEluna->L; \
|
||||
const char* _LuaBindType = sEluna->BINDMAP->groupName; \
|
||||
lua_State* L = this->L; \
|
||||
const char* _LuaBindType = this->BINDMAP->groupName; \
|
||||
uint32 _LuaEvent = EVENT; \
|
||||
int _LuaStackTop = lua_gettop(L); \
|
||||
for (size_t i = 0; i < sEluna->BINDMAP->Bindings[_LuaEvent].size(); ++i) \
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, (sEluna->BINDMAP->Bindings[_LuaEvent][i])); \
|
||||
for (size_t i = 0; i < this->BINDMAP->Bindings[_LuaEvent].size(); ++i) \
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, (this->BINDMAP->Bindings[_LuaEvent][i])); \
|
||||
int _LuaFuncTop = lua_gettop(L); \
|
||||
int _LuaFuncCount = _LuaFuncTop-_LuaStackTop; \
|
||||
Eluna::Push(L, _LuaEvent);
|
||||
@@ -69,7 +69,7 @@ using namespace HookMgr;
|
||||
{ \
|
||||
for (int i = 0; i <= _LuaParams; ++i) \
|
||||
lua_pushvalue(L, _LuaFuncTop+i); \
|
||||
Eluna::ExecuteCall(L, _LuaParams, _LuaReturnValues); \
|
||||
Eluna::ExecuteCall(_LuaParams, _LuaReturnValues); \
|
||||
lua_remove(L, _LuaFuncTop--); \
|
||||
} \
|
||||
for (int i = _LuaParams; i > 0; --i) \
|
||||
@@ -78,11 +78,11 @@ using namespace HookMgr;
|
||||
|
||||
// RET is a return statement
|
||||
#define ENTRY_BEGIN(BINDMAP, ENTRY, EVENT, RET) \
|
||||
int _Luabind = sEluna->BINDMAP->GetBind(ENTRY, EVENT); \
|
||||
int _Luabind = this->BINDMAP->GetBind(ENTRY, EVENT); \
|
||||
if (!_Luabind) \
|
||||
RET; \
|
||||
lua_State* L = sEluna->L; \
|
||||
const char* _LuaBindType = sEluna->BINDMAP->groupName; \
|
||||
lua_State* L = this->L; \
|
||||
const char* _LuaBindType = this->BINDMAP->groupName; \
|
||||
uint32 _LuaEvent = EVENT; \
|
||||
int _LuaStackTop = lua_gettop(L); \
|
||||
lua_rawgeti(L, LUA_REGISTRYINDEX, _Luabind); \
|
||||
@@ -93,7 +93,7 @@ using namespace HookMgr;
|
||||
#define ENTRY_EXECUTE(RETVALS) \
|
||||
int _LuaReturnValues = RETVALS; \
|
||||
int _LuaParams = lua_gettop(L) - _LuaStackTop - 1; \
|
||||
Eluna::ExecuteCall(L, _LuaParams, _LuaReturnValues);
|
||||
Eluna::ExecuteCall(_LuaParams, _LuaReturnValues);
|
||||
|
||||
#define FOR_RETS(IT) \
|
||||
for (int IT = _LuaStackTop + 1; IT <= lua_gettop(L); ++IT)
|
||||
@@ -107,7 +107,9 @@ using namespace HookMgr;
|
||||
{ \
|
||||
ELUNA_LOG_ERROR("[Eluna]: Ending event %u for %s, stack top was %i and was supposed to be between %i and %i. Report to devs", _LuaEvent, _LuaBindType, lua_gettop(L), _LuaStackTop, _LuaStackTop + _LuaFuncCount * _LuaReturnValues); \
|
||||
} \
|
||||
lua_settop(L, _LuaStackTop);
|
||||
lua_settop(L, _LuaStackTop); \
|
||||
if (!this->event_level) \
|
||||
this->InvalidateObjects(); // Invalidate objects on outermost hook call
|
||||
|
||||
void Eluna::OnLuaStateClose()
|
||||
{
|
||||
@@ -341,14 +343,14 @@ void Eluna::OnShutdownCancel()
|
||||
|
||||
void Eluna::OnWorldUpdate(uint32 diff)
|
||||
{
|
||||
eventMgr->globalProcessor->Update(diff);
|
||||
|
||||
if (reload)
|
||||
{
|
||||
ReloadEluna();
|
||||
return;
|
||||
}
|
||||
|
||||
eventMgr->globalProcessor->Update(diff);
|
||||
|
||||
EVENT_BEGIN(ServerEventBindings, WORLD_EVENT_ON_UPDATE, return);
|
||||
Push(L, diff);
|
||||
EVENT_EXECUTE(0);
|
||||
@@ -1320,6 +1322,8 @@ void Eluna::OnPlayerLeave(Map* map, Player* player)
|
||||
}
|
||||
void Eluna::OnUpdate(Map* map, uint32 diff)
|
||||
{
|
||||
// enable this for multithread
|
||||
// eventMgr->globalProcessor->Update(diff);
|
||||
EVENT_BEGIN(ServerEventBindings, MAP_EVENT_ON_UPDATE, return);
|
||||
Push(L, map);
|
||||
Push(L, diff);
|
||||
@@ -1450,6 +1454,242 @@ void Eluna::OnRemoveFromWorld(Creature* creature)
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
void Eluna::UpdateAI(Creature* me, const uint32 diff)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_AIUPDATE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, diff);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
//Called for reaction at enter to combat if not in combat yet (enemy can be NULL)
|
||||
//Called at creature aggro either by MoveInLOS or Attack Start
|
||||
void Eluna::EnterCombat(Creature* me, Unit* target)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_ENTER_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called at any Damage from any attacker (before damage apply)
|
||||
void Eluna::DamageTaken(Creature* me, Unit* attacker, uint32& damage)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_DAMAGE_TAKEN, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
Eluna::Push(L, damage);
|
||||
ENTRY_EXECUTE(1);
|
||||
FOR_RETS(i)
|
||||
{
|
||||
if (lua_isnumber(L, i))
|
||||
damage = Eluna::CHECKVAL<uint32>(L, i, damage);
|
||||
}
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
//Called at creature death
|
||||
void Eluna::JustDied(Creature* me, Unit* killer)
|
||||
{
|
||||
On_Reset(me);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, killer);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
//Called at creature killing another unit
|
||||
void Eluna::KilledUnit(Creature* me, Unit* victim)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_TARGET_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, victim);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when the creature summon successfully other creature
|
||||
void Eluna::JustSummoned(Creature* me, Creature* summon)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when a summoned creature is despawned
|
||||
void Eluna::SummonedCreatureDespawn(Creature* me, Creature* summon)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
//Called at waypoint reached or PointMovement end
|
||||
void Eluna::MovementInform(Creature* me, uint32 type, uint32 id)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_REACH_WP, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, type);
|
||||
Eluna::Push(L, id);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called before EnterCombat even before the creature is in combat.
|
||||
void Eluna::AttackStart(Creature* me, Unit* target)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_PRE_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called for reaction at stopping attack at no attackers or targets
|
||||
void Eluna::EnterEvadeMode(Creature* me)
|
||||
{
|
||||
On_Reset(me);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_LEAVE_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when the creature is target of hostile action: swing, hostile spell landed, fear/etc)
|
||||
void Eluna::AttackedBy(Creature* me, Unit* attacker)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_ATTACKED_AT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when creature is spawned or respawned (for reseting variables)
|
||||
void Eluna::JustRespawned(Creature* me)
|
||||
{
|
||||
On_Reset(me);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SPAWN, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called at reaching home after evade
|
||||
void Eluna::JustReachedHome(Creature* me)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_REACH_HOME, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called at text emote receive from player
|
||||
void Eluna::ReceiveEmote(Creature* me, Player* player, uint32 emoteId)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_RECEIVE_EMOTE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, player);
|
||||
Eluna::Push(L, emoteId);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// called when the corpse of this creature gets removed
|
||||
void Eluna::CorpseRemoved(Creature* me, uint32& respawnDelay)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_CORPSE_REMOVED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, respawnDelay);
|
||||
ENTRY_EXECUTE(1);
|
||||
FOR_RETS(i)
|
||||
{
|
||||
if (lua_isnumber(L, i))
|
||||
respawnDelay = Eluna::CHECKVAL<uint32>(L, i, respawnDelay);
|
||||
}
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
void Eluna::MoveInLineOfSight(Creature* me, Unit* who)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_MOVE_IN_LOS, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, who);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called on creature initial spawn, respawn, death, evade (leave combat)
|
||||
void Eluna::On_Reset(Creature* me) // Not an override, custom
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_RESET, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when hit by a spell
|
||||
void Eluna::SpellHit(Creature* me, Unit* caster, SpellInfo const* spell)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_HIT_BY_SPELL, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, caster);
|
||||
Eluna::Push(L, spell->Id); // Pass spell object?
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when spell hits a target
|
||||
void Eluna::SpellHitTarget(Creature* me, Unit* target, SpellInfo const* spell)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SPELL_HIT_TARGET, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(L, spell->Id); // Pass spell object?
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
#ifdef TRINITY
|
||||
|
||||
void Eluna::SummonedCreatureDies(Creature* me, Creature* summon, Unit* killer)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
Eluna::Push(L, killer);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when owner takes damage
|
||||
void Eluna::OwnerAttackedBy(Creature* me, Unit* attacker)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_OWNER_ATTACKED_AT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called when owner attacks something
|
||||
void Eluna::OwnerAttacked(Creature* me, Unit* target)
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_OWNER_ATTACKED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ElunaCreatureAI : ScriptedAI
|
||||
{
|
||||
#ifndef TRINITY
|
||||
@@ -1476,11 +1716,8 @@ struct ElunaCreatureAI : ScriptedAI
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE))
|
||||
ScriptedAI::UpdateAI(diff);
|
||||
#endif
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_AIUPDATE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, diff);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
|
||||
sEluna->UpdateAI(me, diff);
|
||||
}
|
||||
|
||||
//Called for reaction at enter to combat if not in combat yet (enemy can be NULL)
|
||||
@@ -1488,167 +1725,98 @@ struct ElunaCreatureAI : ScriptedAI
|
||||
void EnterCombat(Unit* target) override
|
||||
{
|
||||
ScriptedAI::EnterCombat(target);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_ENTER_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->EnterCombat(me, target);
|
||||
}
|
||||
|
||||
// Called at any Damage from any attacker (before damage apply)
|
||||
void DamageTaken(Unit* attacker, uint32& damage) override
|
||||
{
|
||||
ScriptedAI::DamageTaken(attacker, damage);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_DAMAGE_TAKEN, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
Eluna::Push(L, damage);
|
||||
ENTRY_EXECUTE(1);
|
||||
FOR_RETS(i)
|
||||
{
|
||||
if (lua_isnumber(L, i))
|
||||
damage = Eluna::CHECKVAL<uint32>(L, i, damage);
|
||||
}
|
||||
ENDCALL();
|
||||
sEluna->DamageTaken(me, attacker, damage);
|
||||
}
|
||||
|
||||
//Called at creature death
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
ScriptedAI::JustDied(killer);
|
||||
On_Reset();
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, killer);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->JustDied(me, killer);
|
||||
}
|
||||
|
||||
//Called at creature killing another unit
|
||||
void KilledUnit(Unit* victim) override
|
||||
{
|
||||
ScriptedAI::KilledUnit(victim);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_TARGET_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, victim);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->KilledUnit(me, victim);
|
||||
}
|
||||
|
||||
// Called when the creature summon successfully other creature
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
ScriptedAI::JustSummoned(summon);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->JustSummoned(me, summon);
|
||||
}
|
||||
|
||||
// Called when a summoned creature is despawned
|
||||
void SummonedCreatureDespawn(Creature* summon) override
|
||||
{
|
||||
ScriptedAI::SummonedCreatureDespawn(summon);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->SummonedCreatureDespawn(me, summon);
|
||||
}
|
||||
|
||||
//Called at waypoint reached or PointMovement end
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
ScriptedAI::MovementInform(type, id);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_REACH_WP, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, type);
|
||||
Eluna::Push(L, id);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->MovementInform(me, type, id);
|
||||
}
|
||||
|
||||
// Called before EnterCombat even before the creature is in combat.
|
||||
void AttackStart(Unit* target) override
|
||||
{
|
||||
ScriptedAI::AttackStart(target);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_PRE_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->AttackStart(me, target);
|
||||
}
|
||||
|
||||
// Called for reaction at stopping attack at no attackers or targets
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
On_Reset();
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_LEAVE_COMBAT, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->EnterEvadeMode(me);
|
||||
}
|
||||
|
||||
// Called when the creature is target of hostile action: swing, hostile spell landed, fear/etc)
|
||||
void AttackedBy(Unit* attacker) override
|
||||
{
|
||||
ScriptedAI::AttackedBy(attacker);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_ATTACKED_AT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->AttackedBy(me, attacker);
|
||||
}
|
||||
|
||||
// Called when creature is spawned or respawned (for reseting variables)
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
On_Reset();
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SPAWN, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->JustRespawned(me);
|
||||
}
|
||||
|
||||
// Called at reaching home after evade
|
||||
void JustReachedHome() override
|
||||
{
|
||||
ScriptedAI::JustReachedHome();
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_REACH_HOME, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->JustReachedHome(me);
|
||||
}
|
||||
|
||||
// Called at text emote receive from player
|
||||
void ReceiveEmote(Player* player, uint32 emoteId) override
|
||||
{
|
||||
ScriptedAI::ReceiveEmote(player, emoteId);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_RECEIVE_EMOTE, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, player);
|
||||
Eluna::Push(L, emoteId);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->ReceiveEmote(me, player, emoteId);
|
||||
}
|
||||
|
||||
// called when the corpse of this creature gets removed
|
||||
void CorpseRemoved(uint32& respawnDelay) override
|
||||
{
|
||||
ScriptedAI::CorpseRemoved(respawnDelay);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_CORPSE_REMOVED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, respawnDelay);
|
||||
ENTRY_EXECUTE(1);
|
||||
FOR_RETS(i)
|
||||
{
|
||||
if (lua_isnumber(L, i))
|
||||
respawnDelay = Eluna::CHECKVAL<uint32>(L, i, respawnDelay);
|
||||
}
|
||||
ENDCALL();
|
||||
sEluna->CorpseRemoved(me, respawnDelay);
|
||||
}
|
||||
|
||||
#ifndef TRINITY
|
||||
@@ -1662,44 +1830,21 @@ struct ElunaCreatureAI : ScriptedAI
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_MOVE_IN_LOS, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, who);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
}
|
||||
|
||||
// Called on creature initial spawn, respawn, death, evade (leave combat)
|
||||
void On_Reset() // Not an override, custom
|
||||
{
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_RESET, return);
|
||||
Eluna::Push(L, me);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->MoveInLineOfSight(me, who);
|
||||
}
|
||||
|
||||
// Called when hit by a spell
|
||||
void SpellHit(Unit* caster, SpellInfo const* spell) override
|
||||
{
|
||||
ScriptedAI::SpellHit(caster, spell);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_HIT_BY_SPELL, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, caster);
|
||||
Eluna::Push(L, spell->Id); // Pass spell object?
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->SpellHit(me, caster, spell);
|
||||
}
|
||||
|
||||
// Called when spell hits a target
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
|
||||
{
|
||||
ScriptedAI::SpellHitTarget(target, spell);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SPELL_HIT_TARGET, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(L, spell->Id); // Pass spell object?
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->SpellHitTarget(me, target, spell);
|
||||
}
|
||||
|
||||
#ifdef TRINITY
|
||||
@@ -1714,34 +1859,21 @@ struct ElunaCreatureAI : ScriptedAI
|
||||
void SummonedCreatureDies(Creature* summon, Unit* killer) override
|
||||
{
|
||||
ScriptedAI::SummonedCreatureDies(summon, killer);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, summon);
|
||||
Eluna::Push(L, killer);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->SummonedCreatureDies(me, summon, killer);
|
||||
}
|
||||
|
||||
// Called when owner takes damage
|
||||
void OwnerAttackedBy(Unit* attacker) override
|
||||
{
|
||||
ScriptedAI::OwnerAttackedBy(attacker);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_OWNER_ATTACKED_AT, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, attacker);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->OwnerAttackedBy(me, attacker);
|
||||
}
|
||||
|
||||
// Called when owner attacks something
|
||||
void OwnerAttacked(Unit* target) override
|
||||
{
|
||||
ScriptedAI::OwnerAttacked(target);
|
||||
ENTRY_BEGIN(CreatureEventBindings, me->GetEntry(), CREATURE_EVENT_ON_OWNER_ATTACKED, return);
|
||||
Eluna::Push(L, me);
|
||||
Eluna::Push(L, target);
|
||||
ENTRY_EXECUTE(0);
|
||||
ENDCALL();
|
||||
sEluna->OwnerAttacked(me, target);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
258
ItemMethods.h
258
ItemMethods.h
@@ -10,136 +10,136 @@
|
||||
namespace LuaItem
|
||||
{
|
||||
/* BOOLEAN */
|
||||
int IsSoulBound(lua_State* L, Item* item)
|
||||
int IsSoulBound(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsSoulBound());
|
||||
Eluna::Push(E->L, item->IsSoulBound());
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if (!defined(TBC) && !defined(CLASSIC))
|
||||
int IsBoundAccountWide(lua_State* L, Item* item)
|
||||
int IsBoundAccountWide(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsBoundAccountWide());
|
||||
Eluna::Push(E->L, item->IsBoundAccountWide());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int IsBoundByEnchant(lua_State* L, Item* item)
|
||||
int IsBoundByEnchant(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsBoundByEnchant());
|
||||
Eluna::Push(E->L, item->IsBoundByEnchant());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsNotBoundToPlayer(lua_State* L, Item* item)
|
||||
int IsNotBoundToPlayer(Eluna* E, Item* item)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
Eluna::Push(L, item->IsBindedNotWith(player));
|
||||
Eluna::Push(E->L, item->IsBindedNotWith(player));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsLocked(lua_State* L, Item* item)
|
||||
int IsLocked(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsLocked());
|
||||
Eluna::Push(E->L, item->IsLocked());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsBag(lua_State* L, Item* item)
|
||||
int IsBag(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsBag());
|
||||
Eluna::Push(E->L, item->IsBag());
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef CLASSIC
|
||||
int IsCurrencyToken(lua_State* L, Item* item)
|
||||
int IsCurrencyToken(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsCurrencyToken());
|
||||
Eluna::Push(E->L, item->IsCurrencyToken());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int IsNotEmptyBag(lua_State* L, Item* item)
|
||||
int IsNotEmptyBag(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsNotEmptyBag());
|
||||
Eluna::Push(E->L, item->IsNotEmptyBag());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsBroken(lua_State* L, Item* item)
|
||||
int IsBroken(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsBroken());
|
||||
Eluna::Push(E->L, item->IsBroken());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int CanBeTraded(lua_State* L, Item* item)
|
||||
int CanBeTraded(Eluna* E, Item* item)
|
||||
{
|
||||
#if (defined(TBC) || defined(CLASSIC))
|
||||
Eluna::Push(L, item->CanBeTraded());
|
||||
Eluna::Push(E->L, item->CanBeTraded());
|
||||
#else
|
||||
bool mail = Eluna::CHECKVAL<bool>(L, 2, false);
|
||||
Eluna::Push(L, item->CanBeTraded(mail));
|
||||
bool mail = Eluna::CHECKVAL<bool>(E->L, 2, false);
|
||||
Eluna::Push(E->L, item->CanBeTraded(mail));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsInTrade(lua_State* L, Item* item)
|
||||
int IsInTrade(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsInTrade());
|
||||
Eluna::Push(E->L, item->IsInTrade());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsInBag(lua_State* L, Item* item)
|
||||
int IsInBag(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsInBag());
|
||||
Eluna::Push(E->L, item->IsInBag());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsEquipped(lua_State* L, Item* item)
|
||||
int IsEquipped(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsEquipped());
|
||||
Eluna::Push(E->L, item->IsEquipped());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int HasQuest(lua_State* L, Item* item)
|
||||
int HasQuest(Eluna* E, Item* item)
|
||||
{
|
||||
uint32 quest = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 quest = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, item->HasQuest(quest));
|
||||
Eluna::Push(E->L, item->HasQuest(quest));
|
||||
#else
|
||||
Eluna::Push(L, item->hasQuest(quest));
|
||||
Eluna::Push(E->L, item->hasQuest(quest));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsPotion(lua_State* L, Item* item)
|
||||
int IsPotion(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsPotion());
|
||||
Eluna::Push(E->L, item->IsPotion());
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef CATA
|
||||
int IsWeaponVellum(lua_State* L, Item* item)
|
||||
int IsWeaponVellum(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsWeaponVellum());
|
||||
Eluna::Push(E->L, item->IsWeaponVellum());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsArmorVellum(lua_State* L, Item* item)
|
||||
int IsArmorVellum(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsArmorVellum());
|
||||
Eluna::Push(E->L, item->IsArmorVellum());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int IsConjuredConsumable(lua_State* L, Item* item)
|
||||
int IsConjuredConsumable(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->IsConjuredConsumable());
|
||||
Eluna::Push(E->L, item->IsConjuredConsumable());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* int IsRefundExpired(lua_State* L, Item* item)// TODO: Implement core support
|
||||
* int IsRefundExpired(Eluna* E, Item* item)// TODO: Implement core support
|
||||
* {
|
||||
* Eluna::Push(L, item->IsRefundExpired());
|
||||
* Eluna::Push(E->L, item->IsRefundExpired());
|
||||
* return 1;
|
||||
* }
|
||||
*/
|
||||
@@ -167,11 +167,11 @@ namespace LuaItem
|
||||
* @param [LocaleConstant] locale = DEFAULT_LOCALE : locale to return the [Item]'s name in
|
||||
* @return string itemLink
|
||||
*/
|
||||
int GetItemLink(lua_State* L, Item* item)
|
||||
int GetItemLink(Eluna* E, Item* item)
|
||||
{
|
||||
uint8 locale = Eluna::CHECKVAL<uint8>(L, 2, DEFAULT_LOCALE);
|
||||
uint8 locale = Eluna::CHECKVAL<uint8>(E->L, 2, DEFAULT_LOCALE);
|
||||
if (locale >= TOTAL_LOCALES)
|
||||
return luaL_argerror(L, 2, "valid LocaleConstant expected");
|
||||
return luaL_argerror(E->L, 2, "valid LocaleConstant expected");
|
||||
|
||||
const ItemTemplate* temp = item->GetTemplate();
|
||||
std::string name = temp->Name1;
|
||||
@@ -223,200 +223,200 @@ namespace LuaItem
|
||||
item->GetItemRandomPropertyId() << ":" << item->GetItemSuffixFactor() << ":" <<
|
||||
(uint32)item->GetOwner()->getLevel() << "|h[" << name << "]|h|r";
|
||||
|
||||
Eluna::Push(L, oss.str());
|
||||
Eluna::Push(E->L, oss.str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetOwnerGUID(lua_State* L, Item* item)
|
||||
int GetOwnerGUID(Eluna* E, Item* item)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, item->GetOwnerGuid());
|
||||
Eluna::Push(E->L, item->GetOwnerGuid());
|
||||
#else
|
||||
Eluna::Push(L, item->GetOwnerGUID());
|
||||
Eluna::Push(E->L, item->GetOwnerGUID());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetOwner(lua_State* L, Item* item)
|
||||
int GetOwner(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetOwner());
|
||||
Eluna::Push(E->L, item->GetOwner());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetCount(lua_State* L, Item* item)
|
||||
int GetCount(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetCount());
|
||||
Eluna::Push(E->L, item->GetCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetMaxStackCount(lua_State* L, Item* item)
|
||||
int GetMaxStackCount(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetMaxStackCount());
|
||||
Eluna::Push(E->L, item->GetMaxStackCount());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetSlot(lua_State* L, Item* item)
|
||||
int GetSlot(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetSlot());
|
||||
Eluna::Push(E->L, item->GetSlot());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetBagSlot(lua_State* L, Item* item)
|
||||
int GetBagSlot(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetBagSlot());
|
||||
Eluna::Push(E->L, item->GetBagSlot());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetEnchantmentId(lua_State* L, Item* item)
|
||||
int GetEnchantmentId(Eluna* E, Item* item)
|
||||
{
|
||||
uint32 enchant_slot = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 enchant_slot = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
|
||||
if (enchant_slot >= MAX_INSPECTED_ENCHANTMENT_SLOT)
|
||||
return luaL_argerror(L, 2, "valid EnchantmentSlot expected");
|
||||
return luaL_argerror(E->L, 2, "valid EnchantmentSlot expected");
|
||||
|
||||
Eluna::Push(L, item->GetEnchantmentId(EnchantmentSlot(enchant_slot)));
|
||||
Eluna::Push(E->L, item->GetEnchantmentId(EnchantmentSlot(enchant_slot)));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetSpellId(lua_State* L, Item* item)
|
||||
int GetSpellId(Eluna* E, Item* item)
|
||||
{
|
||||
uint32 index = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 index = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
if (index >= MAX_ITEM_PROTO_SPELLS)
|
||||
return luaL_argerror(L, 2, "valid SpellIndex expected");
|
||||
return luaL_argerror(E->L, 2, "valid SpellIndex expected");
|
||||
|
||||
Eluna::Push(L, item->GetTemplate()->Spells[index].SpellId);
|
||||
Eluna::Push(E->L, item->GetTemplate()->Spells[index].SpellId);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetSpellTrigger(lua_State* L, Item* item)
|
||||
int GetSpellTrigger(Eluna* E, Item* item)
|
||||
{
|
||||
uint32 index = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 index = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
if (index >= MAX_ITEM_PROTO_SPELLS)
|
||||
return luaL_argerror(L, 2, "valid SpellIndex expected");
|
||||
return luaL_argerror(E->L, 2, "valid SpellIndex expected");
|
||||
|
||||
Eluna::Push(L, item->GetTemplate()->Spells[index].SpellTrigger);
|
||||
Eluna::Push(E->L, item->GetTemplate()->Spells[index].SpellTrigger);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetClass(lua_State* L, Item* item)
|
||||
int GetClass(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->Class);
|
||||
Eluna::Push(E->L, item->GetTemplate()->Class);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetSubClass(lua_State* L, Item* item)
|
||||
int GetSubClass(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->SubClass);
|
||||
Eluna::Push(E->L, item->GetTemplate()->SubClass);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetName(lua_State* L, Item* item)
|
||||
int GetName(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->Name1);
|
||||
Eluna::Push(E->L, item->GetTemplate()->Name1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetDisplayId(lua_State* L, Item* item)
|
||||
int GetDisplayId(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->DisplayInfoID);
|
||||
Eluna::Push(E->L, item->GetTemplate()->DisplayInfoID);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetQuality(lua_State* L, Item* item)
|
||||
int GetQuality(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->Quality);
|
||||
Eluna::Push(E->L, item->GetTemplate()->Quality);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetBuyCount(lua_State* L, Item* item)
|
||||
int GetBuyCount(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->BuyCount);
|
||||
Eluna::Push(E->L, item->GetTemplate()->BuyCount);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetBuyPrice(lua_State* L, Item* item)
|
||||
int GetBuyPrice(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->BuyPrice);
|
||||
Eluna::Push(E->L, item->GetTemplate()->BuyPrice);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetSellPrice(lua_State* L, Item* item)
|
||||
int GetSellPrice(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->SellPrice);
|
||||
Eluna::Push(E->L, item->GetTemplate()->SellPrice);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetInventoryType(lua_State* L, Item* item)
|
||||
int GetInventoryType(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->InventoryType);
|
||||
Eluna::Push(E->L, item->GetTemplate()->InventoryType);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetAllowableClass(lua_State* L, Item* item)
|
||||
int GetAllowableClass(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->AllowableClass);
|
||||
Eluna::Push(E->L, item->GetTemplate()->AllowableClass);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetAllowableRace(lua_State* L, Item* item)
|
||||
int GetAllowableRace(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->AllowableRace);
|
||||
Eluna::Push(E->L, item->GetTemplate()->AllowableRace);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetItemLevel(lua_State* L, Item* item)
|
||||
int GetItemLevel(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->ItemLevel);
|
||||
Eluna::Push(E->L, item->GetTemplate()->ItemLevel);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetRequiredLevel(lua_State* L, Item* item)
|
||||
int GetRequiredLevel(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->RequiredLevel);
|
||||
Eluna::Push(E->L, item->GetTemplate()->RequiredLevel);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef WOTLK
|
||||
int GetStatsCount(lua_State* L, Item* item)
|
||||
int GetStatsCount(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->StatsCount);
|
||||
Eluna::Push(E->L, item->GetTemplate()->StatsCount);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int GetRandomProperty(lua_State* L, Item* item)
|
||||
int GetRandomProperty(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->RandomProperty);
|
||||
Eluna::Push(E->L, item->GetTemplate()->RandomProperty);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef CLASSIC
|
||||
int GetRandomSuffix(lua_State* L, Item* item)
|
||||
int GetRandomSuffix(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->RandomSuffix);
|
||||
Eluna::Push(E->L, item->GetTemplate()->RandomSuffix);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int GetItemSet(lua_State* L, Item* item)
|
||||
int GetItemSet(Eluna* E, Item* item)
|
||||
{
|
||||
Eluna::Push(L, item->GetTemplate()->ItemSet);
|
||||
Eluna::Push(E->L, item->GetTemplate()->ItemSet);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetBagSize(lua_State* L, Item* item)
|
||||
int GetBagSize(Eluna* E, Item* item)
|
||||
{
|
||||
if (Bag* bag = item->ToBag())
|
||||
Eluna::Push(L, bag->GetBagSize());
|
||||
Eluna::Push(E->L, bag->GetBagSize());
|
||||
else
|
||||
Eluna::Push(L, 0);
|
||||
Eluna::Push(E->L, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* SETTERS */
|
||||
int SetOwner(lua_State* L, Item* item)
|
||||
int SetOwner(Eluna* E, Item* item)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
item->SetOwnerGuid(player->GET_GUID());
|
||||
#else
|
||||
@@ -425,75 +425,75 @@ namespace LuaItem
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetBinding(lua_State* L, Item* item)
|
||||
int SetBinding(Eluna* E, Item* item)
|
||||
{
|
||||
bool soulbound = Eluna::CHECKVAL<bool>(L, 2);
|
||||
bool soulbound = Eluna::CHECKVAL<bool>(E->L, 2);
|
||||
|
||||
item->SetBinding(soulbound);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetCount(lua_State* L, Item* item)
|
||||
int SetCount(Eluna* E, Item* item)
|
||||
{
|
||||
uint32 count = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 count = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
item->SetCount(count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetEnchantment(lua_State* L, Item* item)
|
||||
int SetEnchantment(Eluna* E, Item* item)
|
||||
{
|
||||
Player* owner = item->GetOwner();
|
||||
if (!owner)
|
||||
{
|
||||
Eluna::Push(L, false);
|
||||
Eluna::Push(E->L, false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint32 enchant = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 enchant = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
if (!sSpellItemEnchantmentStore.LookupEntry(enchant))
|
||||
{
|
||||
Eluna::Push(L, false);
|
||||
Eluna::Push(E->L, false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL<uint32>(L, 3);
|
||||
EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
if (slot >= MAX_INSPECTED_ENCHANTMENT_SLOT)
|
||||
return luaL_argerror(L, 2, "valid EnchantmentSlot expected");
|
||||
return luaL_argerror(E->L, 2, "valid EnchantmentSlot expected");
|
||||
|
||||
owner->ApplyEnchantment(item, slot, false);
|
||||
item->SetEnchantment(slot, enchant, 0, 0);
|
||||
owner->ApplyEnchantment(item, slot, true);
|
||||
Eluna::Push(L, true);
|
||||
Eluna::Push(E->L, true);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* OTHER */
|
||||
int ClearEnchantment(lua_State* L, Item* item)
|
||||
int ClearEnchantment(Eluna* E, Item* item)
|
||||
{
|
||||
Player* owner = item->GetOwner();
|
||||
if (!owner)
|
||||
{
|
||||
Eluna::Push(L, false);
|
||||
Eluna::Push(E->L, false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL<uint32>(L, 2);
|
||||
EnchantmentSlot slot = (EnchantmentSlot)Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
if (slot >= MAX_INSPECTED_ENCHANTMENT_SLOT)
|
||||
return luaL_argerror(L, 2, "valid EnchantmentSlot expected");
|
||||
return luaL_argerror(E->L, 2, "valid EnchantmentSlot expected");
|
||||
|
||||
if (!item->GetEnchantmentId(slot))
|
||||
{
|
||||
Eluna::Push(L, false);
|
||||
Eluna::Push(E->L, false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
owner->ApplyEnchantment(item, slot, false);
|
||||
item->ClearEnchantment(slot);
|
||||
Eluna::Push(L, true);
|
||||
Eluna::Push(E->L, true);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int SaveToDB(lua_State* /*L*/, Item* item)
|
||||
int SaveToDB(Eluna* /*E*/, Item* item)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
item->SaveToDB();
|
||||
|
||||
113
LuaEngine.cpp
113
LuaEngine.cpp
@@ -32,11 +32,14 @@ std::string Eluna::lua_folderpath;
|
||||
std::string Eluna::lua_requirepath;
|
||||
Eluna* Eluna::GEluna = NULL;
|
||||
bool Eluna::reload = false;
|
||||
bool Eluna::initialized = false;
|
||||
|
||||
extern void RegisterFunctions(lua_State* L);
|
||||
extern void RegisterFunctions(Eluna* E);
|
||||
|
||||
void Eluna::Initialize()
|
||||
{
|
||||
ASSERT(!initialized);
|
||||
|
||||
uint32 oldMSTime = ElunaUtil::GetCurrTime();
|
||||
|
||||
lua_scripts.clear();
|
||||
@@ -55,23 +58,40 @@ void Eluna::Initialize()
|
||||
|
||||
ELUNA_LOG_DEBUG("[Eluna]: Loaded %u scripts in %u ms", uint32(lua_scripts.size() + lua_extensions.size()), ElunaUtil::GetTimeDiff(oldMSTime));
|
||||
|
||||
initialized = true;
|
||||
|
||||
// Create global eluna
|
||||
new Eluna();
|
||||
GEluna = new Eluna();
|
||||
}
|
||||
|
||||
void Eluna::Uninitialize()
|
||||
{
|
||||
ASSERT(initialized);
|
||||
|
||||
delete GEluna;
|
||||
GEluna = NULL;
|
||||
|
||||
lua_scripts.clear();
|
||||
lua_extensions.clear();
|
||||
|
||||
initialized = false;
|
||||
}
|
||||
|
||||
void Eluna::ReloadEluna()
|
||||
{
|
||||
eWorld->SendServerMessage(SERVER_MSG_STRING, "Reloading Eluna...");
|
||||
|
||||
EventMgr::ProcessorSet oldProcessors;
|
||||
{
|
||||
EventMgr::ReadGuard lock(sEluna->eventMgr->GetLock());
|
||||
oldProcessors = sEluna->eventMgr->processors;
|
||||
}
|
||||
Uninitialize();
|
||||
Initialize();
|
||||
{
|
||||
EventMgr::WriteGuard lock(sEluna->eventMgr->GetLock());
|
||||
sEluna->eventMgr->processors.insert(oldProcessors.begin(), oldProcessors.end());
|
||||
}
|
||||
|
||||
// in multithread foreach: run scripts
|
||||
sEluna->RunScripts();
|
||||
@@ -92,6 +112,8 @@ void Eluna::ReloadEluna()
|
||||
Eluna::Eluna() :
|
||||
L(luaL_newstate()),
|
||||
|
||||
event_level(0),
|
||||
|
||||
eventMgr(NULL),
|
||||
|
||||
ServerEventBindings(new EventBind<HookMgr::ServerEvents>("ServerEvents", *this)),
|
||||
@@ -112,7 +134,7 @@ playerGossipBindings(new EntryBind<HookMgr::GossipEvents>("GossipEvents (player)
|
||||
{
|
||||
// open base lua
|
||||
luaL_openlibs(L);
|
||||
RegisterFunctions(L);
|
||||
RegisterFunctions(this);
|
||||
|
||||
// Create hidden table with weak values
|
||||
lua_newtable(L);
|
||||
@@ -120,7 +142,7 @@ playerGossipBindings(new EntryBind<HookMgr::GossipEvents>("GossipEvents (player)
|
||||
lua_pushstring(L, "v");
|
||||
lua_setfield(L, -2, "__mode");
|
||||
lua_setmetatable(L, -2);
|
||||
userdata_table = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_setglobal(L, ELUNA_OBJECT_STORE);
|
||||
|
||||
// Set lua require folder paths (scripts folder structure)
|
||||
lua_getglobal(L, "package");
|
||||
@@ -131,12 +153,11 @@ playerGossipBindings(new EntryBind<HookMgr::GossipEvents>("GossipEvents (player)
|
||||
lua_pop(L, 1);
|
||||
|
||||
// Replace this with map insert if making multithread version
|
||||
ASSERT(!Eluna::GEluna);
|
||||
Eluna::GEluna = this;
|
||||
//
|
||||
|
||||
// Set event manager. Must be after setting sEluna
|
||||
eventMgr = new EventMgr();
|
||||
eventMgr->globalProcessor = new ElunaEventProcessor(NULL);
|
||||
// on multithread have a map of state pointers and here insert this pointer to the map and then save a pointer of that pointer to the EventMgr
|
||||
eventMgr = new EventMgr(&Eluna::GEluna);
|
||||
}
|
||||
|
||||
Eluna::~Eluna()
|
||||
@@ -144,9 +165,10 @@ Eluna::~Eluna()
|
||||
OnLuaStateClose();
|
||||
|
||||
delete eventMgr;
|
||||
eventMgr = NULL;
|
||||
|
||||
// Replace this with map remove if making multithread version
|
||||
Eluna::GEluna = NULL;
|
||||
//
|
||||
|
||||
delete ServerEventBindings;
|
||||
delete PlayerEventBindings;
|
||||
@@ -164,6 +186,22 @@ Eluna::~Eluna()
|
||||
delete playerGossipBindings;
|
||||
delete BGEventBindings;
|
||||
|
||||
ServerEventBindings = NULL;
|
||||
PlayerEventBindings = NULL;
|
||||
GuildEventBindings = NULL;
|
||||
GroupEventBindings = NULL;
|
||||
VehicleEventBindings = NULL;
|
||||
|
||||
PacketEventBindings = NULL;
|
||||
CreatureEventBindings = NULL;
|
||||
CreatureGossipBindings = NULL;
|
||||
GameObjectEventBindings = NULL;
|
||||
GameObjectGossipBindings = NULL;
|
||||
ItemEventBindings = NULL;
|
||||
ItemGossipBindings = NULL;
|
||||
playerGossipBindings = NULL;
|
||||
BGEventBindings = NULL;
|
||||
|
||||
// Must close lua state after deleting stores and mgr
|
||||
lua_close(L);
|
||||
}
|
||||
@@ -357,20 +395,19 @@ void Eluna::RunScripts()
|
||||
OnLuaStateOpen();
|
||||
}
|
||||
|
||||
void Eluna::RemoveRef(const void* obj)
|
||||
void Eluna::InvalidateObjects()
|
||||
{
|
||||
if (!sEluna)
|
||||
return;
|
||||
lua_rawgeti(sEluna->L, LUA_REGISTRYINDEX, sEluna->userdata_table);
|
||||
lua_pushfstring(sEluna->L, "%p", obj);
|
||||
lua_gettable(sEluna->L, -2);
|
||||
if (!lua_isnoneornil(sEluna->L, -1))
|
||||
lua_getglobal(L, ELUNA_OBJECT_STORE);
|
||||
ASSERT(lua_istable(L, -1));
|
||||
|
||||
lua_pushnil(L);
|
||||
while (lua_next(L, -2))
|
||||
{
|
||||
lua_pushfstring(sEluna->L, "%p", obj);
|
||||
lua_pushnil(sEluna->L);
|
||||
lua_settable(sEluna->L, -4);
|
||||
if (ElunaObject* elunaObj = CHECKOBJ<ElunaObject>(L, -1, false))
|
||||
elunaObj->Invalidate();
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
lua_pop(sEluna->L, 2);
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
|
||||
void Eluna::report(lua_State* L)
|
||||
@@ -380,7 +417,7 @@ void Eluna::report(lua_State* L)
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
|
||||
void Eluna::ExecuteCall(lua_State* L, int params, int res)
|
||||
void Eluna::ExecuteCall(int params, int res)
|
||||
{
|
||||
int top = lua_gettop(L);
|
||||
int type = lua_type(L, top - params);
|
||||
@@ -392,8 +429,10 @@ void Eluna::ExecuteCall(lua_State* L, int params, int res)
|
||||
return;
|
||||
}
|
||||
|
||||
++event_level;
|
||||
if (lua_pcall(L, params, res, 0))
|
||||
report(L);
|
||||
--event_level;
|
||||
}
|
||||
|
||||
void Eluna::Push(lua_State* L)
|
||||
@@ -518,9 +557,9 @@ void Eluna::Push(lua_State* L, Object const* obj)
|
||||
}
|
||||
}
|
||||
|
||||
static int32 CheckIntegerRange(lua_State *L, int narg, int32 min, int32 max)
|
||||
static int32 CheckIntegerRange(lua_State* L, int narg, int32 min, int32 max)
|
||||
{
|
||||
int64 value = luaL_checknumber(L, narg);
|
||||
int64 value = static_cast<int64>(luaL_checknumber(L, narg));
|
||||
char error_buffer[64];
|
||||
|
||||
if (value > max)
|
||||
@@ -535,12 +574,12 @@ static int32 CheckIntegerRange(lua_State *L, int narg, int32 min, int32 max)
|
||||
return luaL_argerror(L, narg, error_buffer);
|
||||
}
|
||||
|
||||
return value;
|
||||
return static_cast<int32>(value);
|
||||
}
|
||||
|
||||
static uint32 CheckUnsignedRange(lua_State *L, int narg, uint32 max)
|
||||
static uint32 CheckUnsignedRange(lua_State* L, int narg, uint32 max)
|
||||
{
|
||||
int64 value = luaL_checknumber(L, narg);
|
||||
int64 value = static_cast<int64>(luaL_checknumber(L, narg));
|
||||
char error_buffer[64];
|
||||
|
||||
if (value < 0)
|
||||
@@ -552,7 +591,7 @@ static uint32 CheckUnsignedRange(lua_State *L, int narg, uint32 max)
|
||||
return luaL_argerror(L, narg, error_buffer);
|
||||
}
|
||||
|
||||
return value;
|
||||
return static_cast<uint32>(value);
|
||||
}
|
||||
|
||||
template<> bool Eluna::CHECKVAL<bool>(lua_State* L, int narg)
|
||||
@@ -626,11 +665,11 @@ template<> uint64 Eluna::CHECKVAL<uint64>(lua_State* L, int narg)
|
||||
return l;
|
||||
}
|
||||
|
||||
#define TEST_OBJ(T, O, E, F)\
|
||||
#define TEST_OBJ(T, O, R, F)\
|
||||
{\
|
||||
if (!O || !O->F())\
|
||||
{\
|
||||
if (E)\
|
||||
if (R)\
|
||||
{\
|
||||
std::string errmsg(ElunaTemplate<T>::tname);\
|
||||
errmsg += " expected";\
|
||||
@@ -668,6 +707,22 @@ template<> Corpse* Eluna::CHECKOBJ<Corpse>(lua_State* L, int narg, bool error)
|
||||
}
|
||||
#undef TEST_OBJ
|
||||
|
||||
template<> ElunaObject* Eluna::CHECKOBJ<ElunaObject>(lua_State* L, int narg, bool error)
|
||||
{
|
||||
ElunaObject** ptrHold = static_cast<ElunaObject**>(lua_touserdata(L, narg));
|
||||
if (!ptrHold)
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
char buff[256];
|
||||
snprintf(buff, 256, "Error fetching object index %i", narg);
|
||||
luaL_argerror(L, narg, buff);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
return *ptrHold;
|
||||
}
|
||||
|
||||
// Saves the function reference ID given to the register type's store for given entry under the given event
|
||||
void Eluna::Register(uint8 regtype, uint32 id, uint32 evt, int functionRef)
|
||||
{
|
||||
|
||||
57
LuaEngine.h
57
LuaEngine.h
@@ -82,6 +82,7 @@ typedef VehicleInfo Vehicle;
|
||||
|
||||
struct lua_State;
|
||||
class EventMgr;
|
||||
class ElunaObject;
|
||||
template<typename T>
|
||||
class ElunaTemplate;
|
||||
template<typename T>
|
||||
@@ -97,6 +98,8 @@ struct LuaScript
|
||||
std::string modulepath;
|
||||
};
|
||||
|
||||
#define ELUNA_OBJECT_STORE "Eluna Object Store"
|
||||
|
||||
class Eluna
|
||||
{
|
||||
private:
|
||||
@@ -109,9 +112,10 @@ public:
|
||||
|
||||
static Eluna* GEluna;
|
||||
static bool reload;
|
||||
static bool initialized;
|
||||
|
||||
lua_State* L;
|
||||
int userdata_table;
|
||||
uint32 event_level;
|
||||
|
||||
EventMgr* eventMgr;
|
||||
|
||||
@@ -147,22 +151,22 @@ public:
|
||||
static void AddScriptPath(std::string filename, std::string fullpath);
|
||||
|
||||
static void report(lua_State*);
|
||||
static void ExecuteCall(lua_State* L, int params, int res);
|
||||
void ExecuteCall(int params, int res);
|
||||
void Register(uint8 reg, uint32 id, uint32 evt, int func);
|
||||
void RunScripts();
|
||||
static void RemoveRef(const void* obj);
|
||||
void InvalidateObjects();
|
||||
|
||||
// Pushes
|
||||
static void Push(lua_State*); // nil
|
||||
static void Push(lua_State*, const uint64);
|
||||
static void Push(lua_State*, const int64);
|
||||
static void Push(lua_State*, const uint32);
|
||||
static void Push(lua_State*, const int32);
|
||||
static void Push(lua_State*, const bool);
|
||||
static void Push(lua_State*, const float);
|
||||
static void Push(lua_State*, const double);
|
||||
static void Push(lua_State*, const char*);
|
||||
static void Push(lua_State*, const std::string);
|
||||
static void Push(lua_State* L); // nil
|
||||
static void Push(lua_State* L, const uint64);
|
||||
static void Push(lua_State* L, const int64);
|
||||
static void Push(lua_State* L, const uint32);
|
||||
static void Push(lua_State* L, const int32);
|
||||
static void Push(lua_State* L, const bool);
|
||||
static void Push(lua_State* L, const float);
|
||||
static void Push(lua_State* L, const double);
|
||||
static void Push(lua_State* L, const char*);
|
||||
static void Push(lua_State* L, const std::string);
|
||||
template<typename T> static void Push(lua_State* L, T const* ptr)
|
||||
{
|
||||
ElunaTemplate<T>::push(L, ptr);
|
||||
@@ -185,9 +189,6 @@ public:
|
||||
}
|
||||
|
||||
CreatureAI* GetAI(Creature* creature);
|
||||
#ifdef TRINITY
|
||||
GameObjectAI* GetAI(GameObject* gameObject);
|
||||
#endif
|
||||
|
||||
/* Custom */
|
||||
bool OnCommand(Player* player, const char* text);
|
||||
@@ -224,6 +225,28 @@ public:
|
||||
uint32 GetDialogStatus(Player* pPlayer, Creature* pCreature);
|
||||
void OnSummoned(Creature* creature, Unit* summoner);
|
||||
|
||||
void UpdateAI(Creature* me, const uint32 diff);
|
||||
void EnterCombat(Creature* me, Unit* target);
|
||||
void DamageTaken(Creature* me, Unit* attacker, uint32& damage); void JustDied(Creature* me, Unit* killer);
|
||||
void KilledUnit(Creature* me, Unit* victim);
|
||||
void JustSummoned(Creature* me, Creature* summon);
|
||||
void SummonedCreatureDespawn(Creature* me, Creature* summon);
|
||||
void MovementInform(Creature* me, uint32 type, uint32 id);
|
||||
void AttackStart(Creature* me, Unit* target);
|
||||
void EnterEvadeMode(Creature* me);
|
||||
void AttackedBy(Creature* me, Unit* attacker);
|
||||
void JustRespawned(Creature* me);
|
||||
void JustReachedHome(Creature* me);
|
||||
void ReceiveEmote(Creature* me, Player* player, uint32 emoteId);
|
||||
void CorpseRemoved(Creature* me, uint32& respawnDelay);
|
||||
void MoveInLineOfSight(Creature* me, Unit* who);
|
||||
void On_Reset(Creature* me);
|
||||
void SpellHit(Creature* me, Unit* caster, SpellInfo const* spell);
|
||||
void SpellHitTarget(Creature* me, Unit* target, SpellInfo const* spell);
|
||||
void SummonedCreatureDies(Creature* me, Creature* summon, Unit* killer);
|
||||
void OwnerAttackedBy(Creature* me, Unit* attacker);
|
||||
void OwnerAttacked(Creature* me, Unit* target);
|
||||
|
||||
/* GameObject */
|
||||
bool OnDummyEffect(Unit* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget);
|
||||
bool OnGossipHello(Player* pPlayer, GameObject* pGameObject);
|
||||
@@ -361,7 +384,7 @@ template<> Player* Eluna::CHECKOBJ<Player>(lua_State* L, int narg, bool error);
|
||||
template<> Creature* Eluna::CHECKOBJ<Creature>(lua_State* L, int narg, bool error);
|
||||
template<> GameObject* Eluna::CHECKOBJ<GameObject>(lua_State* L, int narg, bool error);
|
||||
template<> Corpse* Eluna::CHECKOBJ<Corpse>(lua_State* L, int narg, bool error);
|
||||
template<> ElunaObject* Eluna::CHECKOBJ<ElunaObject>(lua_State* L, int narg, bool error);
|
||||
|
||||
#define sEluna Eluna::GEluna
|
||||
|
||||
#endif
|
||||
|
||||
281
LuaFunctions.cpp
281
LuaFunctions.cpp
@@ -38,91 +38,93 @@ extern "C"
|
||||
#include "VehicleMethods.h"
|
||||
#include "BattleGroundMethods.h"
|
||||
|
||||
void RegisterGlobals(lua_State* L)
|
||||
ElunaGlobal::ElunaRegister GlobalMethods[] =
|
||||
{
|
||||
// Hooks
|
||||
lua_register(L, "RegisterPacketEvent", &LuaGlobalFunctions::RegisterPacketEvent); // RegisterPacketEvent(opcodeID, event, function)
|
||||
lua_register(L, "RegisterServerEvent", &LuaGlobalFunctions::RegisterServerEvent); // RegisterServerEvent(event, function)
|
||||
lua_register(L, "RegisterPlayerEvent", &LuaGlobalFunctions::RegisterPlayerEvent); // RegisterPlayerEvent(event, function)
|
||||
lua_register(L, "RegisterGuildEvent", &LuaGlobalFunctions::RegisterGuildEvent); // RegisterGuildEvent(event, function)
|
||||
lua_register(L, "RegisterGroupEvent", &LuaGlobalFunctions::RegisterGroupEvent); // RegisterGroupEvent(event, function)
|
||||
lua_register(L, "RegisterCreatureEvent", &LuaGlobalFunctions::RegisterCreatureEvent); // RegisterCreatureEvent(entry, event, function)
|
||||
lua_register(L, "RegisterCreatureGossipEvent", &LuaGlobalFunctions::RegisterCreatureGossipEvent); // RegisterCreatureGossipEvent(entry, event, function)
|
||||
lua_register(L, "RegisterGameObjectEvent", &LuaGlobalFunctions::RegisterGameObjectEvent); // RegisterGameObjectEvent(entry, event, function)
|
||||
lua_register(L, "RegisterGameObjectGossipEvent", &LuaGlobalFunctions::RegisterGameObjectGossipEvent); // RegisterGameObjectGossipEvent(entry, event, function)
|
||||
lua_register(L, "RegisterItemEvent", &LuaGlobalFunctions::RegisterItemEvent); // RegisterItemEvent(entry, event, function)
|
||||
lua_register(L, "RegisterItemGossipEvent", &LuaGlobalFunctions::RegisterItemGossipEvent); // RegisterItemGossipEvent(entry, event, function)
|
||||
lua_register(L, "RegisterPlayerGossipEvent", &LuaGlobalFunctions::RegisterPlayerGossipEvent); // RegisterPlayerGossipEvent(menu_id, event, function)
|
||||
lua_register(L, "RegisterBGEvent", &LuaGlobalFunctions::RegisterBGEvent); // RegisterBGEvent(event, function)
|
||||
{ "RegisterPacketEvent", &LuaGlobalFunctions::RegisterPacketEvent }, // RegisterPacketEvent(opcodeID, event, function)
|
||||
{ "RegisterServerEvent", &LuaGlobalFunctions::RegisterServerEvent }, // RegisterServerEvent(event, function)
|
||||
{ "RegisterPlayerEvent", &LuaGlobalFunctions::RegisterPlayerEvent }, // RegisterPlayerEvent(event, function)
|
||||
{ "RegisterGuildEvent", &LuaGlobalFunctions::RegisterGuildEvent }, // RegisterGuildEvent(event, function)
|
||||
{ "RegisterGroupEvent", &LuaGlobalFunctions::RegisterGroupEvent }, // RegisterGroupEvent(event, function)
|
||||
{ "RegisterCreatureEvent", &LuaGlobalFunctions::RegisterCreatureEvent }, // RegisterCreatureEvent(entry, event, function)
|
||||
{ "RegisterCreatureGossipEvent", &LuaGlobalFunctions::RegisterCreatureGossipEvent }, // RegisterCreatureGossipEvent(entry, event, function)
|
||||
{ "RegisterGameObjectEvent", &LuaGlobalFunctions::RegisterGameObjectEvent }, // RegisterGameObjectEvent(entry, event, function)
|
||||
{ "RegisterGameObjectGossipEvent", &LuaGlobalFunctions::RegisterGameObjectGossipEvent }, // RegisterGameObjectGossipEvent(entry, event, function)
|
||||
{ "RegisterItemEvent", &LuaGlobalFunctions::RegisterItemEvent }, // RegisterItemEvent(entry, event, function)
|
||||
{ "RegisterItemGossipEvent", &LuaGlobalFunctions::RegisterItemGossipEvent }, // RegisterItemGossipEvent(entry, event, function)
|
||||
{ "RegisterPlayerGossipEvent", &LuaGlobalFunctions::RegisterPlayerGossipEvent }, // RegisterPlayerGossipEvent(menu_id, event, function)
|
||||
{ "RegisterBGEvent", &LuaGlobalFunctions::RegisterBGEvent }, // RegisterBGEvent(event, function)
|
||||
|
||||
// Getters
|
||||
lua_register(L, "GetLuaEngine", &LuaGlobalFunctions::GetLuaEngine);
|
||||
lua_register(L, "GetCoreName", &LuaGlobalFunctions::GetCoreName);
|
||||
lua_register(L, "GetCoreVersion", &LuaGlobalFunctions::GetCoreVersion);
|
||||
lua_register(L, "GetCoreExpansion", &LuaGlobalFunctions::GetCoreExpansion);
|
||||
lua_register(L, "GetQuest", &LuaGlobalFunctions::GetQuest);
|
||||
lua_register(L, "GetPlayerByGUID", &LuaGlobalFunctions::GetPlayerByGUID);
|
||||
lua_register(L, "GetPlayerByName", &LuaGlobalFunctions::GetPlayerByName);
|
||||
lua_register(L, "GetGameTime", &LuaGlobalFunctions::GetGameTime);
|
||||
lua_register(L, "GetPlayersInWorld", &LuaGlobalFunctions::GetPlayersInWorld);
|
||||
lua_register(L, "GetPlayersInMap", &LuaGlobalFunctions::GetPlayersInMap);
|
||||
lua_register(L, "GetGuildByName", &LuaGlobalFunctions::GetGuildByName);
|
||||
lua_register(L, "GetGuildByLeaderGUID", &LuaGlobalFunctions::GetGuildByLeaderGUID);
|
||||
lua_register(L, "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount);
|
||||
lua_register(L, "GetPlayerGUID", &LuaGlobalFunctions::GetPlayerGUID);
|
||||
lua_register(L, "GetItemGUID", &LuaGlobalFunctions::GetItemGUID);
|
||||
lua_register(L, "GetObjectGUID", &LuaGlobalFunctions::GetObjectGUID);
|
||||
lua_register(L, "GetUnitGUID", &LuaGlobalFunctions::GetUnitGUID);
|
||||
lua_register(L, "GetGUIDLow", &LuaGlobalFunctions::GetGUIDLow);
|
||||
lua_register(L, "GetGUIDType", &LuaGlobalFunctions::GetGUIDType);
|
||||
lua_register(L, "GetGUIDEntry", &LuaGlobalFunctions::GetGUIDEntry);
|
||||
lua_register(L, "GetAreaName", &LuaGlobalFunctions::GetAreaName);
|
||||
lua_register(L, "bit_not", &LuaGlobalFunctions::bit_not);
|
||||
lua_register(L, "bit_xor", &LuaGlobalFunctions::bit_xor);
|
||||
lua_register(L, "bit_rshift", &LuaGlobalFunctions::bit_rshift);
|
||||
lua_register(L, "bit_lshift", &LuaGlobalFunctions::bit_lshift);
|
||||
lua_register(L, "bit_or", &LuaGlobalFunctions::bit_or);
|
||||
lua_register(L, "bit_and", &LuaGlobalFunctions::bit_and);
|
||||
lua_register(L, "GetItemLink", &LuaGlobalFunctions::GetItemLink);
|
||||
lua_register(L, "GetMapById", &LuaGlobalFunctions::GetMapById);
|
||||
{ "GetLuaEngine", &LuaGlobalFunctions::GetLuaEngine },
|
||||
{ "GetCoreName", &LuaGlobalFunctions::GetCoreName },
|
||||
{ "GetCoreVersion", &LuaGlobalFunctions::GetCoreVersion },
|
||||
{ "GetCoreExpansion", &LuaGlobalFunctions::GetCoreExpansion },
|
||||
{ "GetQuest", &LuaGlobalFunctions::GetQuest },
|
||||
{ "GetPlayerByGUID", &LuaGlobalFunctions::GetPlayerByGUID },
|
||||
{ "GetPlayerByName", &LuaGlobalFunctions::GetPlayerByName },
|
||||
{ "GetGameTime", &LuaGlobalFunctions::GetGameTime },
|
||||
{ "GetPlayersInWorld", &LuaGlobalFunctions::GetPlayersInWorld },
|
||||
{ "GetPlayersInMap", &LuaGlobalFunctions::GetPlayersInMap },
|
||||
{ "GetGuildByName", &LuaGlobalFunctions::GetGuildByName },
|
||||
{ "GetGuildByLeaderGUID", &LuaGlobalFunctions::GetGuildByLeaderGUID },
|
||||
{ "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount },
|
||||
{ "GetPlayerGUID", &LuaGlobalFunctions::GetPlayerGUID },
|
||||
{ "GetItemGUID", &LuaGlobalFunctions::GetItemGUID },
|
||||
{ "GetObjectGUID", &LuaGlobalFunctions::GetObjectGUID },
|
||||
{ "GetUnitGUID", &LuaGlobalFunctions::GetUnitGUID },
|
||||
{ "GetGUIDLow", &LuaGlobalFunctions::GetGUIDLow },
|
||||
{ "GetGUIDType", &LuaGlobalFunctions::GetGUIDType },
|
||||
{ "GetGUIDEntry", &LuaGlobalFunctions::GetGUIDEntry },
|
||||
{ "GetAreaName", &LuaGlobalFunctions::GetAreaName },
|
||||
{ "bit_not", &LuaGlobalFunctions::bit_not },
|
||||
{ "bit_xor", &LuaGlobalFunctions::bit_xor },
|
||||
{ "bit_rshift", &LuaGlobalFunctions::bit_rshift },
|
||||
{ "bit_lshift", &LuaGlobalFunctions::bit_lshift },
|
||||
{ "bit_or", &LuaGlobalFunctions::bit_or },
|
||||
{ "bit_and", &LuaGlobalFunctions::bit_and },
|
||||
{ "GetItemLink", &LuaGlobalFunctions::GetItemLink },
|
||||
{ "GetMapById", &LuaGlobalFunctions::GetMapById },
|
||||
|
||||
// Boolean
|
||||
lua_register(L, "IsInventoryPos", &LuaGlobalFunctions::IsInventoryPos);
|
||||
lua_register(L, "IsEquipmentPos", &LuaGlobalFunctions::IsEquipmentPos);
|
||||
lua_register(L, "IsBankPos", &LuaGlobalFunctions::IsBankPos);
|
||||
lua_register(L, "IsBagPos", &LuaGlobalFunctions::IsBagPos);
|
||||
{ "IsInventoryPos", &LuaGlobalFunctions::IsInventoryPos },
|
||||
{ "IsEquipmentPos", &LuaGlobalFunctions::IsEquipmentPos },
|
||||
{ "IsBankPos", &LuaGlobalFunctions::IsBankPos },
|
||||
{ "IsBagPos", &LuaGlobalFunctions::IsBagPos },
|
||||
|
||||
// Other
|
||||
lua_register(L, "ReloadEluna", &LuaGlobalFunctions::ReloadEluna);
|
||||
lua_register(L, "SendWorldMessage", &LuaGlobalFunctions::SendWorldMessage);
|
||||
lua_register(L, "WorldDBQuery", &LuaGlobalFunctions::WorldDBQuery);
|
||||
lua_register(L, "WorldDBExecute", &LuaGlobalFunctions::WorldDBExecute);
|
||||
lua_register(L, "CharDBQuery", &LuaGlobalFunctions::CharDBQuery);
|
||||
lua_register(L, "CharDBExecute", &LuaGlobalFunctions::CharDBExecute);
|
||||
lua_register(L, "AuthDBQuery", &LuaGlobalFunctions::AuthDBQuery);
|
||||
lua_register(L, "AuthDBExecute", &LuaGlobalFunctions::AuthDBExecute);
|
||||
lua_register(L, "CreateLuaEvent", &LuaGlobalFunctions::CreateLuaEvent);
|
||||
lua_register(L, "RemoveEventById", &LuaGlobalFunctions::RemoveEventById);
|
||||
lua_register(L, "RemoveEvents", &LuaGlobalFunctions::RemoveEvents);
|
||||
lua_register(L, "PerformIngameSpawn", &LuaGlobalFunctions::PerformIngameSpawn);
|
||||
lua_register(L, "CreatePacket", &LuaGlobalFunctions::CreatePacket);
|
||||
lua_register(L, "AddVendorItem", &LuaGlobalFunctions::AddVendorItem);
|
||||
lua_register(L, "VendorRemoveItem", &LuaGlobalFunctions::VendorRemoveItem);
|
||||
lua_register(L, "VendorRemoveAllItems", &LuaGlobalFunctions::VendorRemoveAllItems);
|
||||
lua_register(L, "Kick", &LuaGlobalFunctions::Kick);
|
||||
lua_register(L, "Ban", &LuaGlobalFunctions::Ban);
|
||||
lua_register(L, "SaveAllPlayers", &LuaGlobalFunctions::SaveAllPlayers);
|
||||
lua_register(L, "SendMail", &LuaGlobalFunctions::SendMail);
|
||||
lua_register(L, "AddTaxiPath", &LuaGlobalFunctions::AddTaxiPath);
|
||||
lua_register(L, "AddCorpse", &LuaGlobalFunctions::AddCorpse);
|
||||
lua_register(L, "RemoveCorpse", &LuaGlobalFunctions::RemoveCorpse);
|
||||
lua_register(L, "ConvertCorpseForPlayer", &LuaGlobalFunctions::ConvertCorpseForPlayer);
|
||||
lua_register(L, "RemoveOldCorpses", &LuaGlobalFunctions::RemoveOldCorpses);
|
||||
lua_register(L, "FindWeather", &LuaGlobalFunctions::FindWeather);
|
||||
lua_register(L, "AddWeather", &LuaGlobalFunctions::AddWeather);
|
||||
lua_register(L, "RemoveWeather", &LuaGlobalFunctions::RemoveWeather);
|
||||
lua_register(L, "SendFineWeatherToPlayer", &LuaGlobalFunctions::SendFineWeatherToPlayer);
|
||||
}
|
||||
{ "ReloadEluna", &LuaGlobalFunctions::ReloadEluna },
|
||||
{ "SendWorldMessage", &LuaGlobalFunctions::SendWorldMessage },
|
||||
{ "WorldDBQuery", &LuaGlobalFunctions::WorldDBQuery },
|
||||
{ "WorldDBExecute", &LuaGlobalFunctions::WorldDBExecute },
|
||||
{ "CharDBQuery", &LuaGlobalFunctions::CharDBQuery },
|
||||
{ "CharDBExecute", &LuaGlobalFunctions::CharDBExecute },
|
||||
{ "AuthDBQuery", &LuaGlobalFunctions::AuthDBQuery },
|
||||
{ "AuthDBExecute", &LuaGlobalFunctions::AuthDBExecute },
|
||||
{ "CreateLuaEvent", &LuaGlobalFunctions::CreateLuaEvent },
|
||||
{ "RemoveEventById", &LuaGlobalFunctions::RemoveEventById },
|
||||
{ "RemoveEvents", &LuaGlobalFunctions::RemoveEvents },
|
||||
{ "PerformIngameSpawn", &LuaGlobalFunctions::PerformIngameSpawn },
|
||||
{ "CreatePacket", &LuaGlobalFunctions::CreatePacket },
|
||||
{ "AddVendorItem", &LuaGlobalFunctions::AddVendorItem },
|
||||
{ "VendorRemoveItem", &LuaGlobalFunctions::VendorRemoveItem },
|
||||
{ "VendorRemoveAllItems", &LuaGlobalFunctions::VendorRemoveAllItems },
|
||||
{ "Kick", &LuaGlobalFunctions::Kick },
|
||||
{ "Ban", &LuaGlobalFunctions::Ban },
|
||||
{ "SaveAllPlayers", &LuaGlobalFunctions::SaveAllPlayers },
|
||||
{ "SendMail", &LuaGlobalFunctions::SendMail },
|
||||
{ "AddTaxiPath", &LuaGlobalFunctions::AddTaxiPath },
|
||||
{ "AddCorpse", &LuaGlobalFunctions::AddCorpse },
|
||||
{ "RemoveCorpse", &LuaGlobalFunctions::RemoveCorpse },
|
||||
{ "ConvertCorpseForPlayer", &LuaGlobalFunctions::ConvertCorpseForPlayer },
|
||||
{ "RemoveOldCorpses", &LuaGlobalFunctions::RemoveOldCorpses },
|
||||
{ "FindWeather", &LuaGlobalFunctions::FindWeather },
|
||||
{ "AddWeather", &LuaGlobalFunctions::AddWeather },
|
||||
{ "RemoveWeather", &LuaGlobalFunctions::RemoveWeather },
|
||||
{ "SendFineWeatherToPlayer", &LuaGlobalFunctions::SendFineWeatherToPlayer },
|
||||
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
ElunaRegister<Object> ObjectMethods[] =
|
||||
{
|
||||
@@ -1246,96 +1248,99 @@ template<typename T> const char* ElunaTemplate<T>::tname = NULL;
|
||||
template<typename T> bool ElunaTemplate<T>::manageMemory = false;
|
||||
#if (!defined(TBC) && !defined(CLASSIC))
|
||||
// fix compile error about accessing vehicle destructor
|
||||
template<> int ElunaTemplate<Vehicle>::gcT(lua_State* /*L*/)
|
||||
template<> int ElunaTemplate<Vehicle>::gcT(lua_State* L)
|
||||
{
|
||||
// If assert fails, should code mem management here or flag Vehicles not mem managed
|
||||
ASSERT(!manageMemory);
|
||||
|
||||
// Get object pointer (and check type, no error)
|
||||
ElunaObject** ptrHold = static_cast<ElunaObject**>(luaL_testudata(L, -1, tname));
|
||||
if (ptrHold)
|
||||
{
|
||||
delete *ptrHold;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void RegisterFunctions(lua_State* L)
|
||||
void RegisterFunctions(Eluna* E)
|
||||
{
|
||||
RegisterGlobals(L);
|
||||
ElunaGlobal::SetMethods(E, GlobalMethods);
|
||||
|
||||
// You should add Eluna::RemoveRef(this); to all destructors for objects that are NOT mem managed (gc) by lua.
|
||||
// Exceptions being Quest type static data structs that will never be destructed (during runtime), though they can have it as well.
|
||||
ElunaTemplate<Object>::Register(E, "Object");
|
||||
ElunaTemplate<Object>::SetMethods(E, ObjectMethods);
|
||||
|
||||
ElunaTemplate<Object>::Register(L, "Object");
|
||||
ElunaTemplate<Object>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<WorldObject>::Register(E, "WorldObject");
|
||||
ElunaTemplate<WorldObject>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<WorldObject>::SetMethods(E, WorldObjectMethods);
|
||||
|
||||
ElunaTemplate<WorldObject>::Register(L, "WorldObject");
|
||||
ElunaTemplate<WorldObject>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<WorldObject>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<Unit>::Register(E, "Unit");
|
||||
ElunaTemplate<Unit>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<Unit>::SetMethods(E, WorldObjectMethods);
|
||||
ElunaTemplate<Unit>::SetMethods(E, UnitMethods);
|
||||
|
||||
ElunaTemplate<Unit>::Register(L, "Unit");
|
||||
ElunaTemplate<Unit>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<Unit>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<Unit>::SetMethods(L, UnitMethods);
|
||||
ElunaTemplate<Player>::Register(E, "Player");
|
||||
ElunaTemplate<Player>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<Player>::SetMethods(E, WorldObjectMethods);
|
||||
ElunaTemplate<Player>::SetMethods(E, UnitMethods);
|
||||
ElunaTemplate<Player>::SetMethods(E, PlayerMethods);
|
||||
|
||||
ElunaTemplate<Player>::Register(L, "Player");
|
||||
ElunaTemplate<Player>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<Player>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<Player>::SetMethods(L, UnitMethods);
|
||||
ElunaTemplate<Player>::SetMethods(L, PlayerMethods);
|
||||
ElunaTemplate<Creature>::Register(E, "Creature");
|
||||
ElunaTemplate<Creature>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(E, WorldObjectMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(E, UnitMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(E, CreatureMethods);
|
||||
|
||||
ElunaTemplate<Creature>::Register(L, "Creature");
|
||||
ElunaTemplate<Creature>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(L, UnitMethods);
|
||||
ElunaTemplate<Creature>::SetMethods(L, CreatureMethods);
|
||||
ElunaTemplate<GameObject>::Register(E, "GameObject");
|
||||
ElunaTemplate<GameObject>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<GameObject>::SetMethods(E, WorldObjectMethods);
|
||||
ElunaTemplate<GameObject>::SetMethods(E, GameObjectMethods);
|
||||
|
||||
ElunaTemplate<GameObject>::Register(L, "GameObject");
|
||||
ElunaTemplate<GameObject>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<GameObject>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<GameObject>::SetMethods(L, GameObjectMethods);
|
||||
ElunaTemplate<Corpse>::Register(E, "Corpse");
|
||||
ElunaTemplate<Corpse>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<Corpse>::SetMethods(E, WorldObjectMethods);
|
||||
ElunaTemplate<Corpse>::SetMethods(E, CorpseMethods);
|
||||
|
||||
ElunaTemplate<Corpse>::Register(L, "Corpse");
|
||||
ElunaTemplate<Corpse>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<Corpse>::SetMethods(L, WorldObjectMethods);
|
||||
ElunaTemplate<Corpse>::SetMethods(L, CorpseMethods);
|
||||
|
||||
ElunaTemplate<Item>::Register(L, "Item");
|
||||
ElunaTemplate<Item>::SetMethods(L, ObjectMethods);
|
||||
ElunaTemplate<Item>::SetMethods(L, ItemMethods);
|
||||
ElunaTemplate<Item>::Register(E, "Item");
|
||||
ElunaTemplate<Item>::SetMethods(E, ObjectMethods);
|
||||
ElunaTemplate<Item>::SetMethods(E, ItemMethods);
|
||||
|
||||
#ifndef CLASSIC
|
||||
#ifndef TBC
|
||||
ElunaTemplate<Vehicle>::Register(L, "Vehicle");
|
||||
ElunaTemplate<Vehicle>::SetMethods(L, VehicleMethods);
|
||||
ElunaTemplate<Vehicle>::Register(E, "Vehicle");
|
||||
ElunaTemplate<Vehicle>::SetMethods(E, VehicleMethods);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
ElunaTemplate<Group>::Register(L, "Group");
|
||||
ElunaTemplate<Group>::SetMethods(L, GroupMethods);
|
||||
ElunaTemplate<Group>::Register(E, "Group");
|
||||
ElunaTemplate<Group>::SetMethods(E, GroupMethods);
|
||||
|
||||
ElunaTemplate<Guild>::Register(L, "Guild");
|
||||
ElunaTemplate<Guild>::SetMethods(L, GuildMethods);
|
||||
ElunaTemplate<Guild>::Register(E, "Guild");
|
||||
ElunaTemplate<Guild>::SetMethods(E, GuildMethods);
|
||||
|
||||
ElunaTemplate<Aura>::Register(L, "Aura");
|
||||
ElunaTemplate<Aura>::SetMethods(L, AuraMethods);
|
||||
ElunaTemplate<Aura>::Register(E, "Aura");
|
||||
ElunaTemplate<Aura>::SetMethods(E, AuraMethods);
|
||||
|
||||
ElunaTemplate<Spell>::Register(L, "Spell");
|
||||
ElunaTemplate<Spell>::SetMethods(L, SpellMethods);
|
||||
ElunaTemplate<Spell>::Register(E, "Spell");
|
||||
ElunaTemplate<Spell>::SetMethods(E, SpellMethods);
|
||||
|
||||
ElunaTemplate<Quest>::Register(L, "Quest");
|
||||
ElunaTemplate<Quest>::SetMethods(L, QuestMethods);
|
||||
ElunaTemplate<Quest>::Register(E, "Quest");
|
||||
ElunaTemplate<Quest>::SetMethods(E, QuestMethods);
|
||||
|
||||
ElunaTemplate<Map>::Register(L, "Map");
|
||||
ElunaTemplate<Map>::SetMethods(L, MapMethods);
|
||||
ElunaTemplate<Map>::Register(E, "Map");
|
||||
ElunaTemplate<Map>::SetMethods(E, MapMethods);
|
||||
|
||||
ElunaTemplate<Weather>::Register(L, "Weather");
|
||||
ElunaTemplate<Weather>::SetMethods(L, WeatherMethods);
|
||||
ElunaTemplate<Weather>::Register(E, "Weather");
|
||||
ElunaTemplate<Weather>::SetMethods(E, WeatherMethods);
|
||||
|
||||
ElunaTemplate<AuctionHouseObject>::Register(L, "AuctionHouseObject");
|
||||
ElunaTemplate<AuctionHouseObject>::SetMethods(L, AuctionMethods);
|
||||
ElunaTemplate<AuctionHouseObject>::Register(E, "AuctionHouseObject");
|
||||
ElunaTemplate<AuctionHouseObject>::SetMethods(E, AuctionMethods);
|
||||
|
||||
ElunaTemplate<BattleGround>::Register(L, "BattleGround");
|
||||
ElunaTemplate<BattleGround>::SetMethods(L, BattleGroundMethods);
|
||||
ElunaTemplate<BattleGround>::Register(E, "BattleGround");
|
||||
ElunaTemplate<BattleGround>::SetMethods(E, BattleGroundMethods);
|
||||
|
||||
ElunaTemplate<WorldPacket>::Register(L, "WorldPacket", true);
|
||||
ElunaTemplate<WorldPacket>::SetMethods(L, PacketMethods);
|
||||
ElunaTemplate<WorldPacket>::Register(E, "WorldPacket", true);
|
||||
ElunaTemplate<WorldPacket>::SetMethods(E, PacketMethods);
|
||||
|
||||
ElunaTemplate<ElunaQuery>::Register(L, "ElunaQuery", true);
|
||||
ElunaTemplate<ElunaQuery>::SetMethods(L, QueryMethods);
|
||||
ElunaTemplate<ElunaQuery>::Register(E, "ElunaQuery", true);
|
||||
ElunaTemplate<ElunaQuery>::SetMethods(E, QueryMethods);
|
||||
}
|
||||
|
||||
88
MapMethods.h
88
MapMethods.h
@@ -16,9 +16,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isArena
|
||||
*/
|
||||
int IsArena(lua_State* L, Map* map)
|
||||
int IsArena(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->IsBattleArena());
|
||||
Eluna::Push(E->L, map->IsBattleArena());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -28,12 +28,12 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isBattleGround
|
||||
*/
|
||||
int IsBattleground(lua_State* L, Map* map)
|
||||
int IsBattleground(Eluna* E, Map* map)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, map->IsBattleGround());
|
||||
Eluna::Push(E->L, map->IsBattleGround());
|
||||
#else
|
||||
Eluna::Push(L, map->IsBattleground());
|
||||
Eluna::Push(E->L, map->IsBattleground());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -43,9 +43,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isDungeon
|
||||
*/
|
||||
int IsDungeon(lua_State* L, Map* map)
|
||||
int IsDungeon(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->IsDungeon());
|
||||
Eluna::Push(E->L, map->IsDungeon());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isEmpty
|
||||
*/
|
||||
int IsEmpty(lua_State* L, Map* map)
|
||||
int IsEmpty(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->isEmpty());
|
||||
Eluna::Push(E->L, map->isEmpty());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isHeroic
|
||||
*/
|
||||
int IsHeroic(lua_State* L, Map* map)
|
||||
int IsHeroic(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->IsHeroic());
|
||||
Eluna::Push(E->L, map->IsHeroic());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -78,9 +78,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return bool isRaid
|
||||
*/
|
||||
int IsRaid(lua_State* L, Map* map)
|
||||
int IsRaid(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->IsRaid());
|
||||
Eluna::Push(E->L, map->IsRaid());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -89,9 +89,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return string mapName
|
||||
*/
|
||||
int GetName(lua_State* L, Map* map)
|
||||
int GetName(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->GetMapName());
|
||||
Eluna::Push(E->L, map->GetMapName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -102,18 +102,18 @@ namespace LuaMap
|
||||
* @param float y
|
||||
* @return float z
|
||||
*/
|
||||
int GetHeight(lua_State* L, Map* map)
|
||||
int GetHeight(Eluna* E, Map* map)
|
||||
{
|
||||
float x = Eluna::CHECKVAL<float>(L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(L, 3);
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
#if (defined(TBC) || defined(CLASSIC))
|
||||
float z = map->GetHeight(x, y, MAX_HEIGHT);
|
||||
#else
|
||||
uint32 phasemask = Eluna::CHECKVAL<uint32>(L, 4, 1);
|
||||
uint32 phasemask = Eluna::CHECKVAL<uint32>(E->L, 4, 1);
|
||||
float z = map->GetHeight(phasemask, x, y, MAX_HEIGHT);
|
||||
#endif
|
||||
if (z != INVALID_HEIGHT)
|
||||
Eluna::Push(L, z);
|
||||
Eluna::Push(E->L, z);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -122,12 +122,12 @@ namespace LuaMap
|
||||
*
|
||||
* @return int32 difficulty
|
||||
*/
|
||||
int GetDifficulty(lua_State* L, Map* map)
|
||||
int GetDifficulty(Eluna* E, Map* map)
|
||||
{
|
||||
#ifndef CLASSIC
|
||||
Eluna::Push(L, map->GetDifficulty());
|
||||
Eluna::Push(E->L, map->GetDifficulty());
|
||||
#else
|
||||
Eluna::Push(L, (Difficulty)0);
|
||||
Eluna::Push(E->L, (Difficulty)0);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -137,9 +137,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return uint32 instanceId
|
||||
*/
|
||||
int GetInstanceId(lua_State* L, Map* map)
|
||||
int GetInstanceId(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->GetInstanceId());
|
||||
Eluna::Push(E->L, map->GetInstanceId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -149,9 +149,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return uint32 playerCount
|
||||
*/
|
||||
int GetPlayerCount(lua_State* L, Map* map)
|
||||
int GetPlayerCount(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->GetPlayersCountExceptGMs());
|
||||
Eluna::Push(E->L, map->GetPlayersCountExceptGMs());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -160,9 +160,9 @@ namespace LuaMap
|
||||
*
|
||||
* @return uint32 mapId
|
||||
*/
|
||||
int GetMapId(lua_State* L, Map* map)
|
||||
int GetMapId(Eluna* E, Map* map)
|
||||
{
|
||||
Eluna::Push(L, map->GetId());
|
||||
Eluna::Push(E->L, map->GetId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -174,16 +174,16 @@ namespace LuaMap
|
||||
* @param float z
|
||||
* @return uint32 areaId
|
||||
*/
|
||||
int GetAreaId(lua_State* L, Map* map)
|
||||
int GetAreaId(Eluna* E, Map* map)
|
||||
{
|
||||
float x = Eluna::CHECKVAL<float>(L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(L, 4);
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, map->GetTerrain()->GetAreaId(x, y, z));
|
||||
Eluna::Push(E->L, map->GetTerrain()->GetAreaId(x, y, z));
|
||||
#else
|
||||
Eluna::Push(L, map->GetAreaId(x, y, z));
|
||||
Eluna::Push(E->L, map->GetAreaId(x, y, z));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -193,35 +193,35 @@ namespace LuaMap
|
||||
*
|
||||
* @param uint64 guid
|
||||
*/
|
||||
int GetWorldObject(lua_State* L, Map* map)
|
||||
int GetWorldObject(Eluna* E, Map* map)
|
||||
{
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(E->L, 2);
|
||||
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, map->GetWorldObject(ObjectGuid(guid)));
|
||||
Eluna::Push(E->L, map->GetWorldObject(ObjectGuid(guid)));
|
||||
#else
|
||||
switch (GUID_HIPART(guid))
|
||||
{
|
||||
case HIGHGUID_PLAYER:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Player*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Player*)NULL));
|
||||
break;
|
||||
case HIGHGUID_TRANSPORT:
|
||||
case HIGHGUID_MO_TRANSPORT:
|
||||
case HIGHGUID_GAMEOBJECT:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (GameObject*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (GameObject*)NULL));
|
||||
break;
|
||||
case HIGHGUID_VEHICLE:
|
||||
case HIGHGUID_UNIT:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Creature*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Creature*)NULL));
|
||||
break;
|
||||
case HIGHGUID_PET:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Pet*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Pet*)NULL));
|
||||
break;
|
||||
case HIGHGUID_DYNAMICOBJECT:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (DynamicObject*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (DynamicObject*)NULL));
|
||||
break;
|
||||
case HIGHGUID_CORPSE:
|
||||
Eluna::Push(L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Corpse*)NULL));
|
||||
Eluna::Push(E->L, sObjectAccessor->GetObjectInMap(ObjectGuid(guid), map, (Corpse*)NULL));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
160
ObjectMethods.h
160
ObjectMethods.h
@@ -10,219 +10,219 @@
|
||||
namespace LuaObject
|
||||
{
|
||||
/* BOOLEAN */
|
||||
int HasFlag(lua_State* L, Object* obj)
|
||||
int HasFlag(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
|
||||
Eluna::Push(L, obj->HasFlag(index, flag));
|
||||
Eluna::Push(E->L, obj->HasFlag(index, flag));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsInWorld(lua_State* L, Object* obj)
|
||||
int IsInWorld(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->IsInWorld());
|
||||
Eluna::Push(E->L, obj->IsInWorld());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* GETTERS */
|
||||
int GetInt32Value(lua_State* L, Object* obj)
|
||||
int GetInt32Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetInt32Value(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
Eluna::Push(E->L, obj->GetInt32Value(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt32Value(lua_State* L, Object* obj)
|
||||
int GetUInt32Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetUInt32Value(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
Eluna::Push(E->L, obj->GetUInt32Value(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetFloatValue(lua_State* L, Object* obj)
|
||||
int GetFloatValue(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetFloatValue(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
Eluna::Push(E->L, obj->GetFloatValue(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetByteValue(lua_State* L, Object* obj)
|
||||
int GetByteValue(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Eluna::Push(L, obj->GetByteValue(index, offset));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
Eluna::Push(E->L, obj->GetByteValue(index, offset));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt16Value(lua_State* L, Object* obj)
|
||||
int GetUInt16Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Eluna::Push(L, obj->GetUInt16Value(index, offset));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
Eluna::Push(E->L, obj->GetUInt16Value(index, offset));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetScale(lua_State* L, Object* obj)
|
||||
int GetScale(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetObjectScale());
|
||||
Eluna::Push(E->L, obj->GetObjectScale());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetEntry(lua_State* L, Object* obj)
|
||||
int GetEntry(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetEntry());
|
||||
Eluna::Push(E->L, obj->GetEntry());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetGUID(lua_State* L, Object* obj)
|
||||
int GetGUID(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GET_GUID());
|
||||
Eluna::Push(E->L, obj->GET_GUID());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetGUIDLow(lua_State* L, Object* obj)
|
||||
int GetGUIDLow(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetGUIDLow());
|
||||
Eluna::Push(E->L, obj->GetGUIDLow());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetTypeId(lua_State* L, Object* obj)
|
||||
int GetTypeId(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetTypeId());
|
||||
Eluna::Push(E->L, obj->GetTypeId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt64Value(lua_State* L, Object* obj)
|
||||
int GetUInt64Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
obj->GetUInt64Value(index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* SETTERS */
|
||||
int SetFlag(lua_State* L, Object* obj)
|
||||
int SetFlag(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
|
||||
obj->SetFlag(index, flag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetInt32Value(lua_State* L, Object* obj)
|
||||
int SetInt32Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
int32 value = Eluna::CHECKVAL<int32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
int32 value = Eluna::CHECKVAL<int32>(E->L, 3);
|
||||
obj->SetInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetUInt32Value(lua_State* L, Object* obj)
|
||||
int SetUInt32Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
obj->SetUInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetFloatValue(lua_State* L, Object* obj)
|
||||
int SetFloatValue(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
float value = Eluna::CHECKVAL<float>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
float value = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
|
||||
obj->SetFloatValue(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetByteValue(lua_State* L, Object* obj)
|
||||
int SetByteValue(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
uint8 value = Eluna::CHECKVAL<uint8>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
uint8 value = Eluna::CHECKVAL<uint8>(E->L, 4);
|
||||
obj->SetByteValue(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetUInt16Value(lua_State* L, Object* obj)
|
||||
int SetUInt16Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
uint16 value = Eluna::CHECKVAL<uint16>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
uint16 value = Eluna::CHECKVAL<uint16>(E->L, 4);
|
||||
obj->SetUInt16Value(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetInt16Value(lua_State* L, Object* obj)
|
||||
int SetInt16Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
int16 value = Eluna::CHECKVAL<int16>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(E->L, 3);
|
||||
int16 value = Eluna::CHECKVAL<int16>(E->L, 4);
|
||||
obj->SetInt16Value(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetScale(lua_State* L, Object* obj)
|
||||
int SetScale(Eluna* E, Object* obj)
|
||||
{
|
||||
float size = Eluna::CHECKVAL<float>(L, 2);
|
||||
float size = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
|
||||
obj->SetObjectScale(size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetUInt64Value(lua_State* L, Object* obj)
|
||||
int SetUInt64Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint64 value = Eluna::CHECKVAL<uint64>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint64 value = Eluna::CHECKVAL<uint64>(E->L, 3);
|
||||
obj->SetUInt64Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* OTHER */
|
||||
int RemoveFlag(lua_State* L, Object* obj)
|
||||
int RemoveFlag(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
|
||||
obj->RemoveFlag(index, flag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int UpdateUInt32Value(lua_State* L, Object* obj)
|
||||
int UpdateUInt32Value(Eluna* E, Object* obj)
|
||||
{
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
obj->UpdateUInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ToCorpse(lua_State* L, Object* obj)
|
||||
int ToCorpse(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->ToCorpse());
|
||||
Eluna::Push(E->L, obj->ToCorpse());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToGameObject(lua_State* L, Object* obj)
|
||||
int ToGameObject(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->ToGameObject());
|
||||
Eluna::Push(E->L, obj->ToGameObject());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToUnit(lua_State* L, Object* obj)
|
||||
int ToUnit(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->ToUnit());
|
||||
Eluna::Push(E->L, obj->ToUnit());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToCreature(lua_State* L, Object* obj)
|
||||
int ToCreature(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->ToCreature());
|
||||
Eluna::Push(E->L, obj->ToCreature());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToPlayer(lua_State* L, Object* obj)
|
||||
int ToPlayer(Eluna* E, Object* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->ToPlayer());
|
||||
Eluna::Push(E->L, obj->ToPlayer());
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
1327
PlayerMethods.h
1327
PlayerMethods.h
File diff suppressed because it is too large
Load Diff
@@ -46,13 +46,13 @@ namespace LuaQuest
|
||||
* @param uint32 flag : all available flags can be seen above
|
||||
* @return bool hasFlag
|
||||
*/
|
||||
int HasFlag(lua_State* L, Quest* quest)
|
||||
int HasFlag(Eluna* E, Quest* quest)
|
||||
{
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, quest->HasQuestFlag((QuestFlags)flag));
|
||||
Eluna::Push(E->L, quest->HasQuestFlag((QuestFlags)flag));
|
||||
#else
|
||||
Eluna::Push(L, quest->HasFlag(flag));
|
||||
Eluna::Push(E->L, quest->HasFlag(flag));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -63,9 +63,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return bool isDaily
|
||||
*/
|
||||
int IsDaily(lua_State* L, Quest* quest)
|
||||
int IsDaily(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->IsDaily());
|
||||
Eluna::Push(E->L, quest->IsDaily());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -75,9 +75,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return bool isRepeatable
|
||||
*/
|
||||
int IsRepeatable(lua_State* L, Quest* quest)
|
||||
int IsRepeatable(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->IsRepeatable());
|
||||
Eluna::Push(E->L, quest->IsRepeatable());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -86,9 +86,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return uint32 entryId
|
||||
*/
|
||||
int GetId(lua_State* L, Quest* quest)
|
||||
int GetId(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetQuestId());
|
||||
Eluna::Push(E->L, quest->GetQuestId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -97,9 +97,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return uint32 level
|
||||
*/
|
||||
int GetLevel(lua_State* L, Quest* quest)
|
||||
int GetLevel(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetQuestLevel());
|
||||
Eluna::Push(E->L, quest->GetQuestLevel());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -108,9 +108,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return uint32 minLevel
|
||||
*/
|
||||
int GetMinLevel(lua_State* L, Quest* quest)
|
||||
int GetMinLevel(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetMinLevel());
|
||||
Eluna::Push(E->L, quest->GetMinLevel());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -119,9 +119,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return int32 entryId
|
||||
*/
|
||||
int GetNextQuestId(lua_State* L, Quest* quest)
|
||||
int GetNextQuestId(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetNextQuestId());
|
||||
Eluna::Push(E->L, quest->GetNextQuestId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -130,9 +130,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return int32 entryId
|
||||
*/
|
||||
int GetPrevQuestId(lua_State* L, Quest* quest)
|
||||
int GetPrevQuestId(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetPrevQuestId());
|
||||
Eluna::Push(E->L, quest->GetPrevQuestId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -141,9 +141,9 @@ namespace LuaQuest
|
||||
*
|
||||
* @return int32 entryId
|
||||
*/
|
||||
int GetNextQuestInChain(lua_State* L, Quest* quest)
|
||||
int GetNextQuestInChain(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetNextQuestInChain());
|
||||
Eluna::Push(E->L, quest->GetNextQuestInChain());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -152,12 +152,12 @@ namespace LuaQuest
|
||||
*
|
||||
* @return uint32 flags
|
||||
*/
|
||||
int GetFlags(lua_State* L, Quest* quest)
|
||||
int GetFlags(Eluna* E, Quest* quest)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, quest->GetQuestFlags());
|
||||
Eluna::Push(E->L, quest->GetQuestFlags());
|
||||
#else
|
||||
Eluna::Push(L, quest->GetFlags());
|
||||
Eluna::Push(E->L, quest->GetFlags());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -169,15 +169,15 @@ namespace LuaQuest
|
||||
*
|
||||
* @return uint32 type
|
||||
*/
|
||||
int GetType(lua_State* L, Quest* quest)
|
||||
int GetType(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetType());
|
||||
Eluna::Push(E->L, quest->GetType());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*int GetMaxLevel(lua_State* L, Quest* quest)
|
||||
/*int GetMaxLevel(Eluna* E, Quest* quest)
|
||||
{
|
||||
Eluna::Push(L, quest->GetMaxLevel());
|
||||
Eluna::Push(E->L, quest->GetMaxLevel());
|
||||
return 1;
|
||||
}*/
|
||||
};
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @return bool isAutoRepeating
|
||||
*/
|
||||
int IsAutoRepeat(lua_State* L, Spell* spell)
|
||||
int IsAutoRepeat(Eluna* E, Spell* spell)
|
||||
{
|
||||
Eluna::Push(L, spell->IsAutoRepeat());
|
||||
Eluna::Push(E->L, spell->IsAutoRepeat());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @return [Unit] caster
|
||||
*/
|
||||
int GetCaster(lua_State* L, Spell* spell)
|
||||
int GetCaster(Eluna* E, Spell* spell)
|
||||
{
|
||||
Eluna::Push(L, spell->GetCaster());
|
||||
Eluna::Push(E->L, spell->GetCaster());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -36,9 +36,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @return int32 castTime
|
||||
*/
|
||||
int GetCastTime(lua_State* L, Spell* spell)
|
||||
int GetCastTime(Eluna* E, Spell* spell)
|
||||
{
|
||||
Eluna::Push(L, spell->GetCastTime());
|
||||
Eluna::Push(E->L, spell->GetCastTime());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -47,9 +47,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @return uint32 entryId
|
||||
*/
|
||||
int GetEntry(lua_State* L, Spell* spell)
|
||||
int GetEntry(Eluna* E, Spell* spell)
|
||||
{
|
||||
Eluna::Push(L, spell->m_spellInfo->Id);
|
||||
Eluna::Push(E->L, spell->m_spellInfo->Id);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @return uint32 powerCost
|
||||
*/
|
||||
int GetPowerCost(lua_State* L, Spell* spell)
|
||||
int GetPowerCost(Eluna* E, Spell* spell)
|
||||
{
|
||||
Eluna::Push(L, spell->GetPowerCost());
|
||||
Eluna::Push(E->L, spell->GetPowerCost());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -69,12 +69,12 @@ namespace LuaSpell
|
||||
*
|
||||
* @return int32 duration
|
||||
*/
|
||||
int GetDuration(lua_State* L, Spell* spell)
|
||||
int GetDuration(Eluna* E, Spell* spell)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, GetSpellDuration(spell->m_spellInfo));
|
||||
Eluna::Push(E->L, GetSpellDuration(spell->m_spellInfo));
|
||||
#else
|
||||
Eluna::Push(L, spell->GetSpellInfo()->GetDuration());
|
||||
Eluna::Push(E->L, spell->GetSpellInfo()->GetDuration());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -86,7 +86,7 @@ namespace LuaSpell
|
||||
* @return float y : y coordinate of the [Spell]
|
||||
* @return float z : z coordinate of the [Spell]
|
||||
*/
|
||||
int GetTargetDest(lua_State* L, Spell* spell)
|
||||
int GetTargetDest(Eluna* E, Spell* spell)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
if (!(spell->m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION))
|
||||
@@ -99,9 +99,9 @@ namespace LuaSpell
|
||||
float x, y, z;
|
||||
spell->m_targets.GetDstPos()->GetPosition(x, y, z);
|
||||
#endif
|
||||
Eluna::Push(L, x);
|
||||
Eluna::Push(L, y);
|
||||
Eluna::Push(L, z);
|
||||
Eluna::Push(E->L, x);
|
||||
Eluna::Push(E->L, y);
|
||||
Eluna::Push(E->L, z);
|
||||
return 3;
|
||||
}
|
||||
|
||||
@@ -111,28 +111,28 @@ namespace LuaSpell
|
||||
*
|
||||
* @return [Object] target
|
||||
*/
|
||||
int GetTarget(lua_State* L, Spell* spell)
|
||||
int GetTarget(Eluna* E, Spell* spell)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
if (GameObject* target = spell->m_targets.getGOTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Item* target = spell->m_targets.getItemTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Corpse* target = spell->GetCaster()->GetMap()->GetCorpse(spell->m_targets.getCorpseTargetGuid()))
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Unit* target = spell->m_targets.getUnitTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
#else
|
||||
if (GameObject* target = spell->m_targets.GetGOTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Item* target = spell->m_targets.GetItemTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Corpse* target = spell->m_targets.GetCorpseTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (Unit* target = spell->m_targets.GetUnitTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
else if (WorldObject* target = spell->m_targets.GetObjectTarget())
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -142,9 +142,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @param bool repeat : set variable to 'true' for spell to automatically repeat
|
||||
*/
|
||||
int SetAutoRepeat(lua_State* L, Spell* spell)
|
||||
int SetAutoRepeat(Eluna* E, Spell* spell)
|
||||
{
|
||||
bool repeat = Eluna::CHECKVAL<bool>(L, 2);
|
||||
bool repeat = Eluna::CHECKVAL<bool>(E->L, 2);
|
||||
spell->SetAutoRepeat(repeat);
|
||||
return 0;
|
||||
}
|
||||
@@ -154,9 +154,9 @@ namespace LuaSpell
|
||||
*
|
||||
* @param bool skipCheck = false : skips initial checks to see if the [Spell] can be casted or not, this is optional
|
||||
*/
|
||||
int Cast(lua_State* L, Spell* spell)
|
||||
int Cast(Eluna* E, Spell* spell)
|
||||
{
|
||||
bool skipCheck = Eluna::CHECKVAL<bool>(L, 2, false);
|
||||
bool skipCheck = Eluna::CHECKVAL<bool>(E->L, 2, false);
|
||||
spell->cast(skipCheck);
|
||||
return 0;
|
||||
}
|
||||
@@ -165,7 +165,7 @@ namespace LuaSpell
|
||||
* Cancels the [Spell].
|
||||
*
|
||||
*/
|
||||
int Cancel(lua_State* /*L*/, Spell* spell)
|
||||
int Cancel(Eluna* /*E*/, Spell* spell)
|
||||
{
|
||||
spell->cancel();
|
||||
return 0;
|
||||
@@ -175,7 +175,7 @@ namespace LuaSpell
|
||||
* Finishes the [Spell].
|
||||
*
|
||||
*/
|
||||
int Finish(lua_State* /*L*/, Spell* spell)
|
||||
int Finish(Eluna* /*E*/, Spell* spell)
|
||||
{
|
||||
spell->finish();
|
||||
return 0;
|
||||
|
||||
942
UnitMethods.h
942
UnitMethods.h
File diff suppressed because it is too large
Load Diff
@@ -12,50 +12,50 @@
|
||||
namespace LuaVehicle
|
||||
{
|
||||
/* BOOLEAN */
|
||||
int IsOnBoard(lua_State* L, Vehicle* vehicle)
|
||||
int IsOnBoard(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, vehicle->HasOnBoard(passenger));
|
||||
Eluna::Push(E->L, vehicle->HasOnBoard(passenger));
|
||||
#else
|
||||
Eluna::Push(L, passenger->IsOnVehicle(vehicle->GetBase()));
|
||||
Eluna::Push(E->L, passenger->IsOnVehicle(vehicle->GetBase()));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* GETTERS */
|
||||
int GetOwner(lua_State* L, Vehicle* vehicle)
|
||||
int GetOwner(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, vehicle->GetOwner());
|
||||
Eluna::Push(E->L, vehicle->GetOwner());
|
||||
#else
|
||||
Eluna::Push(L, vehicle->GetBase());
|
||||
Eluna::Push(E->L, vehicle->GetBase());
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetEntry(lua_State* L, Vehicle* vehicle)
|
||||
int GetEntry(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, vehicle->GetVehicleEntry()->m_ID);
|
||||
Eluna::Push(E->L, vehicle->GetVehicleEntry()->m_ID);
|
||||
#else
|
||||
Eluna::Push(L, vehicle->GetVehicleInfo()->m_ID);
|
||||
Eluna::Push(E->L, vehicle->GetVehicleInfo()->m_ID);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetPassenger(lua_State* L, Vehicle* vehicle)
|
||||
int GetPassenger(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
int8 seatId = Eluna::CHECKVAL<int8>(L, 2);
|
||||
Eluna::Push(L, vehicle->GetPassenger(seatId));
|
||||
int8 seatId = Eluna::CHECKVAL<int8>(E->L, 2);
|
||||
Eluna::Push(E->L, vehicle->GetPassenger(seatId));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* OTHER */
|
||||
int AddPassenger(lua_State* L, Vehicle* vehicle)
|
||||
int AddPassenger(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
int8 seatId = Eluna::CHECKVAL<int8>(L, 3);
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
int8 seatId = Eluna::CHECKVAL<int8>(E->L, 3);
|
||||
#ifndef TRINITY
|
||||
if (vehicle->CanBoard(passenger))
|
||||
vehicle->Board(passenger, seatId);
|
||||
@@ -65,9 +65,9 @@ namespace LuaVehicle
|
||||
return 0;
|
||||
}
|
||||
|
||||
int RemovePassenger(lua_State* L, Vehicle* vehicle)
|
||||
int RemovePassenger(Eluna* E, Vehicle* vehicle)
|
||||
{
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(L, 2);
|
||||
Unit* passenger = Eluna::CHECKOBJ<Unit>(E->L, 2);
|
||||
#ifndef TRINITY
|
||||
vehicle->UnBoard(passenger, false);
|
||||
#else
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace LuaWeather
|
||||
*
|
||||
* @return uint32 zoneId
|
||||
*/
|
||||
int GetZoneId(lua_State* L, Weather* weather)
|
||||
int GetZoneId(Eluna* E, Weather* weather)
|
||||
{
|
||||
Eluna::Push(L, weather->GetZone());
|
||||
Eluna::Push(E->L, weather->GetZone());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -38,10 +38,10 @@ namespace LuaWeather
|
||||
* @param WeatherType type : the [WeatherType], see above available weather types
|
||||
* @param float grade : the intensity/grade of the [Weather], ranges from 0 to 1
|
||||
*/
|
||||
int SetWeather(lua_State* L, Weather* weather)
|
||||
int SetWeather(Eluna* E, Weather* weather)
|
||||
{
|
||||
uint32 weatherType = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
float grade = Eluna::CHECKVAL<float>(L, 3);
|
||||
uint32 weatherType = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
float grade = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
|
||||
weather->SetWeather((WeatherType)weatherType, grade);
|
||||
return 0;
|
||||
@@ -52,9 +52,9 @@ namespace LuaWeather
|
||||
*
|
||||
* @param [Player] player
|
||||
*/
|
||||
int SendWeatherUpdateToPlayer(lua_State* L, Weather* weather)
|
||||
int SendWeatherUpdateToPlayer(Eluna* E, Weather* weather)
|
||||
{
|
||||
Player* player = Eluna::CHECKOBJ<Player>(L, 2);
|
||||
Player* player = Eluna::CHECKOBJ<Player>(E->L, 2);
|
||||
|
||||
weather->SendWeatherUpdateToPlayer(player);
|
||||
return 0;
|
||||
@@ -70,9 +70,9 @@ namespace LuaWeather
|
||||
*
|
||||
* @return bool changed : returns 'true' if [Weather] changed
|
||||
*/
|
||||
int Regenerate(lua_State* L, Weather* weather)
|
||||
int Regenerate(Eluna* E, Weather* weather)
|
||||
{
|
||||
Eluna::Push(L, weather->ReGenerate());
|
||||
Eluna::Push(E->L, weather->ReGenerate());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -81,9 +81,9 @@ namespace LuaWeather
|
||||
*
|
||||
* @param bool changed : returns 'true' if weather changed for any [Player] in the zone, 'false' if no [Player] is within the zone
|
||||
*/
|
||||
int UpdateWeather(lua_State* L, Weather* weather)
|
||||
int UpdateWeather(Eluna* E, Weather* weather)
|
||||
{
|
||||
Eluna::Push(L, weather->UpdateWeather());
|
||||
Eluna::Push(E->L, weather->UpdateWeather());
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return string name
|
||||
*/
|
||||
int GetName(lua_State* L, WorldObject* obj)
|
||||
int GetName(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetName());
|
||||
Eluna::Push(E->L, obj->GetName());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return [Map] mapObject
|
||||
*/
|
||||
int GetMap(lua_State* L, WorldObject* obj)
|
||||
int GetMap(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetMap());
|
||||
Eluna::Push(E->L, obj->GetMap());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -37,9 +37,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return uint32 phase
|
||||
*/
|
||||
int GetPhaseMask(lua_State* L, WorldObject* obj)
|
||||
int GetPhaseMask(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetPhaseMask());
|
||||
Eluna::Push(E->L, obj->GetPhaseMask());
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
@@ -49,9 +49,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return uint32 instanceId
|
||||
*/
|
||||
int GetInstanceId(lua_State* L, WorldObject* obj)
|
||||
int GetInstanceId(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetInstanceId());
|
||||
Eluna::Push(E->L, obj->GetInstanceId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return uint32 areaId
|
||||
*/
|
||||
int GetAreaId(lua_State* L, WorldObject* obj)
|
||||
int GetAreaId(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetAreaId());
|
||||
Eluna::Push(E->L, obj->GetAreaId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -71,9 +71,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return uint32 zoneId
|
||||
*/
|
||||
int GetZoneId(lua_State* L, WorldObject* obj)
|
||||
int GetZoneId(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetZoneId());
|
||||
Eluna::Push(E->L, obj->GetZoneId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -82,9 +82,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return uint32 mapId
|
||||
*/
|
||||
int GetMapId(lua_State* L, WorldObject* obj)
|
||||
int GetMapId(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetMapId());
|
||||
Eluna::Push(E->L, obj->GetMapId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -93,9 +93,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float x
|
||||
*/
|
||||
int GetX(lua_State* L, WorldObject* obj)
|
||||
int GetX(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetPositionX());
|
||||
Eluna::Push(E->L, obj->GetPositionX());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -104,9 +104,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float y
|
||||
*/
|
||||
int GetY(lua_State* L, WorldObject* obj)
|
||||
int GetY(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetPositionY());
|
||||
Eluna::Push(E->L, obj->GetPositionY());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -115,9 +115,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float z
|
||||
*/
|
||||
int GetZ(lua_State* L, WorldObject* obj)
|
||||
int GetZ(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetPositionZ());
|
||||
Eluna::Push(E->L, obj->GetPositionZ());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -126,9 +126,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float orientation / facing
|
||||
*/
|
||||
int GetO(lua_State* L, WorldObject* obj)
|
||||
int GetO(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetOrientation());
|
||||
Eluna::Push(E->L, obj->GetOrientation());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -140,12 +140,12 @@ namespace LuaWorldObject
|
||||
* @return float z : z coordinate (height) of the [WorldObject]
|
||||
* @return float o : facing / orientation of the [WorldObject]
|
||||
*/
|
||||
int GetLocation(lua_State* L, WorldObject* obj)
|
||||
int GetLocation(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
Eluna::Push(L, obj->GetPositionX());
|
||||
Eluna::Push(L, obj->GetPositionY());
|
||||
Eluna::Push(L, obj->GetPositionZ());
|
||||
Eluna::Push(L, obj->GetOrientation());
|
||||
Eluna::Push(E->L, obj->GetPositionX());
|
||||
Eluna::Push(E->L, obj->GetPositionY());
|
||||
Eluna::Push(E->L, obj->GetPositionZ());
|
||||
Eluna::Push(E->L, obj->GetOrientation());
|
||||
return 4;
|
||||
}
|
||||
|
||||
@@ -156,9 +156,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return [Player] nearestPlayer
|
||||
*/
|
||||
int GetNearestPlayer(lua_State* L, WorldObject* obj)
|
||||
int GetNearestPlayer(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
|
||||
Unit* target = NULL;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_PLAYER);
|
||||
@@ -170,7 +170,7 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -182,10 +182,10 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return [GameObject] nearestGameObject
|
||||
*/
|
||||
int GetNearestGameObject(lua_State* L, WorldObject* obj)
|
||||
int GetNearestGameObject(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
GameObject* target = NULL;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_GAMEOBJECT, entry);
|
||||
@@ -197,7 +197,7 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -209,10 +209,10 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return [Creature] nearestCreature
|
||||
*/
|
||||
int GetNearestCreature(lua_State* L, WorldObject* obj)
|
||||
int GetNearestCreature(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
Creature* target = NULL;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(true, obj, range, TYPEMASK_UNIT, entry);
|
||||
@@ -224,7 +224,7 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -235,9 +235,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return table playersInRange : table of [Player]s
|
||||
*/
|
||||
int GetPlayersInRange(lua_State* L, WorldObject* obj)
|
||||
int GetPlayersInRange(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
|
||||
std::list<Player*> list;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_PLAYER);
|
||||
@@ -249,18 +249,18 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
for (std::list<Player*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||
{
|
||||
Eluna::Push(L, ++i);
|
||||
Eluna::Push(L, *it);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, ++i);
|
||||
Eluna::Push(E->L, *it);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -272,10 +272,10 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return table creaturesInRange : table of [Creature]s
|
||||
*/
|
||||
int GetCreaturesInRange(lua_State* L, WorldObject* obj)
|
||||
int GetCreaturesInRange(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
std::list<Creature*> list;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_UNIT, entry);
|
||||
@@ -287,18 +287,18 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
for (std::list<Creature*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||
{
|
||||
Eluna::Push(L, ++i);
|
||||
Eluna::Push(L, *it);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, ++i);
|
||||
Eluna::Push(E->L, *it);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -310,10 +310,10 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return table gameObjectsInRange : table of [GameObject]s
|
||||
*/
|
||||
int GetGameObjectsInRange(lua_State* L, WorldObject* obj)
|
||||
int GetGameObjectsInRange(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 3, 0);
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 3, 0);
|
||||
|
||||
std::list<GameObject*> list;
|
||||
ElunaUtil::WorldObjectInRangeCheck checker(false, obj, range, TYPEMASK_GAMEOBJECT, entry);
|
||||
@@ -325,18 +325,18 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
for (std::list<GameObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||
{
|
||||
Eluna::Push(L, ++i);
|
||||
Eluna::Push(L, *it);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, ++i);
|
||||
Eluna::Push(E->L, *it);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -351,12 +351,12 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return [WorldObject] worldObject
|
||||
*/
|
||||
int GetNearObject(lua_State* L, WorldObject* obj)
|
||||
int GetNearObject(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint16 type = Eluna::CHECKVAL<uint16>(L, 3, 0); // TypeMask
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 4, 0);
|
||||
uint32 hostile = Eluna::CHECKVAL<uint32>(L, 5, 0); // 0 none, 1 hostile, 2 friendly
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint16 type = Eluna::CHECKVAL<uint16>(E->L, 3, 0); // TypeMask
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 4, 0);
|
||||
uint32 hostile = Eluna::CHECKVAL<uint32>(E->L, 5, 0); // 0 none, 1 hostile, 2 friendly
|
||||
|
||||
float x, y, z;
|
||||
obj->GetPosition(x, y, z);
|
||||
@@ -371,7 +371,7 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
Eluna::Push(L, target);
|
||||
Eluna::Push(E->L, target);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -386,12 +386,12 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return table worldObjectList : table of [WorldObject]s
|
||||
*/
|
||||
int GetNearObjects(lua_State* L, WorldObject* obj)
|
||||
int GetNearObjects(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float range = Eluna::CHECKVAL<float>(L, 2, SIZE_OF_GRIDS);
|
||||
uint16 type = Eluna::CHECKVAL<uint16>(L, 3, 0); // TypeMask
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 4, 0);
|
||||
uint32 hostile = Eluna::CHECKVAL<uint32>(L, 5, 0); // 0 none, 1 hostile, 2 friendly
|
||||
float range = Eluna::CHECKVAL<float>(E->L, 2, SIZE_OF_GRIDS);
|
||||
uint16 type = Eluna::CHECKVAL<uint16>(E->L, 3, 0); // TypeMask
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 4, 0);
|
||||
uint32 hostile = Eluna::CHECKVAL<uint32>(E->L, 5, 0); // 0 none, 1 hostile, 2 friendly
|
||||
|
||||
float x, y, z;
|
||||
obj->GetPosition(x, y, z);
|
||||
@@ -406,18 +406,18 @@ namespace LuaWorldObject
|
||||
obj->VisitNearbyObject(range, searcher);
|
||||
#endif
|
||||
|
||||
lua_newtable(L);
|
||||
int tbl = lua_gettop(L);
|
||||
lua_newtable(E->L);
|
||||
int tbl = lua_gettop(E->L);
|
||||
uint32 i = 0;
|
||||
|
||||
for (std::list<WorldObject*>::const_iterator it = list.begin(); it != list.end(); ++it)
|
||||
{
|
||||
Eluna::Push(L, ++i);
|
||||
Eluna::Push(L, *it);
|
||||
lua_settable(L, tbl);
|
||||
Eluna::Push(E->L, ++i);
|
||||
Eluna::Push(E->L, *it);
|
||||
lua_settable(E->L, tbl);
|
||||
}
|
||||
|
||||
lua_settop(L, tbl);
|
||||
lua_settop(E->L, tbl);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -434,17 +434,17 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float dist : the distance in yards
|
||||
*/
|
||||
int GetDistance(lua_State* L, WorldObject* obj)
|
||||
int GetDistance(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(L, 2, false);
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(E->L, 2, false);
|
||||
if (target && target->IsInWorld())
|
||||
Eluna::Push(L, obj->GetDistance(target));
|
||||
Eluna::Push(E->L, obj->GetDistance(target));
|
||||
else
|
||||
{
|
||||
float X = Eluna::CHECKVAL<float>(L, 2);
|
||||
float Y = Eluna::CHECKVAL<float>(L, 3);
|
||||
float Z = Eluna::CHECKVAL<float>(L, 4);
|
||||
Eluna::Push(L, obj->GetDistance(X, Y, Z));
|
||||
float X = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float Y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float Z = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
Eluna::Push(E->L, obj->GetDistance(X, Y, Z));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -459,17 +459,17 @@ namespace LuaWorldObject
|
||||
* @return float y
|
||||
* @return float z
|
||||
*/
|
||||
int GetRelativePoint(lua_State* L, WorldObject* obj)
|
||||
int GetRelativePoint(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
float dist = Eluna::CHECKVAL<float>(L, 2);
|
||||
float rad = Eluna::CHECKVAL<float>(L, 3);
|
||||
float dist = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float rad = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
|
||||
float x, y, z;
|
||||
obj->GetClosePoint(x, y, z, 0.0f, dist, rad);
|
||||
|
||||
Eluna::Push(L, x);
|
||||
Eluna::Push(L, y);
|
||||
Eluna::Push(L, z);
|
||||
Eluna::Push(E->L, x);
|
||||
Eluna::Push(E->L, y);
|
||||
Eluna::Push(E->L, z);
|
||||
return 3;
|
||||
}
|
||||
|
||||
@@ -486,17 +486,17 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @return float angle : angle in radians in range 0..2*pi
|
||||
*/
|
||||
int GetAngle(lua_State* L, WorldObject* obj)
|
||||
int GetAngle(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(L, 2, false);
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(E->L, 2, false);
|
||||
|
||||
if (target && target->IsInWorld())
|
||||
Eluna::Push(L, obj->GetAngle(target));
|
||||
Eluna::Push(E->L, obj->GetAngle(target));
|
||||
else
|
||||
{
|
||||
float x = Eluna::CHECKVAL<float>(L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(L, 3);
|
||||
Eluna::Push(L, obj->GetAngle(x, y));
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
Eluna::Push(E->L, obj->GetAngle(x, y));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -506,9 +506,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @param [WorldPacket] packet
|
||||
*/
|
||||
int SendPacket(lua_State* L, WorldObject* obj)
|
||||
int SendPacket(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(L, 2);
|
||||
WorldPacket* data = Eluna::CHECKOBJ<WorldPacket>(E->L, 2);
|
||||
obj->SendMessageToSet(data, true);
|
||||
return 0;
|
||||
}
|
||||
@@ -524,18 +524,18 @@ namespace LuaWorldObject
|
||||
* @param uint32 respawnDelay = 30 : respawn time in seconds
|
||||
* @return [GameObject] gameObject
|
||||
*/
|
||||
int SummonGameObject(lua_State* L, WorldObject* obj)
|
||||
int SummonGameObject(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
float x = Eluna::CHECKVAL<float>(L, 3);
|
||||
float y = Eluna::CHECKVAL<float>(L, 4);
|
||||
float z = Eluna::CHECKVAL<float>(L, 5);
|
||||
float o = Eluna::CHECKVAL<float>(L, 6);
|
||||
uint32 respawnDelay = Eluna::CHECKVAL<uint32>(L, 7, 30);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
float z = Eluna::CHECKVAL<float>(E->L, 5);
|
||||
float o = Eluna::CHECKVAL<float>(E->L, 6);
|
||||
uint32 respawnDelay = Eluna::CHECKVAL<uint32>(E->L, 7, 30);
|
||||
#ifndef TRINITY
|
||||
Eluna::Push(L, obj->SummonGameObject(entry, x, y, z, o, respawnDelay));
|
||||
Eluna::Push(E->L, obj->SummonGameObject(entry, x, y, z, o, respawnDelay));
|
||||
#else
|
||||
Eluna::Push(L, obj->SummonGameObject(entry, x, y, z, o, 0, 0, 0, 0, respawnDelay));
|
||||
Eluna::Push(E->L, obj->SummonGameObject(entry, x, y, z, o, 0, 0, 0, 0, respawnDelay));
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -552,15 +552,15 @@ namespace LuaWorldObject
|
||||
* @param uint32 despawnTimer : despawn time in seconds
|
||||
* @return [Creature] spawnedCreature
|
||||
*/
|
||||
int SpawnCreature(lua_State* L, WorldObject* obj)
|
||||
int SpawnCreature(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
float x = Eluna::CHECKVAL<float>(L, 3);
|
||||
float y = Eluna::CHECKVAL<float>(L, 4);
|
||||
float z = Eluna::CHECKVAL<float>(L, 5);
|
||||
float o = Eluna::CHECKVAL<float>(L, 6);
|
||||
uint32 spawnType = Eluna::CHECKVAL<uint32>(L, 7, 8);
|
||||
uint32 despawnTimer = Eluna::CHECKVAL<uint32>(L, 8, 0);
|
||||
uint32 entry = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
float z = Eluna::CHECKVAL<float>(E->L, 5);
|
||||
float o = Eluna::CHECKVAL<float>(E->L, 6);
|
||||
uint32 spawnType = Eluna::CHECKVAL<uint32>(E->L, 7, 8);
|
||||
uint32 despawnTimer = Eluna::CHECKVAL<uint32>(E->L, 8, 0);
|
||||
|
||||
TempSummonType type;
|
||||
switch (spawnType)
|
||||
@@ -602,9 +602,9 @@ namespace LuaWorldObject
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return luaL_argerror(L, 7, "valid SpawnType expected");
|
||||
return luaL_argerror(E->L, 7, "valid SpawnType expected");
|
||||
}
|
||||
Eluna::Push(L, obj->SummonCreature(entry, x, y, z, o, type, despawnTimer));
|
||||
Eluna::Push(E->L, obj->SummonCreature(entry, x, y, z, o, type, despawnTimer));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -621,18 +621,18 @@ namespace LuaWorldObject
|
||||
* @param uint32 repeats : how many times for the event to repeat, 0 is infinite
|
||||
* @return int eventId : unique ID for the timed event used to cancel it or nil
|
||||
*/
|
||||
int RegisterEvent(lua_State* L, WorldObject* obj)
|
||||
int RegisterEvent(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
luaL_checktype(L, 2, LUA_TFUNCTION);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
uint32 repeats = Eluna::CHECKVAL<uint32>(L, 4);
|
||||
luaL_checktype(E->L, 2, LUA_TFUNCTION);
|
||||
uint32 delay = Eluna::CHECKVAL<uint32>(E->L, 3);
|
||||
uint32 repeats = Eluna::CHECKVAL<uint32>(E->L, 4);
|
||||
|
||||
lua_pushvalue(L, 2);
|
||||
int functionRef = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
lua_pushvalue(E->L, 2);
|
||||
int functionRef = luaL_ref(E->L, LUA_REGISTRYINDEX);
|
||||
if (functionRef != LUA_REFNIL && functionRef != LUA_NOREF)
|
||||
{
|
||||
obj->elunaEvents->AddEvent(functionRef, delay, repeats);
|
||||
Eluna::Push(L, functionRef);
|
||||
Eluna::Push(E->L, functionRef);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -642,9 +642,9 @@ namespace LuaWorldObject
|
||||
*
|
||||
* @param int eventId : event Id to remove
|
||||
*/
|
||||
int RemoveEventById(lua_State* L, WorldObject* obj)
|
||||
int RemoveEventById(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
int eventId = Eluna::CHECKVAL<int>(L, 2);
|
||||
int eventId = Eluna::CHECKVAL<int>(E->L, 2);
|
||||
obj->elunaEvents->RemoveEvent(eventId);
|
||||
return 0;
|
||||
}
|
||||
@@ -653,7 +653,7 @@ namespace LuaWorldObject
|
||||
* Removes all timed events from a [WorldObject]
|
||||
*
|
||||
*/
|
||||
int RemoveEvents(lua_State* /*L*/, WorldObject* obj)
|
||||
int RemoveEvents(Eluna* /*E*/, WorldObject* obj)
|
||||
{
|
||||
obj->elunaEvents->RemoveEvents();
|
||||
return 0;
|
||||
@@ -671,18 +671,18 @@ namespace LuaWorldObject
|
||||
* @param float z
|
||||
* @return bool isInLoS
|
||||
*/
|
||||
int IsWithinLoS(lua_State* L, WorldObject* obj)
|
||||
int IsWithinLoS(Eluna* E, WorldObject* obj)
|
||||
{
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(L, 2, false);
|
||||
WorldObject* target = Eluna::CHECKOBJ<WorldObject>(E->L, 2, false);
|
||||
|
||||
if (target)
|
||||
Eluna::Push(L, obj->IsWithinLOSInMap(target));
|
||||
Eluna::Push(E->L, obj->IsWithinLOSInMap(target));
|
||||
else
|
||||
{
|
||||
float x = Eluna::CHECKVAL<float>(L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(L, 4);
|
||||
Eluna::Push(L, obj->IsWithinLOS(x, y, z));
|
||||
float x = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
float y = Eluna::CHECKVAL<float>(E->L, 3);
|
||||
float z = Eluna::CHECKVAL<float>(E->L, 4);
|
||||
Eluna::Push(E->L, obj->IsWithinLOS(x, y, z));
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -14,9 +14,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint16 opcode
|
||||
*/
|
||||
int GetOpcode(lua_State* L, WorldPacket* packet)
|
||||
int GetOpcode(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
Eluna::Push(L, packet->GetOpcode());
|
||||
Eluna::Push(E->L, packet->GetOpcode());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint32 size : size of [WorldPacket]
|
||||
*/
|
||||
int GetSize(lua_State* L, WorldPacket* packet)
|
||||
int GetSize(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
Eluna::Push(L, packet->size());
|
||||
Eluna::Push(E->L, packet->size());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -36,11 +36,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @param uint32 opcode : the opcode specified to be set for the [WorldPacket]
|
||||
*/
|
||||
int SetOpcode(lua_State* L, WorldPacket* packet)
|
||||
int SetOpcode(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint32 opcode = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 opcode = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
if (opcode >= NUM_MSG_TYPES)
|
||||
return luaL_argerror(L, 2, "valid opcode expected");
|
||||
return luaL_argerror(E->L, 2, "valid opcode expected");
|
||||
packet->SetOpcode((OpcodesList)opcode);
|
||||
return 0;
|
||||
}
|
||||
@@ -50,11 +50,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return int8 value
|
||||
*/
|
||||
int ReadByte(lua_State* L, WorldPacket* packet)
|
||||
int ReadByte(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int8 _byte;
|
||||
(*packet) >> _byte;
|
||||
Eluna::Push(L, _byte);
|
||||
Eluna::Push(E->L, _byte);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -63,11 +63,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint8 value
|
||||
*/
|
||||
int ReadUByte(lua_State* L, WorldPacket* packet)
|
||||
int ReadUByte(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint8 _ubyte;
|
||||
(*packet) >> _ubyte;
|
||||
Eluna::Push(L, _ubyte);
|
||||
Eluna::Push(E->L, _ubyte);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -76,11 +76,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return int16 value
|
||||
*/
|
||||
int ReadShort(lua_State* L, WorldPacket* packet)
|
||||
int ReadShort(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int16 _short;
|
||||
(*packet) >> _short;
|
||||
Eluna::Push(L, _short);
|
||||
Eluna::Push(E->L, _short);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -89,11 +89,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint16 value
|
||||
*/
|
||||
int ReadUShort(lua_State* L, WorldPacket* packet)
|
||||
int ReadUShort(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint16 _ushort;
|
||||
(*packet) >> _ushort;
|
||||
Eluna::Push(L, _ushort);
|
||||
Eluna::Push(E->L, _ushort);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -102,11 +102,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return int32 value
|
||||
*/
|
||||
int ReadLong(lua_State* L, WorldPacket* packet)
|
||||
int ReadLong(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int32 _long;
|
||||
(*packet) >> _long;
|
||||
Eluna::Push(L, _long);
|
||||
Eluna::Push(E->L, _long);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -115,11 +115,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint32 value
|
||||
*/
|
||||
int ReadULong(lua_State* L, WorldPacket* packet)
|
||||
int ReadULong(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint32 _ulong;
|
||||
(*packet) >> _ulong;
|
||||
Eluna::Push(L, _ulong);
|
||||
Eluna::Push(E->L, _ulong);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -128,11 +128,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return float value
|
||||
*/
|
||||
int ReadFloat(lua_State* L, WorldPacket* packet)
|
||||
int ReadFloat(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
float _val;
|
||||
(*packet) >> _val;
|
||||
Eluna::Push(L, _val);
|
||||
Eluna::Push(E->L, _val);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -141,11 +141,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return double value
|
||||
*/
|
||||
int ReadDouble(lua_State* L, WorldPacket* packet)
|
||||
int ReadDouble(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
double _val;
|
||||
(*packet) >> _val;
|
||||
Eluna::Push(L, _val);
|
||||
Eluna::Push(E->L, _val);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -154,11 +154,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return uint64 value : value returned as string
|
||||
*/
|
||||
int ReadGUID(lua_State* L, WorldPacket* packet)
|
||||
int ReadGUID(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint64 guid;
|
||||
(*packet) >> guid;
|
||||
Eluna::Push(L, guid);
|
||||
Eluna::Push(E->L, guid);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -167,11 +167,11 @@ namespace LuaPacket
|
||||
*
|
||||
* @return string value
|
||||
*/
|
||||
int ReadString(lua_State* L, WorldPacket* packet)
|
||||
int ReadString(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
std::string _val;
|
||||
(*packet) >> _val;
|
||||
Eluna::Push(L, _val);
|
||||
Eluna::Push(E->L, _val);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -180,9 +180,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param uint64 value : the value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteGUID(lua_State* L, WorldPacket* packet)
|
||||
int WriteGUID(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(L, 2);
|
||||
uint64 guid = Eluna::CHECKVAL<uint64>(E->L, 2);
|
||||
(*packet) << guid;
|
||||
return 0;
|
||||
}
|
||||
@@ -192,9 +192,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param string value : the string to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteString(lua_State* L, WorldPacket* packet)
|
||||
int WriteString(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
std::string _val = Eluna::CHECKVAL<std::string>(L, 2);
|
||||
std::string _val = Eluna::CHECKVAL<std::string>(E->L, 2);
|
||||
(*packet) << _val;
|
||||
return 0;
|
||||
}
|
||||
@@ -204,9 +204,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param int8 value : the int8 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteByte(lua_State* L, WorldPacket* packet)
|
||||
int WriteByte(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int8 byte = Eluna::CHECKVAL<int8>(L, 2);
|
||||
int8 byte = Eluna::CHECKVAL<int8>(E->L, 2);
|
||||
(*packet) << byte;
|
||||
return 0;
|
||||
}
|
||||
@@ -216,9 +216,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param uint8 value : the uint8 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteUByte(lua_State* L, WorldPacket* packet)
|
||||
int WriteUByte(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint8 byte = Eluna::CHECKVAL<uint8>(L, 2);
|
||||
uint8 byte = Eluna::CHECKVAL<uint8>(E->L, 2);
|
||||
(*packet) << byte;
|
||||
return 0;
|
||||
}
|
||||
@@ -228,9 +228,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param int16 value : the int16 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteShort(lua_State* L, WorldPacket* packet)
|
||||
int WriteShort(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int16 _short = Eluna::CHECKVAL<int16>(L, 2);
|
||||
int16 _short = Eluna::CHECKVAL<int16>(E->L, 2);
|
||||
(*packet) << _short;
|
||||
return 0;
|
||||
}
|
||||
@@ -240,9 +240,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param uint16 value : the uint16 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteUShort(lua_State* L, WorldPacket* packet)
|
||||
int WriteUShort(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint16 _ushort = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint16 _ushort = Eluna::CHECKVAL<uint16>(E->L, 2);
|
||||
(*packet) << _ushort;
|
||||
return 0;
|
||||
}
|
||||
@@ -252,9 +252,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param int32 value : the int32 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteLong(lua_State* L, WorldPacket* packet)
|
||||
int WriteLong(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
int32 _long = Eluna::CHECKVAL<int32>(L, 2);
|
||||
int32 _long = Eluna::CHECKVAL<int32>(E->L, 2);
|
||||
(*packet) << _long;
|
||||
return 0;
|
||||
}
|
||||
@@ -264,9 +264,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param uint32 value : the uint32 value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteULong(lua_State* L, WorldPacket* packet)
|
||||
int WriteULong(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
uint32 _ulong = Eluna::CHECKVAL<uint32>(L, 2);
|
||||
uint32 _ulong = Eluna::CHECKVAL<uint32>(E->L, 2);
|
||||
(*packet) << _ulong;
|
||||
return 0;
|
||||
}
|
||||
@@ -276,9 +276,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param float value : the float value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteFloat(lua_State* L, WorldPacket* packet)
|
||||
int WriteFloat(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
float _val = Eluna::CHECKVAL<float>(L, 2);
|
||||
float _val = Eluna::CHECKVAL<float>(E->L, 2);
|
||||
(*packet) << _val;
|
||||
return 0;
|
||||
}
|
||||
@@ -288,9 +288,9 @@ namespace LuaPacket
|
||||
*
|
||||
* @param double value : the double value to be written to the [WorldPacket]
|
||||
*/
|
||||
int WriteDouble(lua_State* L, WorldPacket* packet)
|
||||
int WriteDouble(Eluna* E, WorldPacket* packet)
|
||||
{
|
||||
double _val = Eluna::CHECKVAL<double>(L, 2);
|
||||
double _val = Eluna::CHECKVAL<double>(E->L, 2);
|
||||
(*packet) << _val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user