xeL Posted July 13, 2016 Posted July 13, 2016 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 Quote
zconll Posted July 13, 2016 Posted July 13, 2016 (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 July 13, 2016 by zconll Quote
eressea Posted July 13, 2016 Author Posted July 13, 2016 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... Quote
zconll Posted July 13, 2016 Posted July 13, 2016 (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 July 13, 2016 by zconll Quote
SevenGuards Posted July 13, 2016 Posted July 13, 2016 Fixed base address? what base address you use ? Quote
eressea Posted July 13, 2016 Author Posted July 13, 2016 Fixed base address? what base address you use ? Now 0x34000000. Quote
Anarchy Posted July 13, 2016 Posted July 13, 2016 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 Quote
eressea Posted July 13, 2016 Author Posted July 13, 2016 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 Quote
Anarchy Posted July 13, 2016 Posted July 13, 2016 (edited) sharedfactory is any shareddata class so CSharedCreatureDataCSharedItemDataCSharedPledgeData 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 July 13, 2016 by Anarchy Quote
eressea Posted July 13, 2016 Author Posted July 13, 2016 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. Quote
Anarchy Posted July 14, 2016 Posted July 14, 2016 (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 July 14, 2016 by Anarchy Quote
eressea Posted July 14, 2016 Author Posted July 14, 2016 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) Quote
Anarchy Posted July 14, 2016 Posted July 14, 2016 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 Quote
eressea Posted July 14, 2016 Author Posted July 14, 2016 (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 July 14, 2016 by eressea Quote
SevenGuards Posted July 14, 2016 Posted July 14, 2016 Now 0x34000000. So what results you got? I should solve your crash issue Quote
Recommended Posts
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.