mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-19 00:18:22 +00:00
Changed expansions to min_expansion/max_expansion
This commit is contained in:
+7
-4
@@ -9472,6 +9472,7 @@ void command_object(Client *c, const Seperator *sep)
|
||||
uint32 newid = 0;
|
||||
uint16 radius;
|
||||
EQApplicationPacket *app;
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
|
||||
bool bNewObject = false;
|
||||
|
||||
@@ -9503,8 +9504,10 @@ void command_object(Client *c, const Seperator *sep)
|
||||
else
|
||||
c->Message(0, "Objects within %u units of your current location:", radius);
|
||||
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query;
|
||||
if (radius)
|
||||
|
||||
query = StringFormat(
|
||||
"SELECT id, xpos, ypos, zpos, heading, itemid, "
|
||||
"objectname, type, icon, unknown08, unknown10, unknown20 "
|
||||
@@ -9512,18 +9515,18 @@ void command_object(Client *c, const Seperator *sep)
|
||||
"AND (xpos BETWEEN %.1f AND %.1f) "
|
||||
"AND (ypos BETWEEN %.1f AND %.1f) "
|
||||
"AND (zpos BETWEEN %.1f AND %.1f) "
|
||||
"AND %d & expansions = expansions"
|
||||
"AND min_expansion <= %i AND max_expansion >= %i "
|
||||
"ORDER BY id",
|
||||
zone->GetZoneID(), zone->GetInstanceVersion(),
|
||||
c->GetX() - radius, // Yes, we're actually using a bounding box instead of a radius.
|
||||
c->GetX() + radius, // Much less processing power used this way.
|
||||
c->GetY() - radius, c->GetY() + radius, c->GetZ() - radius, c->GetZ() + radius, RuleI(World, ExpansionSettings));
|
||||
c->GetY() - radius, c->GetY() + radius, c->GetZ() - radius, c->GetZ() + radius, latest_expansion, latest_expansion);
|
||||
else
|
||||
query = StringFormat("SELECT id, xpos, ypos, zpos, heading, itemid, "
|
||||
"objectname, type, icon, unknown08, unknown10, unknown20 "
|
||||
"FROM object WHERE zoneid = %u AND version = %u AND %d & expansions = expansions"
|
||||
"FROM object WHERE zoneid = %u AND version = %u AND min_expansion <= %i AND max_expansion >= %i"
|
||||
"ORDER BY id",
|
||||
zone->GetZoneID(), zone->GetInstanceVersion(), RuleI(World, ExpansionSettings));
|
||||
zone->GetZoneID(), zone->GetInstanceVersion(), latest_expansion, latest_expansion);
|
||||
|
||||
auto results = database.QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
|
||||
+6
-4
@@ -54,9 +54,10 @@ uint32 ZoneDatabase::GetZoneForage(uint32 ZoneID, uint8 skill) {
|
||||
}
|
||||
|
||||
uint32 chancepool = 0;
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT itemid, chance FROM "
|
||||
"forage WHERE zoneid = '%i' AND level <= '%i' AND %d & expansions = expansions "
|
||||
"LIMIT %i", ZoneID, skill, RuleI(World, ExpansionSettings), FORAGE_ITEM_LIMIT);
|
||||
"forage WHERE zoneid = '%i' AND level <= '%i' AND min_expansion <= %i AND max_expansion >= %i "
|
||||
"LIMIT %i", ZoneID, skill, latest_expansion, latest_expansion, FORAGE_ITEM_LIMIT);
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return 0;
|
||||
@@ -109,9 +110,10 @@ uint32 ZoneDatabase::GetZoneFishing(uint32 ZoneID, uint8 skill, uint32 &npc_id,
|
||||
chance[c]=0;
|
||||
}
|
||||
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT itemid, chance, npc_id, npc_chance "
|
||||
"FROM fishing WHERE (zoneid = '%i' || zoneid = 0) AND skill_level <= '%i' AND %d & expansions = expansions",
|
||||
ZoneID, skill, RuleI(World, ExpansionSettings));
|
||||
"FROM fishing WHERE (zoneid = '%i' || zoneid = 0) AND skill_level <= '%i' AND min_expansion <= %i AND max_expansion >= %i",
|
||||
ZoneID, skill, latest_expansion, latest_expansion);
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return 0;
|
||||
|
||||
+2
-1
@@ -463,8 +463,9 @@ void NPC::CheckGlobalLootTables()
|
||||
|
||||
void ZoneDatabase::LoadGlobalLoot()
|
||||
{
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
auto query = StringFormat("SELECT id, loottable_id, description, min_level, max_level, rare, raid, race, "
|
||||
"class, bodytype, zone FROM global_loot WHERE enabled = 1 AND %d & expansions = expansions", RuleI(World, ExpansionSettings));
|
||||
"class, bodytype, zone FROM global_loot WHERE enabled = 1 AND min_expansion <= %i AND max_expansion >= %i", latest_expansion, latest_expansion);
|
||||
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success() || results.RowCount() == 0)
|
||||
|
||||
+3
-3
@@ -694,13 +694,13 @@ void ZoneDatabase::UpdateObject(uint32 id, uint32 type, uint32 icon, const Objec
|
||||
}
|
||||
|
||||
Ground_Spawns* ZoneDatabase::LoadGroundSpawns(uint32 zone_id, int16 version, Ground_Spawns* gs) {
|
||||
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT max_x, max_y, max_z, "
|
||||
"min_x, min_y, heading, name, "
|
||||
"item, max_allowed, respawn_timer "
|
||||
"FROM ground_spawns "
|
||||
"WHERE zoneid = %i AND (version = %u OR version = -1) AND %d & expansions = expansions"
|
||||
"LIMIT 50", zone_id, version, RuleI(World, ExpansionSettings));
|
||||
"WHERE zoneid = %i AND (version = %u OR version = -1) AND min_expansion <= %i AND max_expansion >= %i"
|
||||
"LIMIT 50", zone_id, version, latest_expansion, latest_expansion);
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return gs;
|
||||
|
||||
+2
-1
@@ -639,10 +639,11 @@ bool ZoneDatabase::PopulateZoneSpawnList(uint32 zoneid, LinkedList<Spawn2*> &spa
|
||||
|
||||
Spawn2* ZoneDatabase::LoadSpawn2(LinkedList<Spawn2*> &spawn2_list, uint32 spawn2id, uint32 timeleft) {
|
||||
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT id, spawngroupID, x, y, z, heading, "
|
||||
"respawntime, variance, pathgrid, _condition, "
|
||||
"cond_value, enabled, animation FROM spawn2 "
|
||||
"WHERE id = %i AND %d & expansions = expansions", spawn2id, RuleI(World, ExpansionSettings));
|
||||
"WHERE id = %i AND min_expansion <= %i AND max_expansion >= %i", spawn2id, latest_expansion, latest_expansion);
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return nullptr;
|
||||
|
||||
+10
-7
@@ -164,15 +164,16 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//this really loads the objects into entity_list
|
||||
bool Zone::LoadZoneObjects()
|
||||
{
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query =
|
||||
StringFormat("SELECT id, zoneid, xpos, ypos, zpos, heading, itemid, charges, objectname, type, icon, "
|
||||
"unknown08, unknown10, unknown20, unknown24, unknown76, size, tilt_x, tilt_y, display_name "
|
||||
"FROM object WHERE zoneid = %i AND (version = %u OR version = -1) AND %d & expansions = expansions",
|
||||
zoneid, instanceversion, RuleI(World, ExpansionSettings));
|
||||
"FROM object WHERE zoneid = %i AND (version = %u OR version = -1) AND min_expansion <= %i AND max_expansion >= %i",
|
||||
zoneid, instanceversion, latest_expansion, latest_expansion);
|
||||
auto results = database.QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
Log(Logs::General, Logs::Error, "Error Loading Objects from DB: %s",
|
||||
@@ -464,8 +465,9 @@ void Zone::LoadTempMerchantData() {
|
||||
void Zone::LoadNewMerchantData(uint32 merchantid) {
|
||||
|
||||
std::list<MerchantList> merlist;
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT item, slot, faction_required, level_required, alt_currency_cost, "
|
||||
"classes_required, probability FROM merchantlist WHERE merchantid=%d AND %d & expansions = expansions ORDER BY slot", merchantid, RuleI(World, ExpansionSettings));
|
||||
"classes_required, probability FROM merchantlist WHERE merchantid=%d AND min_expansion <= %i AND max_expansion >= %i ORDER BY slot", merchantid, latest_expansion, latest_expansion);
|
||||
auto results = database.QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return;
|
||||
@@ -1703,12 +1705,13 @@ bool ZoneDatabase::LoadStaticZonePoints(LinkedList<ZonePoint*>* zone_point_list,
|
||||
{
|
||||
zone_point_list->Clear();
|
||||
zone->numzonepoints = 0;
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT x, y, z, target_x, target_y, "
|
||||
"target_z, target_zone_id, heading, target_heading, "
|
||||
"number, target_instance, client_version_mask "
|
||||
"FROM zone_points WHERE zone='%s' AND (version=%i OR version=-1) AND %d & expansions = expansions "
|
||||
"FROM zone_points WHERE zone='%s' AND (version=%i OR version=-1) AND min_expansion <= %i AND max_expansion >= %i "
|
||||
"ORDER BY number",
|
||||
zonename, version, RuleI(World, ExpansionSettings));
|
||||
zonename, version, latest_expansion, latest_expansion);
|
||||
auto results = QueryDatabase(query);
|
||||
if (!results.Success()) {
|
||||
return false;
|
||||
@@ -2344,7 +2347,7 @@ uint32 Zone::GetSpawnKillCount(uint32 in_spawnid) {
|
||||
|
||||
void Zone::UpdateHotzone()
|
||||
{
|
||||
std::string query = StringFormat("SELECT hotzone FROM zone WHERE short_name = '%s' AND %d & expansions = expansions", GetShortName(), RuleI(World, ExpansionSettings));
|
||||
std::string query = StringFormat("SELECT hotzone FROM zone WHERE short_name = '%s'", GetShortName());
|
||||
auto results = database.QueryDatabase(query);
|
||||
if (!results.Success())
|
||||
return;
|
||||
|
||||
+15
-9
@@ -169,9 +169,10 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
|
||||
float safe_x, safe_y, safe_z;
|
||||
int16 minstatus = 0;
|
||||
uint8 minlevel = 0;
|
||||
uint32 expansions = 0;
|
||||
uint32 minexpansion = 0;
|
||||
uint32 maxexpansion = 0;
|
||||
char flag_needed[128];
|
||||
if(!database.GetSafePoints(target_zone_name, database.GetInstanceVersion(target_instance_id), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &expansions, flag_needed)) {
|
||||
if(!database.GetSafePoints(target_zone_name, database.GetInstanceVersion(target_instance_id), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &minexpansion, &maxexpansion, flag_needed)) {
|
||||
//invalid zone...
|
||||
Message(13, "Invalid target zone while getting safe points.");
|
||||
Log(Logs::General, Logs::Error, "Zoning %s: Unable to get safe coordinates for zone '%s'.", GetName(), target_zone_name);
|
||||
@@ -268,8 +269,10 @@ void Client::Handle_OP_ZoneChange(const EQApplicationPacket *app) {
|
||||
|
||||
//not sure when we would use ZONE_ERROR_NOTREADY
|
||||
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
|
||||
//enforce min status and level
|
||||
if (!ignorerestrictions && (Admin() < minstatus || GetLevel() < minlevel))
|
||||
if (!ignorerestrictions && (Admin() < minstatus || GetLevel() < minlevel || (uint32)latest_expansion <= minexpansion || (uint32)latest_expansion >= maxexpansion))
|
||||
{
|
||||
myerror = ZONE_ERROR_NOEXPERIENCE;
|
||||
}
|
||||
@@ -839,9 +842,10 @@ void Client::SendZoneFlagInfo(Client *to) const {
|
||||
float safe_x, safe_y, safe_z;
|
||||
int16 minstatus = 0;
|
||||
uint8 minlevel = 0;
|
||||
uint32 expansions = 0;
|
||||
uint32 minexpansion = 0;
|
||||
uint32 maxexpansion = 0;
|
||||
char flag_name[128];
|
||||
if(!database.GetSafePoints(short_name, 0, &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &expansions, flag_name)) {
|
||||
if(!database.GetSafePoints(short_name, 0, &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &minexpansion, &maxexpansion, flag_name)) {
|
||||
strcpy(flag_name, "(ERROR GETTING NAME)");
|
||||
}
|
||||
|
||||
@@ -862,9 +866,10 @@ bool Client::CanBeInZone() {
|
||||
float safe_x, safe_y, safe_z;
|
||||
int16 minstatus = 0;
|
||||
uint8 minlevel = 0;
|
||||
uint32 expansions = 0;
|
||||
uint32 minexpansion = 0;
|
||||
uint32 maxexpansion = 0;
|
||||
char flag_needed[128];
|
||||
if(!database.GetSafePoints(zone->GetShortName(), zone->GetInstanceVersion(), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &expansions, flag_needed)) {
|
||||
if(!database.GetSafePoints(zone->GetShortName(), zone->GetInstanceVersion(), &safe_x, &safe_y, &safe_z, &minstatus, &minlevel, &minexpansion, &maxexpansion, flag_needed)) {
|
||||
//this should not happen...
|
||||
Log(Logs::Detail, Logs::None, "[CLIENT] Unable to query zone info for ourself '%s'", zone->GetShortName());
|
||||
return(false);
|
||||
@@ -878,8 +883,9 @@ bool Client::CanBeInZone() {
|
||||
Log(Logs::Detail, Logs::None, "[CLIENT] Character does not meet min status requirement (%d < %d)!", Admin(), minstatus);
|
||||
return(false);
|
||||
}
|
||||
if(Admin() < 150 && RuleI(World, ExpansionSettings) & expansions != expansions) {
|
||||
Log(Logs::Detail, Logs::None, "[CLIENT] Character does not have expansion", Admin(), expansions);
|
||||
auto latest_expansion = EQEmu::expansions::ConvertExpansionBitToExpansion(RuleI(World, ExpansionSettings));
|
||||
if(Admin() < 150 && (uint32)latest_expansion < minexpansion && (uint32)latest_expansion > maxexpansion) {
|
||||
Log(Logs::Detail, Logs::None, "[CLIENT] Character does not have expansion");
|
||||
return(false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user