Találtam a gépemen egy Top aréna csapat npc-t és gondoltam megosztom veletek.
#include "ScriptPCH.h"
using namespace std;
class npc_arena_teamTop : public CreatureScript
{
public:
npc_arena_teamTop() : CreatureScript("npc_arena_teamTop") { }
bool OnGossipHello(Player * player, Creature * creature)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "View top 2v2 Arena Teams", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "View top 3v3 Arena Teams", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Nevermind", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->SEND_GOSSIP_MENU(1, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player * player, Creature * creature, uint32 sender, uint32 actions)
{
if(sender == GOSSIP_SENDER_MAIN)
{
switch(actions)
{
case GOSSIP_ACTION_INFO_DEF+1:
{
QueryResult result = CharacterDatabase.Query("SELECT name,rating FROM arena_team WHERE type='2' ORDER BY rating DESC LIMIT 10");
if(!result)
return false;
Field * fields = NULL;
player->MonsterWhisper("|cff4169E1Here are the top 10 2v2 arena teams:|r", player->GetGUID());
do
{
fields = result->Fetch();
string arena_name = fields[0].GetString();
uint32 rating = fields[1].GetUInt32();
char msg[250];
snprintf(msg, 250, "Team Name: |cffFFFF00%s|r, Team Rating: %u \n", arena_name.c_str(), rating);
player->MonsterWhisper(msg, player->GetGUID());
}while(result->NextRow());
}break;
case GOSSIP_ACTION_INFO_DEF+2:
{
QueryResult result = CharacterDatabase.Query("SELECT name,rating FROM arena_team WHERE type='3' ORDER BY rating DESC LIMIT 10");
if(!result)
return false;
Field * fields = NULL;
player->MonsterWhisper("|cff4169E1Here are the top 10 3v3 arena teams:|r", player->GetGUID());
do
{
fields = result->Fetch();
string arena_name = fields[0].GetString();
uint32 rating = fields[1].GetUInt32();
char msg[250];
snprintf(msg, 250, "Team Name: |cffFFFF00%s|r, Team Rating: %u \n", arena_name.c_str(), rating);
player->MonsterWhisper(msg, player->GetGUID());
}while(result->NextRow());
}break;
case GOSSIP_ACTION_INFO_DEF+3:
{
player->PlayerTalkClass->SendCloseGossip();
}break;
}
}
return true;
}
};
void AddSC_npc_arena_setup()
{
new npc_arena_teamTop;
}
Jónak tűnik, viszont ez a script-en belüli SQL lekérdezés elég nagy gubancot tud okozni. Persze csak akkor, ha 2-3-400 ember egyszerre akarja megnézni a csapatokat. Ekkor már elég durván be tudja laggoltatni a szervert.
Idézetet írta: Armin Dátum 2013 március 19, 02:50:03 DÉLUTÁN
Jónak tűnik, viszont ez a script-en belüli SQL lekérdezés elég nagy gubancot tud okozni. Persze csak akkor, ha 2-3-400 ember egyszerre akarja megnézni a csapatokat. Ekkor már elég durván be tudja laggoltatni a szervert.
He? És melyik szerveren akarja egyszerre 400ember megnézni a csapatokat? A weboldal alapú toplisták is ugyan ezeket az sql lekérdezéseket használják...
Idéz
A weboldal alapú toplisták is ugyan ezeket az sql lekérdezéseket használják..
Ja, csak nem az emun keresztül ;D
Idéz
És melyik szerveren akarja egyszerre 400ember megnézni a csapatokat?
Ezért írtam, hogy "persze csak akkor, ha...."
Valakitől segítséget kérnék:
-A scriptben hol írja le, mit kell ScriptName-nek adni (ezt írtam: npc_arena_teamTop)
-creature template-be beírtam, de csak az alap szöveget írja nekem ki ez a fattyú :/
Valaki küldene egy NPC Scriptet, ami pont optimális ehhez, bele van írva, stb. ^^
Fontos lenne :/
Hibátlan a script én is használom de kibővítettem az 5v5-el ha valaki nem akar azzal időt tölteni itt van :http://pastebin.com/rZznAufn
Azzeroth neked küldöm INSERT INTO `creature_template` (`entry`, `modelid1`, `name`, `minlevel`, `maxlevel`, `faction_A`, `faction_H`, `npcflag`, `ScriptName`, `WDBVerified`) VALUES ('7000000', '26000', 'Aréna Top', '80', '80', '35', '35', '3', 'npc_arena_teamTop', '12340'); tessék ez működni fog
IdézAzzeroth neked küldöm INSERT INTO `creature_template` (`entry`, `modelid1`, `name`, `minlevel`, `maxlevel`, `faction_A`, `faction_H`, `npcflag`, `ScriptName`, `WDBVerified`) VALUES ('7000000', '26000', 'Aréna Top', '80', '80', '35', '35', '3', 'npc_arena_teamTop', '12340'); tessék ez működni fog
ezzel biztos nem fog menni :D rossz sql :D
Hibátlan nekem megy -.-
teszteltem nekem nem megy. De amugy subname kimaradt az SQL-ed ből :D
Vikideking: közönyösséged tartsd magadban.. Segítséget kértem nem leoltást..;)
Rasocsabi: köszönöm a segìtségedet, hétvégén meg is nézem :)
Örülök hogy segítettem :)