PDA

View Full Version : Latest patch - scaling error



sequser
02-14-2002, 08:21 AM
Has anyone worked out a quick fix to the rampant scaling problems with the latest patch? I am assuming I am not the only one getting these.

In most zones now, just as the zone is finishing loading, it rescales very small. I am assuming this is caused by some packet EQ is sending on purpose way out in the boonies to mess up the scaling. On some maps I have to go 32x to get what would be 1x normally.

If no one has already worked out a fix, I'll poke around and see if I can do anything.. my first thought of a quick fix is to just disable the rescaling based on finding mobs off the edge of the map.

SeqTester
02-14-2002, 08:43 AM
did you get lastest CVS from yesterday?
People where having this problem due to OpCodes changing.

S_B_R
02-14-2002, 10:18 AM
I updated mine at roughly 7:15pm EST lastnight and this happend to me in Traks Teeth and Firiona Vie. I was in about 20 zones lastnight and those 2 were the only ones that had this problem.

sequser
02-14-2002, 10:50 AM
I have the opcode fix.

One zone you will see it in is ssra temple:

Door: mmB5
Y/X/Z: -32768/0/0.0
Race: Door Class: Thing

Also happens in Temple of Veeshan.

SeqTester
02-14-2002, 11:26 AM
Hmm.. I have not gone into either of those zones sorry.
All zones I have been in have worked with last nights CVS 5:00pm EST.

Morannon
02-14-2002, 12:00 PM
Neterbian Lair is another one this happens in.

Door at -32768/0/0

I have the latest CVS files.

Ratt
02-14-2002, 12:50 PM
Intresting ... I have an idea of what it might be .. If ya'll could post a list of the zones (and door names) it's happening too (like youv'e been doing), I'll hop around to those zones tonight if I get a chance, or tomorrow night and see if I can duplicate it.

Sneaky
02-14-2002, 01:00 PM
Temple of Veeshan. I didn't write down the names of the doors, but at 32X you can plainly see they have placed objects (doors) far outside what would normally constitute the zone boundries. When the map shrinks, it appears to shrink right to these new objects.

mvern
02-14-2002, 01:11 PM
The door struct was a bit off since last patch, I just posted a diff that should correct the problems.

bmp
02-14-2002, 06:08 PM
ugh. Ya know..Verant is right now thinking:

"Hey, lets put doors at -3200, -3200 just to screw with the SEQ users!!"

Morannon
02-15-2002, 05:12 AM
I just decided that I could live without doors, so edited opcodes.h and changed the DoorSpawnCode to 0x0001 recompiled, and now it ignores doors and doesnt scale maps...

Works for me till a proper fix can be made =)

SeqTester
02-15-2002, 07:14 AM
you can turn doors off by right clicking on the map.
But your way also works.

avgjoe
02-15-2002, 10:07 AM
Just to help out a bit:

I had the map scaling problem with karnor's castle, very rarely, long before the patch that just came out, changed the opcodes.

My fix to that issue was to open another zone map from the menu, then open the map for the zone I was in.

When I did this, the map scaled to the correct size.

Like I said, this happened before the recent EQ patch and only very rarely.

NHRAfan
01-03-2003, 11:57 AM
"Hey, lets put doors at -3200, -3200 just to screw with the SEQ users!!"

I think they are adding random untargetable spawns to achieve the same effect. Last night in Plane of Tactics my map would suddenly scale way down long after the zone had decoded. It didn't occur to me until I started looking for a fix, but each time there would be an unknown spawn way outside the normal zone boundaries. I'll try turning doors off tonight and see if that makes a difference or if they are adding additional spawns to mess maps up.

** edit -- spelling > me

Dedpoet
01-03-2003, 12:32 PM
If it's doors that are causing the problem, right-click the map, Show->Doors and uncheck it. I also filter doors and drops off of my spawn list.

ksmith
01-06-2003, 10:12 AM
Play around with this diff. It ignores spawns that are way outside the map boundary.



diff -u -r1.3 mapcore.h
--- mapcore.h 31 May 2002 21:49:28 -0000 1.3
+++ mapcore.h 6 Jan 2003 16:09:36 -0000
@@ -565,22 +565,22 @@
printf("in x: %i, in y: %i, max(%i,%i) Min(%i,%i)\n", x, y, m_maxX, m_maxY, m_minX, m_minY);
#endif /* MAP_DEBUG */

- if (x > m_maxX)
+ if (x > m_maxX && x < 2 * m_maxX)
{
m_maxX = x;
flag = true;
}
- if (y > m_maxY)
+ if (y > m_maxY && y < 2 * m_maxY)
{
m_maxY = y;
flag = true;
}
- if (x < m_minX)
+ if (x < m_minX && x > 2 * m_minX)
{
m_minX = x;
flag = true;
}
- if (y < m_minY)
+ if (y < m_minY && y > 2 * m_minY)
{
m_minY = y;
flag = true;

curio
01-10-2003, 04:32 AM
Originally posted by ksmith
Play around with this diff. It ignores spawns that are way outside the map boundary.



+ if (y > m_maxY && y < 2 * m_maxX)


Shouldnt that be maxY?




+ if (y > m_maxY && y < 2 * m_maxY)

ksmith
01-10-2003, 11:04 AM
yeah... max_Y

fryfrog
01-16-2003, 03:28 PM
could you change that in your original post? :)

ksmith
01-16-2003, 03:49 PM
Someone on irc (quckrabbit?) mentioned that they had better luck with

if (x > m_maxX && x < m_maxX + 2500)

and so on, rather than multiplying by 2.

I've yet to test it with anything other than multiplying by 2, but expect a patch to be submitted soon.

ksmith
01-20-2003, 10:13 AM
Ok, I found that making changes in mapcore.h didn't seem to help, so I moved my changes into spawnshell.cpp


diff -u -r1.30 spawnshell.cpp
--- spawnshell.cpp 10 Jan 2003 02:02:07 -0000 1.30
+++ spawnshell.cpp 20 Jan 2003 14:47:46 -0000
@@ -508,6 +508,12 @@
if (s.NPC == SPAWN_SELF)
return;

+ // check for out of bounds loc on spawn
+ if (s.x == 0 && s.y == 0 && s.z == 0)
+ return;
+ if (s.x > 25000 && s.y > 25000)
+ return;
+
// not the player, so check if it's a recently deleted spawn
for (int i =0; i < m_cntDeadSpawnIDs; i++)
{


This is not an ideal solution, but it does get rid of the phantom spawn at 0,0,0 and the wierd spawns that are way off the map.

Mr. Suspicious
01-20-2003, 01:18 PM
And what does it do when a zone does not have a map, or possibly worse: only a partly done map? Delete all spawns that are actually there, but not on the map surface?

ksmith
01-20-2003, 02:35 PM
checkPos() gets called every time a mob moves. Therefore the map would slowly expand as mobs near the first spawn that called checkPos() moved (this is only if there is no map). With a partial map (like Podisease has been), the mobs in the caves on the south side of the zone did show up and the map resized properly. In any case, mobs were *never* deleted from the spawnlist, the map was just not resized to show them until they moved into range (either max_X * 2 or max_X + 2500 and such).

HOWEVER... the changes I made to spawnshell.cpp mean you don't have to touch mapcore.h. The 25000 max range for positive x and positive y were chosen because no *existing* zone that I know of comes close to that size and it is still less than the x and y coordinates of the spawn that is causing the map to scale out. The changes to spawnshell.cpp do not care if there is a map or not.

quackrabbit
01-27-2003, 05:15 PM
I use "if (x > m_maxX && x < m_maxX + 2500)" example above.

It should be noted that m_maxX/Y and m_minX/Y get grow and get updated each time a spawn moves between the min/max and the min/max + 2500. The min/max values are not static based on the map.

QR

ThanosOfTitan
03-05-2003, 03:03 PM
Was the code to address the scaling issue moved to CVS? I did a search but didn't see any clear response to that but could have missed it.

I realize that the opcode issue currently breaks SEQ.