Jump to content

Recommended Posts

Posted

Interesting .... Go for more. Nice to see new stuff around. Mby you come with brand new ideas wich will bring l2 private to new level. Good luck

Posted (edited)

Using your patched L2server with last dll error 0x0c000001d

Using loader with patched l2server same error (dll is attached to l2server).

Using loader with l2server_orig show error L2Server.exe wasn't able to load MyExt64.dll

Edited by zconll
Posted

Using your patched L2server with last dll error 0x0c000001d

Using loader with patched l2server same error (dll is attached to l2server).

Using loader with l2server_orig show error L2Server.exe wasn't able to load MyExt64.dll

 

That's bad, I really don't know where could be the problem and I have only win2k8 machines where everything works (patched l2server, loader, everything...) :(

 

Maybe try to create a new topic in general l2off discussion...

Posted (edited)
Thank you for your effort,

 

If someone using this extender, he can verify with Windows Server 2003 sp2 and AMD Phenom II 4x processor is working, It would be of great help.
 
Thanks again .
Edited by zconll
Posted

At some point you're probably gonna want an L2NPC ext, which uses sharedfactory, so you will want to (probably sooner rather than later) split your sharedfactory headers into a shared library.

 

/* 0x002C */ unsigned char padding0x002C[0x00A4-0x002C];

^ this kinda stuff is a nightmare when you come to add a new var somewhere in the middle, as it's all 8 byte aligned you could just split it out to INT64 placeholders which makes it much easier to add vars later

 

Also, the ext is not going to work properly on gf 87 as ncsoft fucked the ex packets, I don't think I have my 87 ext anymore but if I find it I'll post the opcode corrections for it

Posted

At some point you're probably gonna want an L2NPC ext, which uses sharedfactory, so you will want to (probably sooner rather than later) split your sharedfactory headers into a shared library.

/* 0x002C */ unsigned char padding0x002C[0x00A4-0x002C];

^ this kinda stuff is a nightmare when you come to add a new var somewhere in the middle, as it's all 8 byte aligned you could just split it out to INT64 placeholders which makes it much easier to add vars later

 

Also, the ext is not going to work properly on gf 87 as ncsoft fucked the ex packets, I don't think I have my 87 ext anymore but if I find it I'll post the opcode corrections for it

 

I'm still new in this all and still learning, what is sharedfactory?

 

Those paddings were nightmare until I figured out how to write it (unsigned char [nextOffset-thisOffset]), then it's easy, you just add the variable where you want and split padding to two paddings (before and after) and just copy/paste offsets, no more need for calculator :)

 

I have some packet rewrite even for protocol 87 but if they changed content of packets, I'm screwed

Posted (edited)

sharedfactory is any shareddata class so

CSharedCreatureData
CSharedItemData
CSharedPledgeData

 

etc etc etc, they are all stored in shared memory between l2server and l2npc so when you make an l2npc ext the headers for those will need to be available to that project also, you can just include across the projects but a shared library project is cleaner and enables you to share other things like memory read/write classes and other stuff which will be common to all extenders in the project (as you're gonna need a cached ext also at some point too)

Edited by Anarchy
Posted

sharedfactory is any shareddata class so

CSharedCreatureData

CSharedItemData

CSharedPledgeData

 

etc etc etc, they are all stored in shared memory between l2server and l2npc so when you make an l2npc ext the headers for those will need to be available to that project also, you can just include across the projects but a shared library project is cleaner and enables you to share other things like memory read/write classes and other stuff which will be common to all extenders in the project (as you're gonna need a cached ext also at some point too)

 

I'm bit confused now, I thought these are sent over network, aren't they?

 

I was thinking about single DLL to extend all four daemons - it's not difficult to detect who loads it and select the right initialization function/class.

Posted (edited)

The only thing sent over the network is instructions. The actual data for players/npcs/items/etc, at least the shared data anyway, is stored in shared memory created by the l2server as transferring every single update of every single player/npc/item etc over network would be completely impractical.

Edited by Anarchy
Posted

The only thing sent over the network is instructions. The actual data for players/npcs/items/etc, at least the shared data anyway, is stored in shared memory created by the l2server as transferring every single update of every single player/npc/item etc over network would be completely impractical.

 

Sound like good performance boost but how does it work when the three daemons run on three different machines? Or it's not possible? (I never tried it, I've always run them on single machine so I don't know)

Posted (edited)

l2server and l2npc are the only two which share memory and so have to be on the same machine, any other daemons can be where ever they like

 

Thanks for clarification :)

 

What do you think about that idea with single DLL?

 

EDIT: Look at my last version, I've tried it and it looks it will be good :)

Edited by eressea

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...