mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 01:11:29 +00:00
Included in the required SQL is weather data pulled from NewZone live packets for up to PoP. An update to EQExtractor will be made to grab the rest of the data from existing collects. Please note: Until weather data is grabbed for zones later than PoP, weather will not work in those zones.
487 lines
18 KiB
C++
487 lines
18 KiB
C++
#ifndef ZONEDB_H_
|
|
#define ZONEDB_H_
|
|
|
|
#include "../common/shareddb.h"
|
|
#include "../common/eq_packet_structs.h"
|
|
#include "../common/loottable.h"
|
|
#include "zonedump.h"
|
|
#include "../common/faction.h"
|
|
//#include "doors.h"
|
|
|
|
struct wplist {
|
|
int index;
|
|
float x;
|
|
float y;
|
|
float z;
|
|
int pause;
|
|
float heading;
|
|
};
|
|
|
|
#pragma pack(1)
|
|
struct DBnpcspells_entries_Struct {
|
|
int16 spellid;
|
|
uint16 type;
|
|
uint8 minlevel;
|
|
uint8 maxlevel;
|
|
int16 manacost;
|
|
int32 recast_delay;
|
|
int16 priority;
|
|
int16 resist_adjust;
|
|
};
|
|
#pragma pack()
|
|
|
|
struct DBnpcspells_Struct {
|
|
uint32 parent_list;
|
|
int16 attack_proc;
|
|
uint8 proc_chance;
|
|
uint32 numentries;
|
|
DBnpcspells_entries_Struct entries[0];
|
|
};
|
|
|
|
struct DBTradeskillRecipe_Struct {
|
|
SkillUseTypes tradeskill;
|
|
int16 skill_needed;
|
|
uint16 trivial;
|
|
bool nofail;
|
|
bool replace_container;
|
|
std::vector< std::pair<uint32,uint8> > onsuccess;
|
|
std::vector< std::pair<uint32,uint8> > onfail;
|
|
std::vector< std::pair<uint32,uint8> > salvage;
|
|
std::string name;
|
|
uint8 must_learn;
|
|
bool has_learnt;
|
|
uint32 madecount;
|
|
uint32 recipe_id;
|
|
bool quest;
|
|
};
|
|
|
|
struct PetRecord {
|
|
uint32 npc_type; // npc_type id for the pet data to use
|
|
bool temporary;
|
|
int16 petpower;
|
|
uint8 petcontrol; // What kind of control over the pet is possible (Animation, familiar, ...)
|
|
uint8 petnaming; // How to name the pet (Warder, pet, random name, familiar, ...)
|
|
bool monsterflag; // flag for if a random monster appearance should get picked
|
|
uint32 equipmentset; // default equipment for the pet
|
|
};
|
|
|
|
// Actual pet info for a client.
|
|
struct PetInfo {
|
|
uint16 SpellID;
|
|
int16 petpower;
|
|
uint32 HP;
|
|
uint32 Mana;
|
|
float size;
|
|
SpellBuff_Struct Buffs[BUFF_COUNT];
|
|
uint32 Items[MAX_WORN_INVENTORY];
|
|
char Name[64];
|
|
};
|
|
|
|
struct ZoneSpellsBlocked {
|
|
uint32 spellid;
|
|
int8 type;
|
|
float x;
|
|
float y;
|
|
float z;
|
|
float xdiff;
|
|
float ydiff;
|
|
float zdiff;
|
|
char message[256];
|
|
};
|
|
|
|
struct TraderCharges_Struct {
|
|
uint32 ItemID[80];
|
|
int32 SerialNumber[80];
|
|
uint32 ItemCost[80];
|
|
int32 Charges[80];
|
|
};
|
|
|
|
const int MaxMercStanceID = 9;
|
|
|
|
struct MercStanceInfo {
|
|
uint8 ProficiencyID;
|
|
uint8 ClassID;
|
|
uint32 StanceID;
|
|
uint8 IsDefault;
|
|
};
|
|
|
|
struct MercTemplate {
|
|
uint32 MercTemplateID;
|
|
uint32 MercType; // From dbstr_us.txt - Apprentice (330000100), Journeyman (330000200), Master (330000300)
|
|
uint32 MercSubType; // From dbstr_us.txt - 330020105^23^Race: Guktan<br>Type: Healer<br>Confidence: High<br>Proficiency: Apprentice, Tier V...
|
|
uint16 RaceID;
|
|
uint8 ClassID;
|
|
uint32 MercNPCID;
|
|
uint8 ProficiencyID;
|
|
uint8 TierID;
|
|
uint8 CostFormula; // To determine cost to client
|
|
uint32 ClientVersion; // Only send valid mercs per expansion
|
|
uint8 MercNameType; // Determines if merc gets random name or default text
|
|
char MercNamePrefix[25];
|
|
char MercNameSuffix[25];
|
|
uint32 Stances[MaxMercStanceID];
|
|
};
|
|
|
|
struct MercInfo {
|
|
uint32 mercid;
|
|
uint8 slot;
|
|
char merc_name[64];
|
|
uint32 MercTemplateID;
|
|
const MercTemplate* myTemplate;
|
|
uint32 SuspendedTime;
|
|
bool IsSuspended;
|
|
uint32 MercTimerRemaining;
|
|
uint8 Gender;
|
|
int32 State;
|
|
uint32 Stance;
|
|
int32 hp;
|
|
int32 mana;
|
|
int32 endurance;
|
|
uint8 face;
|
|
uint8 luclinHairStyle;
|
|
uint8 luclinHairColor;
|
|
uint8 luclinEyeColor;
|
|
uint8 luclinEyeColor2;
|
|
uint8 luclinBeardColor;
|
|
uint8 luclinBeard;
|
|
uint32 drakkinHeritage;
|
|
uint32 drakkinTattoo;
|
|
uint32 drakkinDetails;
|
|
};
|
|
|
|
struct MercSpellEntry {
|
|
uint8 proficiencyid;
|
|
uint16 spellid; // <= 0 = no spell
|
|
uint32 type; // 0 = never, must be one (and only one) of the defined values
|
|
int16 stance; // 0 = all, + = only this stance, - = all except this stance
|
|
uint8 minlevel;
|
|
uint8 maxlevel;
|
|
int16 slot;
|
|
uint16 proc_chance;
|
|
uint32 time_cancast; // when we can cast this spell next
|
|
};
|
|
|
|
struct ClientMercEntry {
|
|
uint32 id;
|
|
uint32 npcid;
|
|
};
|
|
|
|
class ItemInst;
|
|
struct FactionMods;
|
|
struct FactionValue;
|
|
struct LootTable_Struct;
|
|
|
|
|
|
class ZoneDatabase : public SharedDatabase {
|
|
typedef std::list<ServerLootItem_Struct*> ItemList;
|
|
public:
|
|
ZoneDatabase();
|
|
ZoneDatabase(const char* host, const char* user, const char* passwd, const char* database,uint32 port);
|
|
virtual ~ZoneDatabase();
|
|
|
|
/*
|
|
* Objects and World Containers
|
|
*/
|
|
void LoadWorldContainer(uint32 parentid, ItemInst* container);
|
|
void SaveWorldContainer(uint32 zone_id, uint32 parent_id, const ItemInst* container);
|
|
void DeleteWorldContainer(uint32 parent_id,uint32 zone_id);
|
|
uint32 AddObject(uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst);
|
|
void UpdateObject(uint32 id, uint32 type, uint32 icon, const Object_Struct& object, const ItemInst* inst);
|
|
void DeleteObject(uint32 id);
|
|
Ground_Spawns* LoadGroundSpawns(uint32 zone_id, int16 version, Ground_Spawns* gs);
|
|
|
|
/*
|
|
* Traders
|
|
*/
|
|
|
|
void SaveTraderItem(uint32 char_id,uint32 itemid,uint32 uniqueid, int32 charges,uint32 itemcost,uint8 slot);
|
|
void UpdateTraderItemCharges(int char_id, uint32 ItemInstID, int32 charges);
|
|
void UpdateTraderItemPrice(int CharID, uint32 ItemID, uint32 Charges, uint32 NewPrice);
|
|
ItemInst* LoadSingleTraderItem(uint32 char_id, int uniqueid);
|
|
void DeleteTraderItem(uint32 char_id);
|
|
void DeleteTraderItem(uint32 char_id,uint16 slot_id);
|
|
Trader_Struct* LoadTraderItem(uint32 char_id);
|
|
TraderCharges_Struct* LoadTraderItemWithCharges(uint32 char_id);
|
|
|
|
// Buyer/Barter
|
|
//
|
|
void AddBuyLine(uint32 CharID, uint32 BuySlot, uint32 ItemID, const char *ItemName, uint32 Quantity, uint32 Price);
|
|
void RemoveBuyLine(uint32 CharID, uint32 BuySlot);
|
|
void DeleteBuyLines(uint32 CharID);
|
|
void UpdateBuyLine(uint32 CharID, uint32 BuySlot, uint32 Quantity);
|
|
|
|
/*
|
|
* General Character Related Stuff
|
|
*/
|
|
bool SetServerFilters(char* name, ServerSideFilters_Struct *ssfs);
|
|
uint32 GetServerFilters(char* name, ServerSideFilters_Struct *ssfs);
|
|
bool GetAccountInfoForLogin(uint32 account_id, int16* admin = 0, char* account_name = 0,
|
|
uint32* lsaccountid = 0, uint8* gmspeed = 0, bool* revoked = 0, bool* gmhideme = 0);
|
|
bool GetAccountInfoForLogin_result(MYSQL_RES* result, int16* admin = 0, char* account_name = 0,
|
|
uint32* lsaccountid = 0, uint8* gmspeed = 0, bool* revoked = 0, bool* gmhideme = nullptr,
|
|
uint32* account_creation = 0);
|
|
bool GetCharacterInfoForLogin_result(MYSQL_RES* result, uint32* character_id = 0, char* current_zone = 0,
|
|
PlayerProfile_Struct* pp = 0, Inventory* inv = 0, ExtendedProfile_Struct *ext = 0, uint32* pplen = 0,
|
|
uint32* guilddbid = 0, uint8* guildrank = 0, uint8 *class_= 0, uint8 *level = 0, bool *LFP = 0,
|
|
bool *LFG = 0, uint8 *NumXTargets = 0, uint8* firstlogon = 0);
|
|
bool GetCharacterInfoForLogin(const char* name, uint32* character_id = 0, char* current_zone = 0,
|
|
PlayerProfile_Struct* pp = 0, Inventory* inv = 0, ExtendedProfile_Struct *ext = 0, uint32* pplen = 0,
|
|
uint32* guilddbid = 0, uint8* guildrank = 0, uint8 *class_ = 0, uint8 *level = 0, bool *LFP = 0,
|
|
bool *LFG = 0, uint8 *NumXTargets = 0, uint8* firstlogon = 0);
|
|
void SaveBuffs(Client *c);
|
|
void LoadBuffs(Client *c);
|
|
void LoadPetInfo(Client *c);
|
|
void SavePetInfo(Client *c);
|
|
void RemoveTempFactions(Client *c);
|
|
|
|
/*
|
|
* Character Inventory
|
|
*/
|
|
bool NoRentExpired(const char* name);
|
|
|
|
/*
|
|
* Corpses
|
|
*/
|
|
bool GetDecayTimes(npcDecayTimes_Struct* npcCorpseDecayTimes);
|
|
uint32 CreatePlayerCorpse(uint32 charid, const char* charname, uint32 zoneid, uint16 instanceid, uchar* data, uint32 datasize, float x, float y, float z, float heading);
|
|
bool CreatePlayerCorpseBackup(uint32 dbid, uint32 charid, const char* charname, uint32 zoneid, uint16 instanceid, uchar* data, uint32 datasize, float x, float y, float z, float heading);
|
|
uint32 UpdatePlayerCorpse(uint32 dbid, uint32 charid, const char* charname, uint32 zoneid, uint16 instanceid, uchar* data, uint32 datasize, float x, float y, float z, float heading, bool rezzed = false);
|
|
void MarkCorpseAsRezzed(uint32 dbid);
|
|
bool BuryPlayerCorpse(uint32 dbid);
|
|
bool BuryAllPlayerCorpses(uint32 charid);
|
|
bool DeletePlayerCorpse(uint32 dbid);
|
|
uint32 GetPlayerBurriedCorpseCount(uint32 char_id);
|
|
Corpse* SummonBurriedPlayerCorpse(uint32 char_id, uint32 dest_zoneid, uint16 dest_instanceid, float dest_x, float dest_y, float dest_z, float dest_heading);
|
|
bool SummonAllPlayerCorpses(uint32 char_id, uint32 dest_zoneid, uint16 dest_instanceid, float dest_x, float dest_y, float dest_z, float dest_heading);
|
|
bool SummonAllGraveyardCorpses(uint32 cur_zoneid, uint32 dest_zoneid, uint16 dest_instanceid, float dest_x, float dest_y, float dest_z, float dest_heading);
|
|
Corpse* LoadPlayerCorpse(uint32 player_corpse_id);
|
|
bool UnburyPlayerCorpse(uint32 dbid, uint32 new_zoneid, uint16 dest_instanceid, float new_x, float new_y, float new_z, float new_heading);
|
|
bool LoadPlayerCorpses(uint32 iZoneID, uint16 iInstanceID);
|
|
uint32 GraveyardPlayerCorpse(uint32 dbid, uint32 zoneid, uint16 instanceid, float x, float y, float z, float heading);
|
|
uint32 NewGraveyardRecord(uint32 graveyard_zoneid, float graveyard_x, float graveyard_y, float graveyard_z, float graveyard_heading);
|
|
uint32 AddGraveyardIDToZone(uint32 zone_id, uint32 graveyard_id);
|
|
bool DeleteGraveyard(uint32 zone_id, uint32 graveyard_id);
|
|
uint32 GetFirstCorpseID(uint32 char_id);
|
|
uint32 GetPlayerCorpseCount(uint32 char_id);
|
|
uint32 GetPlayerCorpseID(uint32 char_id, uint8 corpse);
|
|
uint32 GetPlayerCorpseItemAt(uint32 corpse_id, uint16 slotid);
|
|
uint32 GetPlayerCorpseTimeLeft(uint8 corpse, uint8 type);
|
|
|
|
/*
|
|
* Faction
|
|
*/
|
|
bool GetNPCFactionList(uint32 npcfaction_id, int32* faction_id, int32* value, uint8* temp, int32* primary_faction = 0);
|
|
bool GetFactionData(FactionMods* fd, uint32 class_mod, uint32 race_mod, uint32 deity_mod, int32 faction_id); //rembrant, needed for factions Dec, 16 2001
|
|
bool GetFactionName(int32 faction_id, char* name, uint32 buflen); // rembrant, needed for factions Dec, 16 2001
|
|
bool GetFactionIdsForNPC(uint32 nfl_id, std::list<struct NPCFaction*> *faction_list, int32* primary_faction = 0); // neotokyo: improve faction handling
|
|
bool SetCharacterFactionLevel(uint32 char_id, int32 faction_id, int32 value, uint8 temp, faction_map &val_list); // rembrant, needed for factions Dec, 16 2001
|
|
bool LoadFactionData();
|
|
bool LoadFactionValues(uint32 char_id, faction_map & val_list);
|
|
bool LoadFactionValues_result(MYSQL_RES* result, faction_map & val_list);
|
|
|
|
/*
|
|
* AAs
|
|
*/
|
|
bool LoadAAEffects();
|
|
bool LoadAAEffects2();
|
|
bool LoadSwarmSpells();
|
|
SendAA_Struct* GetAASkillVars(uint32 skill_id);
|
|
uint8 GetTotalAALevels(uint32 skill_id);
|
|
uint32 GetSizeAA();
|
|
uint32 CountAAs();
|
|
void LoadAAs(SendAA_Struct **load);
|
|
uint32 CountAAEffects();
|
|
void FillAAEffects(SendAA_Struct* aa_struct);
|
|
|
|
/*
|
|
* Zone related
|
|
*/
|
|
bool GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct *data, bool &can_bind, bool &can_combat, bool &can_levitate, bool &can_castoutdoor, bool &is_city, bool &is_hotzone, bool &allow_mercs, uint8 &zone_type, int &ruleset, char **map_filename);
|
|
bool SaveZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct* zd);
|
|
bool LoadStaticZonePoints(LinkedList<ZonePoint*>* zone_point_list,const char* zonename, uint32 version);
|
|
bool UpdateZoneSafeCoords(const char* zonename, float x, float y, float z);
|
|
uint8 GetUseCFGSafeCoords();
|
|
int getZoneShutDownDelay(uint32 zoneID, uint32 version);
|
|
|
|
/*
|
|
* Spawns and Spawn Points
|
|
*/
|
|
bool LoadSpawnGroups(const char* zone_name, uint16 version, SpawnGroupList* spawn_group_list);
|
|
bool LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_group_list);
|
|
bool PopulateZoneSpawnList(uint32 zoneid, LinkedList<Spawn2*> &spawn2_list, int16 version, uint32 repopdelay = 0);
|
|
Spawn2* LoadSpawn2(LinkedList<Spawn2*> &spawn2_list, uint32 spawn2id, uint32 timeleft);
|
|
bool CreateSpawn2(Client *c, uint32 spawngroup, const char* zone, float heading, float x, float y, float z, uint32 respawn, uint32 variance, uint16 condition, int16 cond_value);
|
|
void UpdateSpawn2Timeleft(uint32 id, uint16 instance_id,uint32 timeleft);
|
|
uint32 GetSpawnTimeLeft(uint32 id, uint16 instance_id);
|
|
void UpdateSpawn2Status(uint32 id, uint8 new_status);
|
|
|
|
/*
|
|
* Grids/Paths
|
|
*/
|
|
uint32 GetFreeGrid(uint16 zoneid);
|
|
void DeleteGrid(Client *c, uint32 sg2, uint32 grid_num, bool grid_too,uint16 zoneid);
|
|
void DeleteWaypoint(Client *c, uint32 grid_num, uint32 wp_num,uint16 zoneid);
|
|
// uint32 AddWP(Client *c, uint32 sg2, uint16 grid_num, uint8 wp_num, float xpos, float ypos, float zpos, uint32 pause, float xpos1, float ypos1, float zpos1, int type1, int type2,uint16 zoneid);
|
|
void AddWP(Client *c, uint32 gridid, uint32 wpnum, float xpos, float ypos, float zpos, uint32 pause, uint16 zoneid, float heading);
|
|
uint32 AddWPForSpawn(Client *c, uint32 spawn2id, float xpos, float ypos, float zpos, uint32 pause, int type1, int type2, uint16 zoneid, float heading);
|
|
void ModifyGrid(Client *c, bool remove, uint32 id, uint8 type = 0, uint8 type2 = 0,uint16 zoneid = 0);
|
|
void ModifyWP(Client *c, uint32 grid_id, uint32 wp_num, float xpos, float ypos, float zpos, uint32 script=0,uint16 zoneid =0);
|
|
uint8 GetGridType(uint32 grid,uint32 zoneid);
|
|
uint8 GetGridType2(uint32 grid, uint16 zoneid);
|
|
bool GetWaypoints(uint32 grid, uint16 zoneid, uint32 num, wplist* wp);
|
|
void AssignGrid(Client *client, float x, float y, uint32 id);
|
|
int GetHighestGrid(uint32 zoneid);
|
|
int GetHighestWaypoint(uint32 zoneid, uint32 gridid);
|
|
|
|
/*
|
|
* NPCs
|
|
*/
|
|
const NPCType* GetNPCType(uint32 id);
|
|
uint32 NPCSpawnDB(uint8 command, const char* zone, uint32 zone_version, Client *c, NPC* spawn = 0, uint32 extra = 0); // 0 = Create 1 = Add; 2 = Update; 3 = Remove; 4 = Delete
|
|
bool SetSpecialAttkFlag(uint8 id, const char* flag);
|
|
bool GetPetEntry(const char *pet_type, PetRecord *into);
|
|
bool GetPoweredPetEntry(const char *pet_type, int16 petpower, PetRecord *into);
|
|
bool GetBasePetItems(int32 equipmentset, uint32 *items);
|
|
void AddLootTableToNPC(NPC* npc,uint32 loottable_id, ItemList* itemlist, uint32* copper, uint32* silver, uint32* gold, uint32* plat);
|
|
void AddLootDropToNPC(NPC* npc,uint32 lootdrop_id, ItemList* itemlist, uint8 droplimit, uint8 mindrop);
|
|
uint32 GetMaxNPCSpellsID();
|
|
DBnpcspells_Struct* GetNPCSpells(uint32 iDBSpellsID);
|
|
|
|
/*
|
|
* Mercs
|
|
*/
|
|
const NPCType* GetMercType(uint32 id, uint16 raceid, uint32 clientlevel);
|
|
void LoadMercEquipment(Merc *merc);
|
|
void SaveMercBuffs(Merc *merc);
|
|
void LoadMercBuffs(Merc *merc);
|
|
bool LoadMercInfo(Client *c);
|
|
bool LoadCurrentMerc(Client *c);
|
|
bool SaveMerc(Merc *merc);
|
|
bool DeleteMerc(uint32 merc_id);
|
|
//void LoadMercTypesForMercMerchant(NPC *merchant);
|
|
//void LoadMercsForMercMerchant(NPC *merchant);
|
|
|
|
/*
|
|
* Petitions
|
|
*/
|
|
void UpdateBug(BugStruct* bug);
|
|
void UpdateBug(PetitionBug_Struct* bug);
|
|
void DeletePetitionFromDB(Petition* wpet);
|
|
void UpdatePetitionToDB(Petition* wpet);
|
|
void InsertPetitionToDB(Petition* wpet);
|
|
void RefreshPetitionsFromDB();
|
|
|
|
|
|
/*
|
|
* Merchants
|
|
*/
|
|
void SaveMerchantTemp(uint32 npcid, uint32 slot, uint32 item, uint32 charges);
|
|
void DeleteMerchantTemp(uint32 npcid, uint32 slot);
|
|
|
|
/*
|
|
* Tradeskills
|
|
*/
|
|
bool GetTradeRecipe(const ItemInst* container, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec);
|
|
bool GetTradeRecipe(uint32 recipe_id, uint8 c_type, uint32 some_id, uint32 char_id, DBTradeskillRecipe_Struct *spec);
|
|
uint32 GetZoneForage(uint32 ZoneID, uint8 skill); /* for foraging */
|
|
uint32 GetZoneFishing(uint32 ZoneID, uint8 skill, uint32 &npc_id, uint8 &npc_chance);
|
|
void UpdateRecipeMadecount(uint32 recipe_id, uint32 char_id, uint32 madecount);
|
|
bool EnableRecipe(uint32 recipe_id);
|
|
bool DisableRecipe(uint32 recipe_id);
|
|
|
|
/*
|
|
* Tribute
|
|
*/
|
|
bool LoadTributes();
|
|
|
|
/*
|
|
* Doors
|
|
*/
|
|
bool DoorIsOpen(uint8 door_id,const char* zone_name);
|
|
void SetDoorPlace(uint8 value,uint8 door_id,const char* zone_name);
|
|
bool LoadDoors(int32 iDoorCount, Door *into, const char *zone_name, int16 version);
|
|
bool CheckGuildDoor(uint8 doorid,uint16 guild_id, const char* zone);
|
|
bool SetGuildDoor(uint8 doorid,uint16 guild_id, const char* zone);
|
|
uint32 GetGuildEQID(uint32 guilddbid);
|
|
void UpdateDoorGuildID(int doorid, int guild_id);
|
|
int32 GetDoorsCount(uint32* oMaxID, const char *zone_name, int16 version);
|
|
int32 GetDoorsCountPlusOne(const char *zone_name, int16 version);
|
|
int32 GetDoorsDBCountPlusOne(const char *zone_name, int16 version);
|
|
void InsertDoor(uint32 did, uint16 ddoorid, const char* ddoor_name, float dxpos, float dypos, float dzpos, float dheading, uint8 dopentype, uint16 dguildid, uint32 dlockpick, uint32 dkeyitem, uint8 ddoor_param, uint8 dinvert, int dincline, uint16 dsize);
|
|
|
|
/*
|
|
* Blocked Spells
|
|
*/
|
|
|
|
int32 GetBlockedSpellsCount(uint32 zoneid);
|
|
bool LoadBlockedSpells(int32 blockedSpellsCount, ZoneSpellsBlocked* into, uint32 zoneid);
|
|
|
|
/*
|
|
* Traps
|
|
*/
|
|
bool LoadTraps(const char* zonename, int16 version);
|
|
char* GetTrapMessage(uint32 trap_id);
|
|
|
|
/*
|
|
* Time
|
|
*/
|
|
uint32 GetZoneTZ(uint32 zoneid, uint32 version);
|
|
bool SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz);
|
|
|
|
/*
|
|
* Group
|
|
*/
|
|
void RefreshGroupFromDB(Client *c);
|
|
uint8 GroupCount(uint32 groupid);
|
|
/*
|
|
* Raid
|
|
*/
|
|
uint8 RaidGroupCount(uint32 raidid, uint32 groupid);
|
|
|
|
/*
|
|
* Instancing
|
|
*/
|
|
void ListAllInstances(Client* c, uint32 charid);
|
|
|
|
/*
|
|
* QGlobals
|
|
*/
|
|
void QGlobalPurge();
|
|
|
|
/*
|
|
* Alternate Currency
|
|
*/
|
|
void LoadAltCurrencyValues(uint32 char_id, std::map<uint32, uint32> ¤cy);
|
|
void UpdateAltCurrencyValue(uint32 char_id, uint32 currency_id, uint32 value);
|
|
|
|
/*
|
|
* Misc stuff.
|
|
* PLEASE DO NOT ADD TO THIS COLLECTION OF CRAP UNLESS YOUR METHOD
|
|
* REALLY HAS NO BETTER SECTION
|
|
*/
|
|
bool logevents(const char* accountname,uint32 accountid,uint8 status,const char* charname,const char* target, const char* descriptiontype, const char* description,int event_nid);
|
|
void GetEventLogs(const char* name,char* target,uint32 account_id=0,uint8 eventid=0,char* detail=0,char* timestamp=0, CharacterEventLog_Struct* cel=0);
|
|
uint32 GetKarma(uint32 acct_id);
|
|
void UpdateKarma(uint32 acct_id, uint32 amount);
|
|
|
|
/*
|
|
* Things which really dont belong here...
|
|
*/
|
|
int16 CommandRequirement(const char* commandname);
|
|
|
|
protected:
|
|
void ZDBInitVars();
|
|
|
|
uint32 max_faction;
|
|
Faction** faction_array;
|
|
uint32 npc_spells_maxid;
|
|
DBnpcspells_Struct** npc_spells_cache;
|
|
bool* npc_spells_loadtried;
|
|
uint8 door_isopen_array[255];
|
|
};
|
|
|
|
extern ZoneDatabase database;
|
|
|
|
#endif /*ZONEDB_H_*/
|
|
|