![]() |
|
|
|
#1
|
|||
|
Have something basic together now...
https://github.com/ClassicEmuAdm?tab=repositories This strips instances, tasks, expeditions, adventures, spells beyond level 65, LDoN functionality, most items from expansions beyond PoP, eliminates Defiant armor drops and other irrelevant global loot drops, changes weapon models back to classic, all zones beyond PoP and associated data, all quest components in zones beyond PoP, and probably more small stuff I'm forgetting about. There will be one additional repository for an open source dll injection to implement classic functionality on the client side similar to P99 but without P99's anti-cheat/obfuscation functions. Still playing around with an idea but I think I'd like to offer character exports/imports. You would be able to export your character data as a .sql file so you can reload your exact character in another emulator. The main point of this will be that I also want to offer precompiled binaries with all of these files bundled up. You would click "Play My Character" and essentially get a download of the emulator ready to start with your character data from a public server preloaded. This way any progress you make on an emu server you can save for your personal use. For example a guild could all export their character data and load it into a single private emulator for their members. A group of friends could save their characters from a dying emu server and play them together. I'd like to try to extend this somehow maybe allowing people to copy characters from PVE to PVP servers. What I think would be really cool but probably not practical would be to create a ClassicEmu grouping of servers run by different people which all support copying characters between them. The server operators would have to be part of a trusted group that would not run illegitimate servers and so the character data is somewhat legit between servers. Let players take their character between multiple servers with different rule sets without having to "start over" and hopefully encouraging more cross play between servers. Someone above mentioned the projecteq expansions project. That seems to be dead for the last 2 years but I do plan to continue using the min/max expansion database fields where possible so changes could be easily implemented on the projecteq database if they want. Same with changes to eqemu, although this is a stripped down classic emu fork changes can be merged for most things. As an example of why this sucks though. Look at weapon models, the PEQ database changed to new age models for everything because that is how live is. These models are determined by "idfile" field in the "npc_types" table which has an entry for every NPC in the game. Except this table only defines the NPC it has no min/max expansion field. There are spawn tables that refer to the npc_types table which do have min/max expansions. This means if you wanted "classic weapon models" to be something that is turned on/off using the database fields they added you would have to duplicate every NPC in the game who holds fine steel as one example just to specify a new idfile and then change the min/max expansions for both copies of the NPC to be pre/post this weapon model change. That is so inefficient and tedious compared to just changing all the weapon idfile fields to the proper model and being done because those models won't change until after PoP therefore we don't need to maintain two copies of all the NPCs for a classic server. The simplistic min/max expansion concept doesn't translate well to situations like this. It is poor systems design to architect something like that would require you to duplicate tons of data. Instead you should have "idfile2" field and then you have a mapping of min/max expansion which maps to these multiple idfile fields. That will become.. an incredible amount of effort when you consider all the ways this will need to be done beyond just idfile. You could also change EQemu and use a rule value to load old/new models but then you're not changing ProjectEQ and this isn't part of the database. How do rule values get turned on/off per expansion? That support doesn't exist currently. It's probably 10x more work to build a classic EQ rule system into existing EQemu/ProjectEQ than it is to just create a classic emu and not worry about ever having to turn certain things on/off that will never exist in the "classic" era. | ||
|
Last edited by azxten; 11-25-2022 at 03:40 PM..
| |||
|
#2
|
|||
|
Next step is to start implementing this progression functionality while salvaging as much of the existing min/max expansion and existing EQEmu rule/database value checking as possible. I jump in the emulator and mess around fixing the database as I notice things as well when the coding gets boring. Beyond this I'm still working on a master bug list for implementing more classic details as well as possibly creating a test framework to avoid unknowingly breaking intended functionality when changing things. This list will also be publicly available.
Have to setup my classicemu website and provide my more newb friendly emulator setup instructions ideally just run the exe to start the server on Windows possibly using an sqlite database to avoid having to setup a database. This should be performant enough for people wanting to mess around on their own server solo or with a few friends. I'll probably start playing on TAKP because it sounds like their core mechanics are way more classic than P99. Need to start reverse engineering some things but they're also very open about a lot of the functionality and provide the pseudocode. I want to compare P99/TAKP as well and luckily I still have a lot of various classes/levels on P99. Much of the work I'm doing might be wasted when/if they open source their code but whatever I'm having fun for now and the future is never certain. Also I need to redeploy Faydwar using this new classic project. Oh and I got the classic boats working using a disgusting hack but it works. Invisible 90 degree inclined doors with increased size that the boat moves along with it using the quest API and some custom packet functionality to only despawn/respawns doors for players on the boat to avoid the client side lag this causes to players on land who might be pulling mobs, etc who would notice this stuttering. The quest code moves the player in relation to the door when the door moves so if you're in one corner and run to the other the next tick of the doors moving your player still appears in the same place on the door that you moved to. There is some handling of changing door heading to the boat heading and how this also has to change player movement. This is a hilarious hack to me and almost definitely is going to dump players in the ocean especially if their computer connection lags, I love it. I'll probably add some kind of correction logic to catch players who probably glitched off the boat unintentionally so they get warped back to the deck unless they intentionally ran off of it. Ideally I can get a door model onto a spawn path which would be a much smoother experience for those on the boat. Currently it's pretty jerky but also reminds me of classic and is still functional in terms of moving around the boat and even fighting NPCs on it. The funny thing is the door packet thing means players on the shore watching the boat see a smooth sailing ship but players on the boat are in for a bumpy wild ride. As far as I know that's the first time the classic boat models have "worked" since 2004 or whatever. Now that I think about it it's probably the first time you could ride the classic boats and also cast spells/fight on them since long ago I'm not sure when they added the "too distracted" message and blocked spells. | ||
|
Last edited by azxten; 11-25-2022 at 04:43 PM..
| |||
|
#3
|
|||
|
I don’t think you could ever cast on boats, could be wrong
| ||
|
#4
|
||||
|
Quote:
| |||
|
#5
|
|||
|
Probably never been so concern about someone in my life than this wall of text guy.
| ||
|
#6
|
||||
|
Quote:
| |||
|
#7
|
||||
|
Quote:
| |||
|
#8
|
|||
|
Started a Monk over the weekend. Kick doesn't seem to be working - no matter what I tried to kick, it said the mob was invulnerable. Same thing happened when I got the first monk ability (roundhouse kick or something) - never would land because everything was invulnerable. Dwarf monk for the record.
| ||
|
#9
|
|||
|
Oh, last thing. I've started to see a few other people online. I tried talking with a few, but I couldn't understand them and I don't think they could understand me. Turns out my language was set to Elvish (I am a dwarf). Is there a way to change the default language? If not, you might need to let people know to check which language they are talking in.
| ||
|
#10
|
|||
|
Good to know the most important feature of the server is working )))
| ||
![]() |
|
|