EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::General Support (https://www.eqemulator.org/forums/forumdisplay.php?f=598)
-   -   EQEMU v0.6.2, My Experience (https://www.eqemulator.org/forums/showthread.php?t=19321)

deazone 09-12-2005 10:50 AM

Quote:

Originally Posted by WildcardX
vRandom,

I was just looking at that exact code! the reason why the server is "expecting 38" is because it is getting that number from the sizeof(STRUCT) function.. So 38 in this code is pretty much a constant as the memory signature of the PlayerPositionUpdateClient_Struct doesnt change. What is changing, the "36" and "37" from app->size is the size of that same struct the client is sending to the server. In effect, the server expects the size of this structure to be 38 bytes long, but the client is sending 2 different PlayerPositionUpdateClient_Struct sizes of 36 and 37 bytes. Upon reviewing the code further, I see this struct is instrumental in determining both player coordinate position in the eq world as well as positions of mobs. I'm still trying to understand this more so I can attempt a fix. I would think its simply the opcode for the OP_ClientUpdate is wrong and that we simply need to recapture this packet, but what I am confused about is why the client is sending 2 different sizes for the same structure unless the client has changed and broken what was once OP_ClientUpdate into 2 different opcodes...

6.1dr1 also receives two OP_ClientUpdates
as shown below:
[Error] OP size error: OP_ClientUpdate expected:30 got:31

Normally the 6.1 client does send 30 bytes.

I believe the opcode in opcodes.conf is correct. I believe it is serverside which is not allocating the PlayerPositionUpdateClient_Struct correctly.

Code:

void Client::Handle_OP_ClientUpdate(const EQZonePacket *app)
  {
          if (IsAIControlled())
                  return;
         
          if (app->size != sizeof(PlayerPositionUpdateClient_Struct)) {
        LogFile->write(EQEMuLog::Error, "OP size error: OP_ClientUpdate expected:%i got:%i", sizeof(PlayerPositionUpdateClient_Struct), app->size);
                  return;

As you can see sizeof(PlayerPositionUpdateClient_Struct) is always showing as 38, the clients are sending the 36byte packet. Every now and then a 37 byte packet.

Could it be that:

VCPP is not allocating the same memory as GCC. Normally eqemu has no problem with the OS port. However perhaps something was missed. Does anyone have a linux server up that could confirm this?

tallerin 09-12-2005 11:33 AM

Also i have to agree the opcode in the opcode.conf is the right one as i get 0x14cb for the OP_ClientUpdate from peq server when i ran a packetcollector

WildcardX 09-12-2005 11:54 AM

It is true that different platforms will get different sizeof() results for datatypes. I did notice in that structure you mentied above that some structure members are declared as a float instead of the cross platform accepted float32 type, for example. That could result in a different sizeof(structure) result.

MikeyUSC 09-12-2005 12:01 PM

Fix for This Problem
 
Code:

/*
** Player position update
**        Struct sent from client->server to update
**        player position on server
**
*/
struct PlayerPositionUpdateClient_Struct
{
/*0000*/ uint16        spawn_id;
/*0022*/ uint16        sequence;        //increments one each packet
/*0004*/ float y_pos;                // y coord
/*0008*/ float delta_z;            // Change in z
/*0016*/ float delta_x;            // Change in x
/*0012*/ float delta_y;            // Change in y
/*0020*/ signed animation:10;    // animation
        signed delta_heading:10;  // change in heading
        signed padding0020:12;  // ***Placeholder (mostly 1)
/*0024*/ float x_pos;                // x coord
/*0028*/ float z_pos;                // z coord
/*0034*/ unsigned heading:12;    // Directional heading
        unsigned padding0004:4;  // ***Placeholder
/*0032*/ // COMMENT ME OUT!! uint8 unknown0006[2];  // ***Placeholder
/*0036*/
};

Simply comment out the last line, and all is well..

RadarBlipBox on the LoginServer is now running with this modification..try & see if anyone has any problems..

jillmatik 09-12-2005 12:06 PM

I'll definitely try this server once I get home from work. If this does turn out to be the fix, would greatly appreciate a link for any updated files! I have no way to compile any updates :(

Thanks,
J

tallerin 09-12-2005 12:13 PM

wooohooo thats it i can move somewhere else and attack and it works on radarblipbox

WildcardX 09-12-2005 12:15 PM

ugh someone beat me to the fix!! hehe Good job!

I really wanted to find the fix for this one and it was staring me in the face the entire time. That line you comment out is the 1 to 2 byte difference in the structure size. I'll try it out and recompile now! woot!

vRandom 09-12-2005 12:22 PM

cool, now who is willing to share a compiled binary :)

vRandom

tallerin 09-12-2005 12:29 PM

should have mention before NICE JOB had a burp in net connection but reconnected and is working great having no issues yet. well except for 2 skelies not liking me and killing me. But i was very much able to hit and do dmg again nice job.

jillmatik 09-12-2005 12:36 PM

Quote:

Originally Posted by tallerin
should have mention before NICE JOB had a burp in net connection but reconnected and is working great having no issues yet. well except for 2 skelies not liking me and killing me. But i was very much able to hit and do dmg again nice job.

LOL!

Great work! Thanks again MikeyUSC

Sakrateri 09-12-2005 01:09 PM

Any able to post a compiled fix here ? Please ?

WildcardX 09-12-2005 01:18 PM

hehe I'm compiling as fast as I can.. :-) Wife made dinner so...

vRandom 09-12-2005 01:19 PM

hummmm fooooood...... lol

edit: depending on what your having, you could post that here too
i'm hungry....
vRandom

rojadruid 09-12-2005 01:42 PM

Quote:

Originally Posted by cobra80
Anyone managed to load the peq velious rc1 database into a fresh install that mind sharing how they managed? All i keep getting is tables missing when i try to directly insert it or this error when trying to update things.

ERROR 1060 (42S21) at line 468253: Duplicate column name 'lootdrop_id'

I am running the lastest peq velious rc1 database. all I did was run gthe following in a cmd window: "mysql -u[user] -p[password]" this brings up your mysql window. In it I typed "CREATE DATABSE eq;" followed by "USE eq;" next I sourced two of the four files from the website. by typing "source load_system.sql;" once it finished, took awhile to do I did the next file "source load_empty_users.sql;" after that nothing else have I changed.

after that I just configured the three ini files and I was good to go.

I can load the server, only errors I see are the missing opcodes everyone else is getting, and the no attacking thing which if reading thru here is right is a translation problem.

I am also having a router issue where to login on my network I have to set all the ips in the ini files to localhost, but when configured for public play anyone else but my local lan can play including th computer hosting the server.

MikeyUSC 09-12-2005 01:56 PM

Quote:

Originally Posted by Sakrateri
Any able to post a compiled fix here ? Please ?

If I must.. =)

This is JUST World.exe & Zone.exe

Mike

http://www.asrc.info/beta/EQEmuFixed.zip


All times are GMT -4. The time now is 01:50 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.