#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305)
#endif
class SCRIPT_DECL LevelArenaNPC : public GossipScript
{
public:
void Destroy()
{
delete this;
}
int DLevelGruppe(Player * plr)
{
double average = 0;
int c = 0, avg = 0;
GroupMembersSet::iterator itr = plr->GetGroup()->GetSubGroup(plr->GetSubGroup())->GetGroupMembersBegin(); // Iterator zum Durchlaufen
GroupMembersSet::iterator end = plr->GetGroup()->GetSubGroup(plr->GetSubGroup())->GetGroupMembersEnd(); // NULL-Iterator
for(; itr != end; ++itr)
{
Player* pPlr = objmgr.GetPlayer((*itr)->guid);
if(pPlr) // wenn Gruppenmitglied gefunden
{
average += pPlr->getLevel(); // Level addieren
++c; // Mitgliederanzahl erhöhen
}
}
average /= c; // addierte Level aller Spieler durch Anzahl teilen
avg = int(average); // Durchschnittswert ganzzahlig machen
if(!plr)
return 0;
}
void GossipHello(Object* pObject, Player * Plr, bool AutoSend)
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 2593, Plr);
Menu->AddItem(0, "Gib mir die Anzahl der Gruppenmitglieder", 1);
Menu->AddItem(0, "Bespawne die LevelArena!", 3);
Menu->AddItem(0, "Auf Wiedersehen", 2);
if(AutoSend)
Menu->SendTo(Plr);
}
void GossipSelectOption(Object* pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
switch(IntId)
{
case 0: // Return to start
GossipHello(pObject, Plr, true);
break;
case 1:
{
int dlevel = DLevelGruppe(Plr);
SubGroup * group = Plr->GetGroup() ?
Plr->GetGroup()->GetSubGroup(Plr->GetSubGroup()) : 0;
if(group == 0)
{
Plr->BroadcastMessage("Keine Gruppe!");
}
else
{
Plr->BroadcastMessage("Eure Gruppe hat %u Mitglieder!", group->GetMemberCount());
Plr->BroadcastMessage("Das Durchschnittslevel betraegt %i!", dlevel);
Plr->Gossip_Complete();
}
}
break;*/
case 2:
{
Plr->Gossip_Complete();
}
break;
case 3:
{
int dlevel = DLevelGruppe(Plr);
QueryResult* res = WorldDatabase.Query("SELECT * FROM lvlarena_npc WHERE level = %u", (uint32)dlevel);
if(res)
{
Plr->BroadcastMessage("Es gibt %u Zeilen in der Table lvlarena_npc", res->GetRowCount());
}
while(res->NextRow());
delete res;
}
break;
}
}
};
void SetupLevelArenaNPC(ScriptMgr * mgr)
{
GossipScript * lvlscript = (GossipScript*) new LevelArenaNPC();
mgr->register_gossip_script(76500, lvlscript);
}