mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Move GetPlayers from global method to map method.
For backwards compatibility for GetPlayersInMap(mapid, instid) use GetMapById(mapid, instid):GetPlayers()
This commit is contained in:
@@ -190,56 +190,6 @@ namespace LuaGlobalFunctions
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a table with all the current [Player]s in a map
|
|
||||||
*
|
|
||||||
* enum TeamId
|
|
||||||
* {
|
|
||||||
* TEAM_ALLIANCE = 0,
|
|
||||||
* TEAM_HORDE = 1,
|
|
||||||
* TEAM_NEUTRAL = 2
|
|
||||||
* };
|
|
||||||
*
|
|
||||||
* @param uint32 mapId : the [Map] entry ID
|
|
||||||
* @param uint32 instanceId : the instance ID to search in the map
|
|
||||||
* @param [TeamId] team : optional check team of the [Player], Alliance, Horde or Neutral (All)
|
|
||||||
* @return table mapPlayers
|
|
||||||
*/
|
|
||||||
int GetPlayersInMap(lua_State* L)
|
|
||||||
{
|
|
||||||
uint32 mapID = Eluna::CHECKVAL<uint32>(L, 1);
|
|
||||||
uint32 instanceID = Eluna::CHECKVAL<uint32>(L, 2, 0);
|
|
||||||
uint32 team = Eluna::CHECKVAL<uint32>(L, 3, TEAM_NEUTRAL);
|
|
||||||
|
|
||||||
lua_newtable(L);
|
|
||||||
int tbl = lua_gettop(L);
|
|
||||||
uint32 i = 0;
|
|
||||||
|
|
||||||
Map* map = eMapMgr->FindMap(mapID, instanceID);
|
|
||||||
if (!map)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
Map::PlayerList const& players = map->GetPlayers();
|
|
||||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
|
||||||
{
|
|
||||||
#ifndef TRINITY
|
|
||||||
Player* player = itr->getSource();
|
|
||||||
#else
|
|
||||||
Player* player = itr->GetSource();
|
|
||||||
#endif
|
|
||||||
if (!player)
|
|
||||||
continue;
|
|
||||||
if (player->GetSession() && (team >= TEAM_NEUTRAL || player->GetTeamId() == team))
|
|
||||||
{
|
|
||||||
Eluna::Push(L, player);
|
|
||||||
lua_rawseti(L, tbl, ++i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lua_settop(L, tbl);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a [Guild] by name.
|
* Returns a [Guild] by name.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ luaL_Reg GlobalMethods[] =
|
|||||||
{ "GetPlayerByName", &LuaGlobalFunctions::GetPlayerByName },
|
{ "GetPlayerByName", &LuaGlobalFunctions::GetPlayerByName },
|
||||||
{ "GetGameTime", &LuaGlobalFunctions::GetGameTime },
|
{ "GetGameTime", &LuaGlobalFunctions::GetGameTime },
|
||||||
{ "GetPlayersInWorld", &LuaGlobalFunctions::GetPlayersInWorld },
|
{ "GetPlayersInWorld", &LuaGlobalFunctions::GetPlayersInWorld },
|
||||||
{ "GetPlayersInMap", &LuaGlobalFunctions::GetPlayersInMap },
|
|
||||||
{ "GetGuildByName", &LuaGlobalFunctions::GetGuildByName },
|
{ "GetGuildByName", &LuaGlobalFunctions::GetGuildByName },
|
||||||
{ "GetGuildByLeaderGUID", &LuaGlobalFunctions::GetGuildByLeaderGUID },
|
{ "GetGuildByLeaderGUID", &LuaGlobalFunctions::GetGuildByLeaderGUID },
|
||||||
{ "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount },
|
{ "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount },
|
||||||
@@ -1188,6 +1187,7 @@ ElunaRegister<Map> MapMethods[] =
|
|||||||
{ "GetInstanceId", &LuaMap::GetInstanceId },
|
{ "GetInstanceId", &LuaMap::GetInstanceId },
|
||||||
{ "GetInstanceData", &LuaMap::GetInstanceData },
|
{ "GetInstanceData", &LuaMap::GetInstanceData },
|
||||||
{ "GetPlayerCount", &LuaMap::GetPlayerCount },
|
{ "GetPlayerCount", &LuaMap::GetPlayerCount },
|
||||||
|
{ "GetPlayers", &LuaMap::GetPlayers },
|
||||||
{ "GetMapId", &LuaMap::GetMapId },
|
{ "GetMapId", &LuaMap::GetMapId },
|
||||||
{ "GetAreaId", &LuaMap::GetAreaId },
|
{ "GetAreaId", &LuaMap::GetAreaId },
|
||||||
{ "GetHeight", &LuaMap::GetHeight },
|
{ "GetHeight", &LuaMap::GetHeight },
|
||||||
|
|||||||
42
MapMethods.h
42
MapMethods.h
@@ -320,5 +320,47 @@ namespace LuaMap
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a table with all the current [Player]s in the map
|
||||||
|
*
|
||||||
|
* enum TeamId
|
||||||
|
* {
|
||||||
|
* TEAM_ALLIANCE = 0,
|
||||||
|
* TEAM_HORDE = 1,
|
||||||
|
* TEAM_NEUTRAL = 2
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* @param [TeamId] team : optional check team of the [Player], Alliance, Horde or Neutral (All)
|
||||||
|
* @return table mapPlayers
|
||||||
|
*/
|
||||||
|
int GetPlayers(lua_State* L, Map* map)
|
||||||
|
{
|
||||||
|
uint32 team = Eluna::CHECKVAL<uint32>(L, 2, TEAM_NEUTRAL);
|
||||||
|
|
||||||
|
lua_newtable(L);
|
||||||
|
int tbl = lua_gettop(L);
|
||||||
|
uint32 i = 0;
|
||||||
|
|
||||||
|
Map::PlayerList const& players = map->GetPlayers();
|
||||||
|
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||||
|
{
|
||||||
|
#ifndef TRINITY
|
||||||
|
Player* player = itr->getSource();
|
||||||
|
#else
|
||||||
|
Player* player = itr->GetSource();
|
||||||
|
#endif
|
||||||
|
if (!player)
|
||||||
|
continue;
|
||||||
|
if (player->GetSession() && (team >= TEAM_NEUTRAL || player->GetTeamId() == team))
|
||||||
|
{
|
||||||
|
Eluna::Push(L, player);
|
||||||
|
lua_rawseti(L, tbl, ++i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_settop(L, tbl);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user