Live-Like weather. Big thanks to Robregen for figuring out the system!

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.
This commit is contained in:
cavedude00 2014-01-20 10:10:39 -08:00
parent 3970bb5955
commit 70f994cda5
18 changed files with 381 additions and 136 deletions

View File

@ -380,7 +380,11 @@ struct NewZone_Struct {
/*0404*/ float fog_maxclip[4];
/*0420*/ float gravity;
/*0424*/ uint8 time_type;
/*0425*/ uint8 unknown360[49];
/*0425*/ uint8 rain_chance[4];
/*0429*/ uint8 rain_duration[4];
/*0433*/ uint8 snow_chance[4];
/*0437*/ uint8 snow_duration[4];
/*0441*/ uint8 unknown360[33];
/*0474*/ uint8 sky; // Sky Type
/*0475*/ uint8 unknown331[13]; // ***Placeholder
/*0488*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -312,7 +312,11 @@ struct NewZone_Struct {
/*0404*/ float fog_maxclip[4];
/*0420*/ float gravity;
/*0424*/ uint8 time_type;
/*0425*/ uint8 unknown360[49];
/*0425*/ uint8 rain_chance[4];
/*0429*/ uint8 rain_duration[4];
/*0433*/ uint8 snow_chance[4];
/*0437*/ uint8 snow_duration[4];
/*0441*/ uint8 unknown360[33];
/*0474*/ uint8 sky; // Sky Type
/*0475*/ uint8 unknown331[13]; // ***Placeholder
/*0488*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -1587,8 +1587,20 @@ ENCODE(OP_NewZone) {
}
OUT(gravity);
OUT(time_type);
for(r = 16; r < 48; r++) {
eq->unknown521[r] = 0xFF; //observed
for(r = 0; r < 4; r++) {
OUT(rain_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(rain_duration[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_duration[r]);
}
for(r = 0; r < 32; r++) {
eq->unknown537[r] = 0xFF; //observed
}
OUT(sky);
OUT(zone_exp_multiplier);

View File

@ -529,7 +529,11 @@ struct NewZone_Struct {
/*0500*/ float fog_maxclip[4];
/*0516*/ float gravity;
/*0520*/ uint8 time_type;
/*0521*/ uint8 unknown521[49];
/*0521*/ uint8 rain_chance[4];
/*0525*/ uint8 rain_duration[4];
/*0529*/ uint8 snow_chance[4];
/*0533*/ uint8 snow_duration[4];
/*0537*/ uint8 unknown537[33];
/*0570*/ uint8 sky; // Sky Type
/*0571*/ uint8 unknown571[13]; // ***Placeholder
/*0584*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -709,8 +709,20 @@ ENCODE(OP_NewZone) {
}
OUT(gravity);
OUT(time_type);
for(r = 16; r < 48; r++) {
eq->unknown521[r] = 0xFF; //observed
for(r = 0; r < 4; r++) {
OUT(rain_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(rain_duration[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_duration[r]);
}
for(r = 0; r < 32; r++) {
eq->unknown537[r] = 0xFF; //observed
}
OUT(sky);
OUT(zone_exp_multiplier);

View File

@ -399,7 +399,11 @@ struct NewZone_Struct {
/*0500*/ float fog_maxclip[4];
/*0516*/ float gravity;
/*0520*/ uint8 time_type;
/*0521*/ uint8 unknown521[49];
/*0521*/ uint8 rain_chance[4];
/*0525*/ uint8 rain_duration[4];
/*0529*/ uint8 snow_chance[4];
/*0533*/ uint8 snow_duration[4];
/*0537*/ uint8 unknown537[33];
/*0570*/ uint8 sky; // Sky Type
/*0571*/ uint8 unknown571[13]; // ***Placeholder
/*0584*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -708,8 +708,20 @@ ENCODE(OP_NewZone) {
}
OUT(gravity);
OUT(time_type);
for(r = 16; r < 48; r++) {
eq->unknown521[r] = 0xFF; //observed
for(r = 0; r < 4; r++) {
OUT(rain_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(rain_duration[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_duration[r]);
}
for(r = 0; r < 32; r++) {
eq->unknown537[r] = 0xFF; //observed
}
OUT(sky);
OUT(zone_exp_multiplier);

View File

@ -382,7 +382,11 @@ struct NewZone_Struct {
/*0500*/ float fog_maxclip[4];
/*0516*/ float gravity;
/*0520*/ uint8 time_type;
/*0521*/ uint8 unknown521[49];
/*0521*/ uint8 rain_chance[4];
/*0525*/ uint8 rain_duration[4];
/*0529*/ uint8 snow_chance[4];
/*0533*/ uint8 snow_duration[4];
/*0537*/ uint8 unknown537[33];
/*0570*/ uint8 sky; // Sky Type
/*0571*/ uint8 unknown571[13]; // ***Placeholder
/*0584*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -324,7 +324,11 @@ struct NewZone_Struct {
/*0404*/ float fog_maxclip[4];
/*0420*/ float gravity;
/*0424*/ uint8 time_type;
/*0425*/ uint8 unknown360[49];
/*0425*/ uint8 rain_chance[4];
/*0429*/ uint8 rain_duration[4];
/*0433*/ uint8 snow_chance[4];
/*0437*/ uint8 snow_duration[4];
/*0441*/ uint8 unknown360[33];
/*0474*/ uint8 sky; // Sky Type
/*0475*/ uint8 unknown331[13]; // ***Placeholder
/*0488*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -733,8 +733,20 @@ ENCODE(OP_NewZone) {
}
OUT(gravity);
OUT(time_type);
for(r = 16; r < 48; r++) {
eq->unknown521[r] = 0xFF; //observed
for(r = 0; r < 4; r++) {
OUT(rain_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(rain_duration[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_chance[r]);
}
for(r = 0; r < 4; r++) {
OUT(snow_duration[r]);
}
for(r = 0; r < 32; r++) {
eq->unknown537[r] = 0xFF; //observed
}
OUT(sky);
OUT(zone_exp_multiplier);

View File

@ -399,7 +399,11 @@ struct NewZone_Struct {
/*0500*/ float fog_maxclip[4];
/*0516*/ float gravity;
/*0520*/ uint8 time_type;
/*0521*/ uint8 unknown521[49];
/*0521*/ uint8 rain_chance[4];
/*0525*/ uint8 rain_duration[4];
/*0529*/ uint8 snow_chance[4];
/*0533*/ uint8 snow_duration[4];
/*0537*/ uint8 unknown537[33];
/*0570*/ uint8 sky; // Sky Type
/*0571*/ uint8 unknown571[13]; // ***Placeholder
/*0584*/ float zone_exp_multiplier; // Experience Multiplier

View File

@ -196,6 +196,7 @@ RULE_INT ( Zone, ReservedInstances, 30 ) //Will reserve this many instance ids f
RULE_INT ( Zone, EbonCrystalItemID, 40902)
RULE_INT ( Zone, RadiantCrystalItemID, 40903)
RULE_BOOL ( Zone, LevelBasedEXPMods, false) // Allows you to use the level_exp_mods table in consideration to your players EXP hits
RULE_INT ( Zone, WeatherTimer, 600) // Weather timer when no duration is available
RULE_CATEGORY_END()
RULE_CATEGORY( Map )

View File

@ -0,0 +1,140 @@
alter table zone drop column `weather`;
alter table zone add column `rain_chance1` int(4) not null default 0;
alter table zone add column `rain_chance2` int(4) not null default 0;
alter table zone add column `rain_chance3` int(4) not null default 0;
alter table zone add column `rain_chance4` int(4) not null default 0;
alter table zone add column `rain_duration1` int(4) not null default 0;
alter table zone add column `rain_duration2` int(4) not null default 0;
alter table zone add column `rain_duration3` int(4) not null default 0;
alter table zone add column `rain_duration4` int(4) not null default 0;
alter table zone add column `snow_chance1` int(4) not null default 0;
alter table zone add column `snow_chance2` int(4) not null default 0;
alter table zone add column `snow_chance3` int(4) not null default 0;
alter table zone add column `snow_chance4` int(4) not null default 0;
alter table zone add column `snow_duration1` int(4) not null default 0;
alter table zone add column `snow_duration2` int(4) not null default 0;
alter table zone add column `snow_duration3` int(4) not null default 0;
alter table zone add column `snow_duration4` int(4) not null default 0;
UPDATE `zone` SET `snow_chance1`=25, `snow_chance2`=20, `snow_chance3`=10, `snow_chance4`=20, `snow_duration1`=10, `snow_duration2`=8, `snow_duration3`=5, `snow_duration4`=10 WHERE `id`=160;
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5 WHERE `id`=202;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=306;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=304;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=23;
UPDATE `zone` SET `snow_chance1`=50, `snow_chance2`=25, `snow_chance3`=10, `snow_chance4`=25, `snow_duration1`=24, `snow_duration2`=24, `snow_duration3`=24, `snow_duration4`=24 WHERE `id`=112;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=303;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=302;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=133;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=132;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=131;
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=2 WHERE `id`=257;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=104;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=5, `rain_chance4`=5, `rain_duration1`=2, `rain_duration2`=3, `rain_duration3`=1, `rain_duration4`=2 WHERE `id`=439;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=365;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=4;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=204;
UPDATE `zone` SET `rain_chance1`=100, `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=100, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=224;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=138;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=56;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=31;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=34;
UPDATE `zone` SET `rain_chance1`=100, `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=100, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=419;
UPDATE `zone` SET `rain_chance1`=15, `rain_chance2`=15, `rain_chance3`=5, `rain_chance4`=5 WHERE `id`=116;
UPDATE `zone` SET `rain_chance1`=15, `rain_chance2`=15, `rain_chance3`=5, `rain_chance4`=5 WHERE `id`=115;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=188;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=189;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=410;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=75, `rain_chance3`=75, `rain_chance4`=25, `rain_duration1`=16, `rain_duration2`=12, `rain_duration3`=12, `rain_duration4`=16 WHERE `id`=276;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=430;
UPDATE `zone` SET `rain_chance2`=19, `rain_chance3`=14, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=20, `snow_chance4`=20, `snow_duration1`=2, `snow_duration4`=1 WHERE `id`=370;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=194;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=108;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=110;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=51;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=196;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=5, `rain_chance4`=10 WHERE `id`=316;
UPDATE `zone` SET `rain_chance1`=20, `rain_chance3`=10, `rain_chance4`=20, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=166;
UPDATE `zone` SET `rain_chance1`=20, `rain_chance3`=10, `rain_chance4`=20, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=165;
UPDATE `zone` SET `rain_chance1`=20, `rain_chance2`=20, `rain_chance3`=5, `rain_chance4`=10 WHERE `id`=225;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=329;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=21;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=99;
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=20, `rain_chance4`=30, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=255;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=301;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=359;
UPDATE `zone` SET `rain_chance1`=20, `rain_chance2`=20, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=201;
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=312;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=75, `rain_chance3`=50, `rain_chance4`=5, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=114;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=263;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=36;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=182;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=142;
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=3 WHERE `id`=361;
UPDATE `zone` SET `rain_chance1`=8, `rain_chance2`=5 WHERE `id`=259;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=357;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=156;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=149;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=10, `snow_duration1`=10 WHERE `id`=406;
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=40, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=119;
UPDATE `zone` SET `rain_chance1`=3, `rain_chance2`=3, `rain_chance3`=3, `rain_chance4`=3, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=32;
UPDATE `zone` SET `rain_chance1`=3, `rain_chance2`=3, `rain_chance3`=3, `rain_chance4`=3, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=33;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=374;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=412;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=331;
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5 WHERE `id`=345;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=30;
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=107;
UPDATE `zone` SET `rain_chance1`=70, `rain_chance2`=70, `rain_chance3`=70, `rain_chance4`=70, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=46;
UPDATE `zone` SET `rain_duration1`=15, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=25, `snow_chance2`=15, `snow_chance3`=5, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=12, `snow_duration3`=6, `snow_duration4`=12 WHERE `id`=95;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=190;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=275;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=43;
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=134;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=97;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=258;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=199;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=431;
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=40, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=200;
UPDATE `zone` SET `rain_chance4`=25 WHERE `id`=113;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=15, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=48;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=50, `snow_chance2`=40, `snow_chance3`=35, `snow_chance4`=40, `snow_duration1`=15, `snow_duration2`=10, `snow_duration3`=4, `snow_duration4`=12 WHERE `id`=436;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=243;
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=30, `rain_chance4`=30, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=428;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=50, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=102;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=15, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=174;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=136;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=50, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=139;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=404;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=405;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=143;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=394;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=416;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=253;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=252;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=362;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=140;
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=30, `rain_chance4`=30, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=5, `snow_chance2`=5, `snow_chance3`=5, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1 WHERE `id`=418;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=333;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=140;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=277;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=103;
UPDATE `zone` SET `rain_chance1`=2, `rain_chance2`=2, `rain_chance3`=2, `rain_chance4`=2, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=332;
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5, `rain_chance3`=5, `rain_chance4`=5, `rain_duration1`=10, `rain_duration2`=10, `rain_duration3`=10, `rain_duration4`=10 WHERE `id`=336;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=173;
UPDATE `zone` SET `rain_chance1`=2, `rain_chance2`=8, `rain_chance3`=10, `rain_chance4`=3, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=141;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=25, `snow_duration1`=24 WHERE `id`=389;
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=191;
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=223;
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=49;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=281;
UPDATE `zone` SET `rain_chance1`=6, `rain_chance2`=6, `rain_chance3`=6, `rain_chance4`=6, `rain_duration1`=12, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=288;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=290;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=170;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=27;
UPDATE `zone` SET `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=50, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24, `snow_chance1`=100, `snow_chance4`=50, `snow_duration1`=24, `snow_duration4`=24 WHERE `id`=289;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=285;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=171;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=282;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=283;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=280;
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=12, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=254;

View File

@ -2123,6 +2123,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
snprintf(effect_desc, _EDLEN, "Stop Rain");
#endif
zone->zone_weather = 0;
zone->weather_intensity = 0;
zone->weatherSend();
break;
}

View File

@ -134,20 +134,6 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
}
}
zone->weather_type = database.GetZoneWeather(iZoneID, zone->GetInstanceVersion());
LogFile->write(EQEMuLog::Debug, "Zone: %s has weather of type %i.", zonename, zone->weather_type);
if(zone->weather_type > 3 || zone->weather_type == 0) {
zone->zone_weather = 0;
zone->Weather_Timer->Disable();
LogFile->write(EQEMuLog::Debug, "Zone: %s(%i) has no weather type. The weather timer has been disabled.", zonename, iZoneID);
}
else {
zone->zone_weather = 0;
LogFile->write(EQEMuLog::Debug, "Zone: %s(%i) has weather type = %i. The weather timer has been enabled.", zonename, iZoneID, zone->weather_type);
}
ZoneLoaded = true;
worldserver.SetZone(iZoneID, iInstanceID);
@ -900,11 +886,11 @@ Zone::Zone(uint32 in_zoneid, uint32 in_instanceid, const char* in_short_name)
long_name = strcpy(new char[18], "Long zone missing");
}
autoshutdown_timer.Start(AUTHENTICATION_TIMEOUT * 1000, false);
Weather_Timer = new Timer((MakeRandomInt(1800, 7200) + 30) * 2000);
Weather_Timer = new Timer(60000);
Weather_Timer->Start();
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", short_name, Weather_Timer->GetRemainingTime()/1000);
weather_type = 0;
zone_weather = 0;
weather_intensity = 0;
blocked_spells = nullptr;
totalBS = 0;
aas = nullptr;
@ -1365,38 +1351,7 @@ bool Zone::Process() {
if(Weather_Timer->Check()){
Weather_Timer->Disable();
uint16 tmpweather = MakeRandomInt(0, 100);
if(zone->weather_type != 0)
{
if(tmpweather >= 80)
{
// A change in the weather....
uint8 tmpOldWeather = zone_weather;
if(zone->zone_weather == 0)
zone->zone_weather = zone->weather_type;
else
zone->zone_weather = 0;
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i", zone->GetShortName(), tmpOldWeather, zone_weather);
this->weatherSend();
}
else
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s is not going to change. Chance was = %i percent.", zone->GetShortName(), tmpweather);
uint32 weatherTime = 0;
if(zone->zone_weather != zone->weather_type)
weatherTime = (MakeRandomInt(1800, 7200) + 30) * 2000;
else
weatherTime = (MakeRandomInt(900, 2700) + 30) * 1000;
Weather_Timer->Start(weatherTime);
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000);
}
this->ChangeWeather();
}
if(qGlobals)
@ -1426,6 +1381,129 @@ bool Zone::Process() {
return true;
}
void Zone::ChangeWeather()
{
if(!HasWeather())
{
Weather_Timer->Disable();
return;
}
int chance = MakeRandomInt(0, 3);
uint8 rainchance = zone->newzone_data.rain_chance[chance];
uint8 rainduration = zone->newzone_data.rain_duration[chance];
uint8 snowchance = zone->newzone_data.snow_chance[chance];
uint8 snowduration = zone->newzone_data.snow_duration[chance];
uint32 weathertimer = 0;
uint16 tmpweather = MakeRandomInt(0, 100);
uint8 duration = 0;
uint8 tmpOldWeather = zone->zone_weather;
bool changed = false;
if(tmpOldWeather == 0)
{
if(rainchance > 0 || snowchance > 0)
{
uint8 intensity = MakeRandomInt(1, 10);
if((rainchance > snowchance) || (rainchance == snowchance))
{
//It's gunna rain!
if(rainchance >= tmpweather)
{
if(rainduration == 0)
duration = 1;
else
duration = rainduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
weathertimer = (duration*60)*1000;
Weather_Timer->Start(weathertimer);
zone->zone_weather = 1;
zone->weather_intensity = intensity;
changed = true;
}
}
else
{
//It's gunna snow!
if(snowchance >= tmpweather)
{
if(snowduration == 0)
duration = 1;
else
duration = snowduration*3;
weathertimer = (duration*60)*1000;
Weather_Timer->Start(weathertimer);
zone->zone_weather = 2;
zone->weather_intensity = intensity;
changed = true;
}
}
}
}
else
{
changed = true;
//We've had weather, now taking a break
if(tmpOldWeather == 1)
{
if(rainduration == 0)
duration = 1;
else
duration = rainduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
weathertimer = (duration*60)*1000;
Weather_Timer->Start(weathertimer);
zone->zone_weather = 0;
zone->weather_intensity = 0;
}
else if(tmpOldWeather == 2)
{
if(snowduration == 0)
duration = 1;
else
duration = snowduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
weathertimer = (duration*60)*1000;
Weather_Timer->Start(weathertimer);
zone->zone_weather = 0;
zone->weather_intensity = 0;
}
}
if(changed == false)
{
if(weathertimer == 0)
{
uint32 weatherTimerRule = RuleI(Zone, WeatherTimer);
weathertimer = weatherTimerRule*1000;
Weather_Timer->Start(weathertimer);
}
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000);
}
else
{
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i The next check will be in %i seconds. Rain chance: %i, Rain duration: %i, Snow chance %i, Snow duration: %i", zone->GetShortName(), tmpOldWeather, zone_weather,Weather_Timer->GetRemainingTime()/1000,rainchance,rainduration,snowchance,snowduration);
this->weatherSend();
}
}
bool Zone::HasWeather()
{
uint8 rain1 = zone->newzone_data.rain_chance[0];
uint8 rain2 = zone->newzone_data.rain_chance[1];
uint8 rain3 = zone->newzone_data.rain_chance[2];
uint8 rain4 = zone->newzone_data.rain_chance[3];
uint8 snow1 = zone->newzone_data.snow_chance[0];
uint8 snow2 = zone->newzone_data.snow_chance[1];
uint8 snow3 = zone->newzone_data.snow_chance[2];
uint8 snow4 = zone->newzone_data.snow_chance[3];
if(rain1 == 0 && rain2 == 0 && rain3 == 0 && rain4 == 0 && snow1 == 0 && snow2 == 0 && snow3 == 0 && snow4 == 0)
return false;
else
return true;
}
void Zone::StartShutdownTimer(uint32 set_time) {
if (set_time > autoshutdown_timer.GetRemainingTime()) {
if (set_time == (RuleI(Zone, AutoShutdownDelay)))
@ -1807,26 +1885,11 @@ bool ZoneDatabase::GetDecayTimes(npcDecayTimes_Struct* npcCorpseDecayTimes) {
void Zone::weatherSend()
{
/*switch(zone_weather)
{
case 0:
entity_list.Message(0, 0, "The sky clears.");
break;
case 1:
entity_list.Message(0, 0, "Raindrops begin to fall from the sky.");
break;
case 2:
entity_list.Message(0, 0, "Snowflakes begin to fall from the sky.");
break;
default:
entity_list.Message(0, 0, "Strange weather patterns form in the sky. (%i)", zone_weather);
break;
}*/
EQApplicationPacket* outapp = new EQApplicationPacket(OP_Weather, 8);
if(zone_weather>0)
outapp->pBuffer[0] = zone_weather-1;
if(zone_weather>0)
outapp->pBuffer[4] = 0x10+MakeRandomInt(0, 9); // This number changes in the packets, intensity?
outapp->pBuffer[4] = zone->weather_intensity;
entity_list.QueueClients(0, outapp);
safe_delete(outapp);
}

View File

@ -149,6 +149,8 @@ public:
void ShowDisabledSpawnStatus(Mob* client);
void ShowSpawnStatusByID(Mob* client, uint32 spawnid);
void StartShutdownTimer(uint32 set_time = (RuleI(Zone, AutoShutdownDelay)));
void ChangeWeather();
bool HasWeather();
void AddAuth(ServerZoneIncommingClient_Struct* szic);
void RemoveAuth(const char* iCharName);
void ResetAuth();
@ -212,7 +214,6 @@ public:
WaterMap* watermap;
PathManager *pathing;
NewZone_Struct newzone_data;
uint8 zone_weather;
SpawnConditionManager spawn_conditions;
@ -232,7 +233,8 @@ public:
inline bool BuffTimersSuspended() const { return newzone_data.SuspendBuffs != 0; };
time_t weather_timer;
uint8 weather_type;
uint8 weather_intensity;
uint8 zone_weather;
uint8 loglevelvar;
uint8 merchantvar;

View File

@ -94,7 +94,11 @@ bool ZoneDatabase::GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct
"fog_red4,fog_green4,fog_blue4,fog_minclip4,fog_maxclip4,fog_density,"
"sky,zone_exp_multiplier,safe_x,safe_y,safe_z,underworld,"
"minclip,maxclip,time_type,canbind,cancombat,canlevitate,"
"castoutdoor,hotzone,ruleset,suspendbuffs,map_file_name,short_name"
"castoutdoor,hotzone,ruleset,suspendbuffs,map_file_name,short_name,"
"rain_chance1,rain_chance2,rain_chance3,rain_chance4,"
"rain_duration1,rain_duration2,rain_duration3,rain_duration4,"
"snow_chance1,snow_chance2,snow_chance3,snow_chance4,"
"snow_duration1,snow_duration2,snow_duration3,snow_duration4"
" from zone where zoneidnumber=%i and version=%i",zoneid, instance_id), errbuf, &result)) {
safe_delete_array(query);
row = mysql_fetch_row(result);
@ -146,6 +150,18 @@ bool ZoneDatabase::GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct
{
strcpy(*map_filename, row[r++]);
}
for(i=0;i<4;i++){
zone_data->rain_chance[i]=atoi(row[r++]);
}
for(i=0;i<4;i++){
zone_data->rain_duration[i]=atoi(row[r++]);
}
for(i=0;i<4;i++){
zone_data->snow_chance[i]=atoi(row[r++]);
}
for(i=0;i<4;i++){
zone_data->snow_duration[i]=atof(row[r++]);
}
good = true;
}
mysql_free_result(result);
@ -2197,55 +2213,6 @@ bool ZoneDatabase::SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz) {
}
//End new timezone functions.
//Functions for weather
uint8 ZoneDatabase::GetZoneWeather(uint32 zoneid, uint32 version) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
MYSQL_RES *result;
MYSQL_ROW row;
if (RunQuery(query, MakeAnyLenString(&query, "SELECT weather FROM zone WHERE zoneidnumber=%i AND (version=%i OR version=0) ORDER BY version DESC", zoneid, version), errbuf, &result))
{
safe_delete_array(query);
if (mysql_num_rows(result) > 0) {
row = mysql_fetch_row(result);
uint8 tmp = atoi(row[0]);
mysql_free_result(result);
return tmp;
}
mysql_free_result(result);
}
else {
std::cerr << "Error in GetZoneWeather query '" << query << "' " << errbuf << std::endl;
safe_delete_array(query);
}
return 0;
}
bool ZoneDatabase::SetZoneWeather(uint32 zoneid, uint32 version, uint8 w) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
uint32 affected_rows = 0;
if (RunQuery(query, MakeAnyLenString(&query, "UPDATE zone SET weather=%i WHERE zoneidnumber=%i AND version=%i", w, zoneid, version), errbuf, 0, &affected_rows)) {
safe_delete_array(query);
if (affected_rows == 1)
return true;
else
return false;
}
else {
std::cerr << "Error in SetZoneWeather query '" << query << "' " << errbuf << std::endl;
safe_delete_array(query);
return false;
}
return false;
}
//End weather functions.
/*
solar: this is never actually called, client_process starts an async query
instead and uses GetAccountInfoForLogin_result to process it..

View File

@ -428,11 +428,6 @@ public:
uint32 GetZoneTZ(uint32 zoneid, uint32 version);
bool SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz);
/*
* Weather
*/
uint8 GetZoneWeather(uint32 zoneid, uint32 version);
bool SetZoneWeather(uint32 zoneid, uint32 version, uint8 w);
/*
* Group
*/