mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-12 12:12:25 +00:00
Fix uses of uninitialized variables
- Replace unknown008 array with two separate variables in Object code - Fix mismatched safe_delete() of an array
This commit is contained in:
parent
7e2806119b
commit
488b2888a8
@ -2415,7 +2415,8 @@ struct BookRequest_Struct {
|
|||||||
*/
|
*/
|
||||||
struct Object_Struct {
|
struct Object_Struct {
|
||||||
/*00*/ uint32 linked_list_addr[2];// <Zaphod> They are, get this, prev and next, ala linked list
|
/*00*/ uint32 linked_list_addr[2];// <Zaphod> They are, get this, prev and next, ala linked list
|
||||||
/*08*/ uint16 unknown008[2]; //
|
/*08*/ uint16 unknown008; //
|
||||||
|
/*10*/ uint16 unknown010; //
|
||||||
/*12*/ uint32 drop_id; // Unique object id for zone
|
/*12*/ uint32 drop_id; // Unique object id for zone
|
||||||
/*16*/ uint16 zone_id; // Redudant, but: Zone the object appears in
|
/*16*/ uint16 zone_id; // Redudant, but: Zone the object appears in
|
||||||
/*18*/ uint16 zone_instance; //
|
/*18*/ uint16 zone_instance; //
|
||||||
|
|||||||
@ -3037,7 +3037,6 @@ ENCODE(OP_ZonePlayerToBind)
|
|||||||
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
||||||
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
||||||
@ -4839,7 +4838,6 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
|
|||||||
charges = 0xFFFFFFFF;
|
charges = 0xFFFFFFFF;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
const Item_Struct *item = inst->GetItem();
|
const Item_Struct *item = inst->GetItem();
|
||||||
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
||||||
|
|||||||
@ -1984,7 +1984,6 @@ ENCODE(OP_ZonePlayerToBind)
|
|||||||
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
||||||
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
||||||
@ -3057,7 +3056,6 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
|
|||||||
charges = 0xFFFFFFFF;
|
charges = 0xFFFFFFFF;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
const Item_Struct *item = inst->GetItem();
|
const Item_Struct *item = inst->GetItem();
|
||||||
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
||||||
|
|||||||
@ -1621,7 +1621,6 @@ ENCODE(OP_ZonePlayerToBind)
|
|||||||
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
||||||
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
||||||
@ -2376,7 +2375,6 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
|
|||||||
charges = 0xFFFFFFFF;
|
charges = 0xFFFFFFFF;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
const Item_Struct *item = inst->GetItem();
|
const Item_Struct *item = inst->GetItem();
|
||||||
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
||||||
|
|||||||
@ -2044,7 +2044,6 @@ ENCODE(OP_ZonePlayerToBind)
|
|||||||
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
unsigned char *buffer1 = new unsigned char[sizeof(structs::ZonePlayerToBindHeader_Struct) + strlen(zps->zone_name)];
|
||||||
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
structs::ZonePlayerToBindHeader_Struct *zph = (structs::ZonePlayerToBindHeader_Struct*)buffer1;
|
||||||
@ -3462,7 +3461,6 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
|
|||||||
charges = 0xFFFFFFFF;
|
charges = 0xFFFFFFFF;
|
||||||
|
|
||||||
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
|
||||||
ss.clear();
|
|
||||||
|
|
||||||
const Item_Struct *item = inst->GetItem();
|
const Item_Struct *item = inst->GetItem();
|
||||||
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
|
||||||
|
|||||||
@ -9696,22 +9696,22 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
|
|
||||||
od.object_type = atoi(row[col++]);
|
od.object_type = atoi(row[col++]);
|
||||||
icon = atoi(row[col++]);
|
icon = atoi(row[col++]);
|
||||||
od.unknown008[0] = atoi(row[col++]);
|
od.unknown008 = atoi(row[col++]);
|
||||||
od.unknown008[1] = atoi(row[col++]);
|
od.unknown010 = atoi(row[col++]);
|
||||||
od.unknown020 = atoi(row[col++]);
|
od.unknown020 = atoi(row[col++]);
|
||||||
|
|
||||||
switch (od.object_type)
|
switch (od.object_type)
|
||||||
{
|
{
|
||||||
case 0: // Static Object
|
case 0: // Static Object
|
||||||
case TempStaticType: // Static Object unlocked for changes
|
case TempStaticType: // Static Object unlocked for changes
|
||||||
if (od.unknown008[0] == 0) // Unknown08 field is optional Size parameter for static objects
|
if (od.unknown008 == 0) // Unknown08 field is optional Size parameter for static objects
|
||||||
{
|
{
|
||||||
od.unknown008[0] = 100; // Static object default Size is 100%
|
od.unknown008 = 100; // Static object default Size is 100%
|
||||||
}
|
}
|
||||||
|
|
||||||
c->Message(0,
|
c->Message(0,
|
||||||
"- STATIC Object (%s): id %u, x %.1f, y %.1f, z %.1f, h %.1f, model %s, size %u, solidtype %u, incline %u",
|
"- STATIC Object (%s): id %u, x %.1f, y %.1f, z %.1f, h %.1f, model %s, size %u, solidtype %u, incline %u",
|
||||||
(od.object_type == 0) ? "locked" : "unlocked", id, od.x, od.y, od.z, od.heading, od.object_name, od.unknown008[0], od.unknown008[1], od.unknown020);
|
(od.object_type == 0) ? "locked" : "unlocked", id, od.x, od.y, od.z, od.heading, od.object_name, od.unknown008, od.unknown010, od.unknown020);
|
||||||
break;
|
break;
|
||||||
case OT_DROPPEDITEM: // Ground Spawn
|
case OT_DROPPEDITEM: // Ground Spawn
|
||||||
c->Message(0,
|
c->Message(0,
|
||||||
@ -9777,11 +9777,11 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
case 0: // Static Object
|
case 0: // Static Object
|
||||||
if ((sep->argnum - col) > 3)
|
if ((sep->argnum - col) > 3)
|
||||||
{
|
{
|
||||||
od.unknown008[0] = atoi(sep->arg[4 + col]); // Size specified
|
od.unknown008 = atoi(sep->arg[4 + col]); // Size specified
|
||||||
|
|
||||||
if ((sep->argnum - col) > 4)
|
if ((sep->argnum - col) > 4)
|
||||||
{
|
{
|
||||||
od.unknown008[1] = atoi(sep->arg[5 + col]); // SolidType specified
|
od.unknown010 = atoi(sep->arg[5 + col]); // SolidType specified
|
||||||
|
|
||||||
if ((sep->argnum - col) > 5)
|
if ((sep->argnum - col) > 5)
|
||||||
{
|
{
|
||||||
@ -10168,15 +10168,15 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
od.unknown008[0] = atoi(sep->arg[4]);
|
od.unknown008 = atoi(sep->arg[4]);
|
||||||
o->SetObjectData(&od);
|
o->SetObjectData(&od);
|
||||||
|
|
||||||
if (od.unknown008[0] == 0) // 0 == unspecified == 100%
|
if (od.unknown008 == 0) // 0 == unspecified == 100%
|
||||||
{
|
{
|
||||||
od.unknown008[0] = 100;
|
od.unknown008 = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
c->Message(0, "Static Object %u set to %u%% size. Size will take effect when you commit to the database with '#object Save', after which the object will be unchangeable until you unlock it again with '#object Edit' and zone out and back in.", id, od.unknown008[0]);
|
c->Message(0, "Static Object %u set to %u%% size. Size will take effect when you commit to the database with '#object Save', after which the object will be unchangeable until you unlock it again with '#object Edit' and zone out and back in.", id, od.unknown008);
|
||||||
}
|
}
|
||||||
else if (strcmp(sep->arg[3], "solidtype") == 0)
|
else if (strcmp(sep->arg[3], "solidtype") == 0)
|
||||||
{
|
{
|
||||||
@ -10194,10 +10194,10 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
od.unknown008[1] = atoi(sep->arg[4]);
|
od.unknown010 = atoi(sep->arg[4]);
|
||||||
o->SetObjectData(&od);
|
o->SetObjectData(&od);
|
||||||
|
|
||||||
c->Message(0, "Static Object %u set to SolidType %u. Change will take effect when you commit to the database with '#object Save'. Support for this property is on a per-model basis, mostly seen in smaller objects such as chests and tables.", id, od.unknown008[1]);
|
c->Message(0, "Static Object %u set to SolidType %u. Change will take effect when you commit to the database with '#object Save'. Support for this property is on a per-model basis, mostly seen in smaller objects such as chests and tables.", id, od.unknown010);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -10548,7 +10548,7 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
zone->GetZoneID(), zone->GetInstanceVersion(),
|
zone->GetZoneID(), zone->GetInstanceVersion(),
|
||||||
od.x, od.y, od.z, od.heading,
|
od.x, od.y, od.z, od.heading,
|
||||||
od.object_name, od.object_type, icon,
|
od.object_name, od.object_type, icon,
|
||||||
od.unknown008[0], od.unknown008[1], od.unknown020);
|
od.unknown008, od.unknown010, od.unknown020);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -10558,7 +10558,7 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
id, zone->GetZoneID(), zone->GetInstanceVersion(),
|
id, zone->GetZoneID(), zone->GetInstanceVersion(),
|
||||||
od.x, od.y, od.z, od.heading,
|
od.x, od.y, od.z, od.heading,
|
||||||
od.object_name, od.object_type, icon,
|
od.object_name, od.object_type, icon,
|
||||||
od.unknown008[0], od.unknown008[1], od.unknown020);
|
od.unknown008, od.unknown010, od.unknown020);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -10573,7 +10573,7 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
zone->GetZoneID(), zone->GetInstanceVersion(),
|
zone->GetZoneID(), zone->GetInstanceVersion(),
|
||||||
od.x, od.y, od.z, od.heading,
|
od.x, od.y, od.z, od.heading,
|
||||||
od.object_name, od.object_type, icon,
|
od.object_name, od.object_type, icon,
|
||||||
od.unknown008[0], od.unknown008[1], od.unknown020,
|
od.unknown008, od.unknown010, od.unknown020,
|
||||||
id);
|
id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10651,12 +10651,12 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
|
|
||||||
memcpy(door.dest_zone, "NONE", 5);
|
memcpy(door.dest_zone, "NONE", 5);
|
||||||
|
|
||||||
if ((door.size = od.unknown008[0]) == 0) // unknown08 = optional size percentage
|
if ((door.size = od.unknown008) == 0) // unknown08 = optional size percentage
|
||||||
{
|
{
|
||||||
door.size = 100;
|
door.size = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (door.opentype = od.unknown008[1]) // unknown10 = optional request_nonsolid (0 or 1 or experimental number)
|
switch (door.opentype = od.unknown010) // unknown10 = optional request_nonsolid (0 or 1 or experimental number)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
door.opentype = 31;
|
door.opentype = 31;
|
||||||
@ -10943,8 +10943,8 @@ void command_object(Client *c, const Seperator *sep)
|
|||||||
strn0cpy(od.object_name, row[col++], sizeof(od.object_name));
|
strn0cpy(od.object_name, row[col++], sizeof(od.object_name));
|
||||||
od.object_type = atoi(row[col++]);
|
od.object_type = atoi(row[col++]);
|
||||||
icon = atoi(row[col++]);
|
icon = atoi(row[col++]);
|
||||||
od.unknown008[0] = atoi(row[col++]);
|
od.unknown008 = atoi(row[col++]);
|
||||||
od.unknown008[1] = atoi(row[col++]);
|
od.unknown010 = atoi(row[col++]);
|
||||||
od.unknown020 = atoi(row[col++]);
|
od.unknown020 = atoi(row[col++]);
|
||||||
|
|
||||||
if (od.object_type == 0)
|
if (od.object_type == 0)
|
||||||
|
|||||||
@ -5786,7 +5786,7 @@ bool Merc::AddMercToGroup(Merc* merc, Group* group) {
|
|||||||
|
|
||||||
void Client::InitializeMercInfo() {
|
void Client::InitializeMercInfo() {
|
||||||
for(int i=0; i<MAXMERCS; i++) {
|
for(int i=0; i<MAXMERCS; i++) {
|
||||||
m_mercinfo[i].mercid = 0;
|
m_mercinfo[i] = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -226,7 +226,8 @@ Mob::Mob(const char* in_name,
|
|||||||
PermaProcs[j].chance = 0;
|
PermaProcs[j].chance = 0;
|
||||||
PermaProcs[j].base_spellID = SPELL_UNKNOWN;
|
PermaProcs[j].base_spellID = SPELL_UNKNOWN;
|
||||||
SpellProcs[j].spellID = SPELL_UNKNOWN;
|
SpellProcs[j].spellID = SPELL_UNKNOWN;
|
||||||
|
SpellProcs[j].chance = 0;
|
||||||
|
SpellProcs[j].base_spellID = SPELL_UNKNOWN;
|
||||||
DefensiveProcs[j].spellID = SPELL_UNKNOWN;
|
DefensiveProcs[j].spellID = SPELL_UNKNOWN;
|
||||||
DefensiveProcs[j].chance = 0;
|
DefensiveProcs[j].chance = 0;
|
||||||
DefensiveProcs[j].base_spellID = SPELL_UNKNOWN;
|
DefensiveProcs[j].base_spellID = SPELL_UNKNOWN;
|
||||||
@ -271,6 +272,7 @@ Mob::Mob(const char* in_name,
|
|||||||
casting_spell_timer = 0;
|
casting_spell_timer = 0;
|
||||||
casting_spell_timer_duration = 0;
|
casting_spell_timer_duration = 0;
|
||||||
casting_spell_type = 0;
|
casting_spell_type = 0;
|
||||||
|
casting_spell_inventory_slot = 0;
|
||||||
target = 0;
|
target = 0;
|
||||||
|
|
||||||
memset(&itembonuses, 0, sizeof(StatBonuses));
|
memset(&itembonuses, 0, sizeof(StatBonuses));
|
||||||
|
|||||||
@ -251,25 +251,25 @@ bool Zone::LoadZoneObjects() {
|
|||||||
uint32 idx = 0;
|
uint32 idx = 0;
|
||||||
int16 charges = 0;
|
int16 charges = 0;
|
||||||
|
|
||||||
id = (uint32)atoi(row[idx++]);
|
id = (uint32)atoi(row[0]);
|
||||||
data.zone_id = atoi(row[idx++]);
|
data.zone_id = atoi(row[1]);
|
||||||
data.x = atof(row[idx++]);
|
data.x = atof(row[2]);
|
||||||
data.y = atof(row[idx++]);
|
data.y = atof(row[3]);
|
||||||
data.z = atof(row[idx++]);
|
data.z = atof(row[4]);
|
||||||
data.heading = atof(row[idx++]);
|
data.heading = atof(row[5]);
|
||||||
itemid = (uint32)atoi(row[idx++]);
|
itemid = (uint32)atoi(row[6]);
|
||||||
charges = (int16)atoi(row[idx++]);
|
charges = (int16)atoi(row[7]);
|
||||||
strcpy(data.object_name, row[idx++]);
|
strcpy(data.object_name, row[8]);
|
||||||
type = (uint8)atoi(row[idx++]);
|
type = (uint8)atoi(row[9]);
|
||||||
icon = (uint32)atoi(row[idx++]);
|
icon = (uint32)atoi(row[10]);
|
||||||
data.object_type = (uint32)atoi(row[idx++]);
|
data.object_type = type;
|
||||||
data.linked_list_addr[0] = 0;
|
data.linked_list_addr[0] = 0;
|
||||||
data.linked_list_addr[1] = 0;
|
data.linked_list_addr[1] = 0;
|
||||||
data.unknown008[0] = (uint32)atoi(row[idx++]);
|
data.unknown008 = (uint32)atoi(row[11]);
|
||||||
data.unknown008[1] = (uint32)atoi(row[idx++]);
|
data.unknown010 = (uint32)atoi(row[12]);
|
||||||
data.unknown020 = (uint32)atoi(row[idx++]);
|
data.unknown020 = (uint32)atoi(row[13]);
|
||||||
data.unknown024 = (uint32)atoi(row[idx++]);
|
data.unknown024 = (uint32)atoi(row[14]);
|
||||||
data.unknown076 = (uint32)atoi(row[idx++]);
|
data.unknown076 = (uint32)atoi(row[15]);
|
||||||
data.unknown084 = 0;
|
data.unknown084 = 0;
|
||||||
|
|
||||||
ItemInst* inst = nullptr;
|
ItemInst* inst = nullptr;
|
||||||
@ -727,7 +727,7 @@ void Zone::LoadLevelEXPMods(){
|
|||||||
mysql_free_result(DatasetResult);
|
mysql_free_result(DatasetResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
safe_delete(Query);
|
safe_delete_array(Query);
|
||||||
Query = 0;
|
Query = 0;
|
||||||
|
|
||||||
if(!errorMessage.empty()) {
|
if(!errorMessage.empty()) {
|
||||||
@ -928,6 +928,11 @@ Zone::Zone(uint32 in_zoneid, uint32 in_instanceid, const char* in_short_name)
|
|||||||
qGlobals = nullptr;
|
qGlobals = nullptr;
|
||||||
default_ruleset = 0;
|
default_ruleset = 0;
|
||||||
|
|
||||||
|
loglevelvar = 0;
|
||||||
|
merchantvar = 0;
|
||||||
|
tradevar = 0;
|
||||||
|
lootvar = 0;
|
||||||
|
|
||||||
if(RuleB(TaskSystem, EnableTaskSystem)) {
|
if(RuleB(TaskSystem, EnableTaskSystem)) {
|
||||||
taskmanager->LoadProximities(zoneid);
|
taskmanager->LoadProximities(zoneid);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user