Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
GroupMethods.cpp
Go to the documentation of this file.
1/*
2* Copyright (C) 2010 - 2013 Eluna Lua Engine <http://emudevs.com/>
3* This program is free software licensed under GPL version 3
4* Please see the included DOCS/LICENSE.TXT for more information
5*/
6
7#include "GroupMethods.h"
8#include "Includes.h"
9
10namespace LuaGroup
11{
12 int GetMembers(lua_State* L, Group* group)
13 {
14 lua_newtable(L);
15 int tbl = lua_gettop(L);
16 uint32 i = 0;
17
18 for (GroupReference* itr = group->GetFirstMember(); itr; itr = itr->next())
19 {
20 Player* member = itr->GetSource();
21
22 if (!member || !member->GetSession())
23 continue;
24
25 ++i;
26 sEluna->Push(L, i);
27 sEluna->Push(L, member);
28 lua_settable(L, tbl);
29 }
30
31 lua_settop(L, tbl); // push table to top of stack
32 return 1;
33 }
34
35 int GetLeaderGUID(lua_State* L, Group* group)
36 {
37 sEluna->Push(L, group->GetLeaderGUID());
38 return 1;
39 }
40
41 int GetLeader(lua_State* L, Group* group)
42 {
44 return 1;
45 }
46
47 int GetGUID(lua_State* L, Group* group)
48 {
49 sEluna->Push(L, group->GetGUID());
50 return 1;
51 }
52
53 int ChangeLeader(lua_State* L, Group* group)
54 {
55 Player* leader = sEluna->CHECK_PLAYER(L, 1);
56 if (!leader)
57 return 0;
58
59 group->ChangeLeader(leader->GetGUID());
60 sEluna->Push(L, true);
61 return 1;
62 }
63
64 int IsLeader(lua_State* L, Group* group)
65 {
66 Player* player = sEluna->CHECK_PLAYER(L, 1);
67 if (!player)
68 if (const char* name = luaL_checkstring(L, 1))
70 if (!player)
71 return 0;
72
73 sEluna->Push(L, group->IsLeader(player->GetGUID()));
74 return 1;
75 }
76
77 // SendPacket(packet, sendToPlayersInBattleground[, ignoreguid])
78 int SendPacket(lua_State* L, Group* group)
79 {
80 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
81 bool ignorePlayersInBg = luaL_checkbool(L, 2);
82 ObjectGuid ignore(uint64(sEluna->CHECK_ULONG(L, 3)));
83
84 if (data)
85 group->BroadcastPacket(data, ignorePlayersInBg, -1, ignore);
86 return 0;
87 }
88
89 int AddInvite(lua_State* L, Group* group)
90 {
91 Player* player = sEluna->CHECK_PLAYER(L, 1);
92 if (!player)
93 return 0;
94
95 sEluna->Push(L, group->AddInvite(player));
96 return 1;
97 }
98
99 int RemoveMember(lua_State* L, Group* group)
100 {
101 Player* player = sEluna->CHECK_PLAYER(L, 1);
102 int method = luaL_optint(L, 2, 0);
103 if (!player)
104 return 0;
105
106 sEluna->Push(L, group->RemoveMember(player->GetGUID(), (RemoveMethod)method));
107 return 1;
108 }
109
110 int Disband(lua_State* L, Group* group)
111 {
112 group->Disband();
113 return 0;
114 }
115
116 int IsFull(lua_State* L, Group* group)
117 {
118 sEluna->Push(L, group->IsFull());
119 return 1;
120 }
121
122 int isLFGGroup(lua_State* L, Group* group)
123 {
124 sEluna->Push(L, group->isLFGGroup());
125 return 1;
126 }
127
128 int isRaidGroup(lua_State* L, Group* group)
129 {
130 sEluna->Push(L, group->isRaidGroup());
131 return 1;
132 }
133
134 int isBGGroup(lua_State* L, Group* group)
135 {
136 sEluna->Push(L, group->isBGGroup());
137 return 1;
138 }
139
140 int isBFGroup(lua_State* L, Group* group)
141 {
142 sEluna->Push(L, group->isBFGroup());
143 return 1;
144 }
145
146 int IsMember(lua_State* L, Group* group)
147 {
148 Player* player = sEluna->CHECK_PLAYER(L, 1);
149 if (!player)
150 return 0;
151 sEluna->Push(L, group->IsMember(player->GetGUID()));
152 return 1;
153 }
154
155 int IsAssistant(lua_State* L, Group* group)
156 {
157 Player* player = sEluna->CHECK_PLAYER(L, 1);
158 if (!player)
159 return 0;
160
161 sEluna->Push(L, group->IsAssistant(player->GetGUID()));
162 return 1;
163 }
164
165 int SameSubGroup(lua_State* L, Group* group)
166 {
167 Player* player1 = sEluna->CHECK_PLAYER(L, 1);
168 Player* player2 = sEluna->CHECK_PLAYER(L, 2);
169 if (!player1 || !player2)
170 return 0;
171 sEluna->Push(L, group->SameSubGroup(player1, player2));
172 return 1;
173 }
174
175 int HasFreeSlotSubGroup(lua_State* L, Group* group)
176 {
177 uint8 subGroup = luaL_checkunsigned(L, 1);
178 sEluna->Push(L, group->HasFreeSlotSubGroup(subGroup));
179 return 1;
180 }
181
182 int GetMemberGUID(lua_State* L, Group* group)
183 {
184 const char* name = luaL_checkstring(L, 1);
185 sEluna->Push(L, group->GetMemberGUID(name));
186 return 1;
187 }
188
189 int GetMembersCount(lua_State* L, Group* group)
190 {
191 sEluna->Push(L, group->GetMembersCount());
192 return 1;
193 }
194
195 int ConvertToLFG(lua_State* L, Group* group)
196 {
197 group->ConvertToLFG();
198 return 0;
199 }
200
201 int ConvertToRaid(lua_State* L, Group* group)
202 {
203 group->ConvertToRaid();
204 return 0;
205 }
206
207 int ChangeMembersGroup(lua_State* L, Group* group)
208 {
209 Player* player = sEluna->CHECK_PLAYER(L, 1);
210 uint8 groupID = luaL_checkunsigned(L, 2);
211
212 if (player)
213 group->ChangeMembersGroup(player->GetGUID(), groupID);
214 return 0;
215 }
216
217 int GetMemberGroup(lua_State* L, Group* group)
218 {
219 Player* player = sEluna->CHECK_PLAYER(L, 1);
220 if (!player)
221 return 0;
222
223 sEluna->Push(L, group->GetMemberGroup(player->GetGUID()));
224 return 1;
225 }
226};
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
#define sEluna
Definition LuaEngine.h:710
RemoveMethod
Definition Group.h:147
bool isLFGGroup() const
Definition Group.cpp:2543
void Disband(bool hideDestroy=false)
Definition Group.cpp:700
void BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group=-1, uint64 ignore=0)
Definition Group.cpp:1907
bool isBGGroup() const
Definition Group.cpp:2553
void ConvertToRaid()
Definition Group.cpp:229
uint32 GetMembersCount() const
Definition Group.h:227
uint64 GetGUID() const
Definition Group.cpp:2573
uint8 GetMemberGroup(uint64 guid) const
Definition Group.cpp:2651
void ConvertToLFG()
Definition Group.cpp:212
bool IsMember(uint64 guid) const
Definition Group.cpp:2603
bool HasFreeSlotSubGroup(uint8 subgroup) const
Definition Group.cpp:2645
bool isBFGroup() const
Definition Group.cpp:2558
bool RemoveMember(uint64 guid, const RemoveMethod &method=GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker=0, const char *reason=NULL)
Definition Group.cpp:501
GroupReference * GetFirstMember()
Definition Group.h:225
uint64 GetMemberGUID(const std::string &name)
Definition Group.cpp:2613
bool AddInvite(Player *player)
Definition Group.cpp:284
bool IsFull() const
Definition Group.cpp:2538
bool SameSubGroup(uint64 guid1, uint64 guid2) const
Definition Group.cpp:2629
bool IsAssistant(uint64 guid) const
Definition Group.cpp:2621
uint64 GetLeaderGUID() const
Definition Group.cpp:2568
bool IsLeader(uint64 guid) const
Definition Group.cpp:2608
bool isRaidGroup() const
Definition Group.cpp:2548
void ChangeMembersGroup(uint64 guid, uint8 group)
Definition Group.cpp:2021
void ChangeLeader(uint64 guid)
Definition Group.cpp:628
GroupReference * next()
static Player * FindPlayerByName(std::string const &name)
static Player * FindPlayer(uint64)
uint64 GetGUID() const
Definition Object.h:119
WorldSession * GetSession() const
Definition Player.h:2417
int SendPacket(lua_State *L, Group *group)
int ChangeMembersGroup(lua_State *L, Group *group)
int IsMember(lua_State *L, Group *group)
int GetMemberGroup(lua_State *L, Group *group)
int RemoveMember(lua_State *L, Group *group)
int GetLeaderGUID(lua_State *L, Group *group)
int isLFGGroup(lua_State *L, Group *group)
int Disband(lua_State *L, Group *group)
int AddInvite(lua_State *L, Group *group)
int IsFull(lua_State *L, Group *group)
int IsLeader(lua_State *L, Group *group)
int isBGGroup(lua_State *L, Group *group)
int HasFreeSlotSubGroup(lua_State *L, Group *group)
int GetLeader(lua_State *L, Group *group)
int SameSubGroup(lua_State *L, Group *group)
int ConvertToRaid(lua_State *L, Group *group)
int GetMemberGUID(lua_State *L, Group *group)
int isBFGroup(lua_State *L, Group *group)
int GetMembers(lua_State *L, Group *group)
int isRaidGroup(lua_State *L, Group *group)
int GetGUID(lua_State *L, Group *group)
int GetMembersCount(lua_State *L, Group *group)
int ConvertToLFG(lua_State *L, Group *group)
int ChangeLeader(lua_State *L, Group *group)
int IsAssistant(lua_State *L, Group *group)