Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 04-10-2012, 04:09 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default VoA Development Tracking

This thread was created to help keep track of the development of the Veil of Alaris client. Currently, we are working on the client that has a build date of March 21st 2012. This is likely to change over time with SOE patches. It has not yet been determined how following Live patches will be handled, if at all. As of writing this, you can get this client by fully patching to EQ Live using an F2P (or paid) account.

This thread can be used as a reference for what needs work, and who is working on what. I will try to keep this post updated as people update the thread with any progress or notes.

This thread can be used for any development related work or concerns as well as to report any bugs with the client that haven't already been documented.

This thread will be focused on VoA specific bugs, not general bugs that exists in some or all other clients. Because we are already tracking known issues with previous clients in other threads, this thread will not repeat those same issues. For reference, see the following threads for previous client development tracking:
SoD Development Tracking
Underfoot Development Tracking


Last Update - April 22th 2012


Top Priority Work:
1. AA Purchasing - Purchasing AAs is not yet functional. Need to review how it is handled on Live currently.
2. Selling to merchants - Merchant Lists now display and buying from them works, but it looks like the sell packet now sends the item instance Serialized number instead of the merchant/inventory slot. The code supporting this may need to be adjusted.
3. Guilds - Any character in a guild will crash the client when they try to log in. Most likely, this is just a structure issue that needs to be corrected. It looks like the issue is with the Guild Member List packet.
4. Looting - Looting is functional if right clicking to loot, but left clicking to loot to the cursor doesn't work. This is due to how slots were completely changed around and needs further investigation on how to deal with it properly.
5. Tasks - Tasks are not working at all yet. This is due to packet structure changes that will need encodes before sending them to the client.
6. Adventure Merchants - These bug the client if clicked currently. Probably some struct changes needed.
7. Tradeskill Containers - Clicking a world tradeskill object to open it causes the client to bug. This is probably due to an opcode or structure issue.
8. Popups - Popup windows aren't working at all right now. Most likely a struct change is needed.

I am sure there are plenty of broken systems that need work, and will update this section as more issues are identified.


Medium Priority Work:
1. Wear Change - The Wearchange structure changed slightly and now some armor textures don't seem to show up correctly. Needs further investigation.


Low Priority Work:
Pending further assessment


Client Issues:
None known as of yet


Database and Source Code Changes that will be needed at some point:
Will need to convert the source and database to use the new Live format for item slots to allow bags larger than 10 slots.


New Systems to VoA that did not exist in Underfoot (that may/do require code support):
1. Containers can go above 10 slots and it looks like the max is at least 32 slot (though there is no reason for hard setting a max in the source with the new slot format).
2. Containers can be stored inside other containers. So long as they are empty and the same size or smaller. The client already allows this, but need server support to prevent issues.
3. Player Housing system
4. Two new slots in the base player inventory for a total of 10.
5. Merchant window now has a "Preview" button. Clicking it will bring up a window with a small model of your character exactly as he/she is but with whatever item you had selected equipped. Only for items that can go in visible inventory slots. The character model can be rotated and zoomed in on. Used to preview the appearance of items as they would appear on your character before buying them.
6. Merchant window now has a "Reclaim" tab. Any item you destroy during a single session of EQ (Unsure if it resets when you log) is shown in this tab and can be purchased at the cost of "Reclamation Tokens"
7. New "Zone Guide" window. Brings up a listing of all static zones in game and sorted by name, continent, and recommended level. Selecting a zone also displays all connected zones. At the bottom you can create a "Zone Path" by selecting a Start zone and Destination zone as well as a few other variables. This will then create a Find path (Same path that has been used for NPC Find forever) from where you're standing to the zone line and will attempt to guide you to your destination zone. This functionality has also been tied into the Map window, which itself has received a tiny revamp.
8. In-Game "Polls" window. Shows community polls and the results of said polls.
9. Alert History Window. Displays history of alerts your character has received. Examples being the window with keyboard commands that pops up when you first log a character into the tutorial, or the window that pops up for Free/Silver members reminding them to "Go Gold".
10. Death has been changed. You still receive the same xp hits, still have the rez window etc and still appear at bind. However you appear with all gear still on you and all spells still scribed. Bodies seem to spawn naked and only exist for rezes now. (This is the only new feature that actually bothered me. If this goes in should probably add a rule variable to the database to let server ops turn it on/off at whim.)


Issues with Newly Implemented Systems that did not exist in Underfoot:
Pending further assessment


Recently Resolved Issues:
1. Casting Spells and Click Effects on items is now functional.
2. Character Creation - This is now functional. (Thanks Secrets!)
3. Consume Food/Drink - This is now functional.
4. AAs - AAs now display properly in the AA window and hotkeys can be created.


Attaining the Live F2P (Free to Play) VoA Client:
http://www.everquest.com/
Click the "Play Free" button to download the installer and run it to install EQ.
Once the client is downloaded and fully patched (requires you to create a free account), then just follow the normal EQEmu client setup instructions.

Note that this client is patched from Live, so it is highly recommended to copy your entire EQ folder to another folder and run EQEmu from there. This is so when SOE patches, your VoA client will still be available while the new patch changes are getting adjusted for EQEmu.

Note that this client is currently disabled by default in the current SVN. Anyone who wants to test it on their server will need to uncomment the 2 VoA lines in this file before compiling:
http://code.google.com/p/projecteqem...es/patches.cpp

This post will be updated again regularly with current development status. Devs, please feel free to edit this post as needed.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 04-22-2012 at 09:10 AM..
Reply With Quote
  #2  
Old 04-10-2012, 04:09 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I am not really sure what the plan is for this client. I don't really think we have enough active devs interested in maintaining a client that keeps up with Live patching. Though, with some recent scripts I made, updating opcodes is a bit easier. That may make it possible to keep up with Live with minimal work as long as it is kept up with for each patch so we don't get too far behind. The further behind we get, the harder it is to catch up, as many packet structures have changed and it takes a while to account for them all and fix them.

One thing I want to mention is that I named the patch files "VoA", which is the same naming convention as our previous clients. The difference is that this client could change at any time due to its source. So, one issue that would need to be dealt with if we tried to keep up with Live is how to handle the patch files in our source. We could have the names change to reflect the date of the eqgame.exe build date, or we could just put that date in the patch file as a comment and name them something like "VoA1", "VoA2" and so on. It isn't the naming that concerns me too much though, it is the number of potential patch files we would eventually have. It is already enough of a pain to update 4 patch files for every new opcode that gets added. I don't even want to think about having to do 20 of them after just 1 year of "chasing Live"! Maybe some sort of sub-patch system could be created that would allow for minor changes within the same expansion of patches. I think we would need some kinda change like that or maybe only support new opcode additions for the current patch as well as the UF and older clients and skip any Live patches in between.

I am just hoping that Steam gets a new complete client for EQ again at some point. If they do, then the work on this VoA client might be able to get the Steam version running in minimal time. That is my main reason for working on this client right now.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 04-10-2012 at 04:58 AM..
Reply With Quote
  #3  
Old 04-11-2012, 11:34 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

There is a new patch from Live with a build date of April 10th. I checked and it looks like they didn't change very much. The current VoA build for the emu is still as functional with the new client as it was with the old one as far as I can tell. I will be working from the new April 11th client from this point on.

I did a bit more testing and it looks like normal melee combat works fine and even looting works fine as long as you right click to loot instead of left clicking to loot to the cursor.

I found another crash with this client. It will crash the client if the character you are logging in is in a guild. Otherwise, it should log in fine.

Since a picture is worth a thousand words, here is a screenshot showing off some of the functionality of the VoA client so far:

__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 04-12-2012, 04:26 AM
Amra's Avatar
Amra
Hill Giant
 
Join Date: May 2006
Posts: 117
Default

Nice Trev =)
Reply With Quote
  #5  
Old 04-12-2012, 01:27 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Trevius, I am downloading the F2P right now to archive away, the April 12th patched one.

Is there anything I can help with to help speed up your progress ?
Reply With Quote
  #6  
Old 04-13-2012, 01:35 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Quote:
Originally Posted by provocating View Post
Is there anything I can help with to help speed up your progress ?
No, not unless you know how to read through packets and figure out packet structures, opcodes and do encodes/decodes. Though, you can always start learning at any time. I learned how to do it mostly on my own and have a page in the wiki that explains it a little, though it is pretty old.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #7  
Old 04-13-2012, 02:27 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,450
Default

Made a commit with membership stuffs. I think I accidentally the whole items though i'm not sure if it is just x64 being nubby again.

Also, if anyone is interested in seeing what is done, I am hosting a non-legit server for testing this client. Simply patch to live and connect to "Secrets VoA Test" under the green server list. Mess around and try to break things.
Reply With Quote
  #8  
Old 04-13-2012, 04:40 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I haven't tested it yet, but I doubt you broke items. You only added comments to them, so there shouldn't be any issues. It is probably a x64 issue with your server.

*EDIT*

I think I got the item struct issues figured out. I just need to get home and test the changes. Looks like 2 of the new int32s were in the wrong spots. I am still not 100% sure on the positioning of one of them, but it is narrowed down to a very small range of possible positions.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 04-13-2012 at 06:57 AM..
Reply With Quote
  #9  
Old 04-14-2012, 11:43 AM
Noport
Opcode Ninja
 
Join Date: Mar 2009
Location: San francisco
Posts: 426
Default

provocating

I hope the examples of code help you if you see / remove them. in patches directory you should see
Voa.cpp
Voa.h
Voa_itemfields.h
Voa_ops.h
Voa.structs.h

this is for world common/patches directory patches.cpp
Code:
#include "../debug.h"
#include "patches.h"

#include "Client62.h"
#include "Titanium.h"
#include "Anniversary.h"
#include "Underfoot.h"
#include "SoF.h"
#include "SoD.h"
#include "HoT.h"
#include "VoA.h"

void RegisterAllPatches(EQStreamIdentifier &into) {
	Client62::Register(into);
	Titanium::Register(into);
        Anniversary::Register(into);
	SoF::Register(into);
	SoD::Register(into);
	Underfoot::Register(into);
	HoT::Register(into);
        VoA::Register(into);
}

void ReloadAllPatches() {
	Client62::Reload();
	Titanium::Reload();
        Anniversary::Reload();
	SoF::Reload();
	SoD::Reload();
	Underfoot::Reload();
	HoT::Reload();
        VoA::Reload();
}
common directory eq_constants.h
Code:
*/
#ifndef EQ_CONSTANTS_H
#define EQ_CONSTANTS_H 

#define BIT_Client62		1
#define BIT_Titanium		2
#define BIT_Anniversary     4
#define BIT_SoF			5
#define BIT_SoD			8
#define BIT_Underfoot		16
#define BIT_HoT			16
#define BIT_VoA			16
#define BIT_TitaniumAndEarlier	3
#define BIT_AnniversaryAndLater 0xFFFFFFFC
#define BIT_SoFAndLater 	    0xFFFFFFFC
#define BIT_SoDAndLater		    0xFFFFFFF8
#define BIT_UnderfootAndLater	0xFFFFFFF0
#define BIT_HoTAndLater         0xFFFFFFF0   
#define BIT_VoAAndLater	        0xFFFFFFF0
#define BIT_AllClients		    0xFFFFFFFF
world clientlist.cpp
Code:
void ClientList::SendClientVersionSummary(const char *Name)
{
	uint32 Client62Count = 0;
	uint32 ClientTitaniumCount = 0;
    uint32 ClientAnniversaryCount = 0; 
	uint32 ClientSoFCount = 0;
	uint32 ClientSoDCount = 0;
	uint32 ClientUnderfootCount = 0;
	uint32 ClientHoTCount = 0;
    uint32 ClientVoACount = 0; 
	

	LinkedListIterator<ClientListEntry*> Iterator(clientlist);

	Iterator.Reset();

	while(Iterator.MoreElements())
	{
		ClientListEntry* CLE = Iterator.GetData();

		if(CLE && CLE->zone())
		{
			switch(CLE->GetClientVersion())
			{
				case 1:
				{
					++Client62Count;
					break;
				}
				case 2:
				{
					++ClientTitaniumCount;
					break;
				}
				case 3:
				{
					++ClientAnniversaryCount;
					break;
				}
				case 4:
				{
					++ClientSoFCount;
					break;
				}
				case 5:
				{
					++ClientSoDCount;
					break;
				}
				case 6:
				{
					++ClientUnderfootCount;
					break;
				}
                case 7:
				{
					++ClientHoTCount;
					break;
				}
                case 8:
				{
					++ClientVoACount;
					break;
				} 
				default:
					break;
			}
		}

		Iterator.Advance();

	}

	zoneserver_list.SendEmoteMessage(Name, 0, 0, 13, "There are %i 6.2, %i Titanium, %i Anniversary, %i SoF, %i SoD, %i UF, %i HoT, %i VoA clients currently connected.",
					  Client62Count, ClientTitaniumCount, ClientAnniversaryCount, ClientSoFCount, ClientSoDCount, ClientUnderfootCount, ClientHoTCount, ClientVoACount);
}
this is for zone
bot.h
Code:
typedef enum EqExpansions {
		ExpansionNone,
		ExpansionEQ,
		ExpansionRoK,
		ExpansionSoV,
		ExpansionSoL,
		ExpansionPoP,
		ExpansionLoY,
		ExpansionLDoN,
		ExpansionGoD,
		ExpansionOoW,
		ExpansionDoN,
		ExpansionDoDH,
		ExpansionPoR,
		ExpansionTSS,
		ExpansionAnV,
		ExpansionSoF,
		ExpansionSoD,
		ExpansionUF,
		ExpansionHoT,
                ExpansionVoA
	};
client.h
Code:
typedef enum {
	EQClientUnknown = 0,
	EQClient62,
	EQClientTitanium,
	EQClientAnniversary,
	EQClientSoF,
	EQClientSoD,
	EQClientUnderfoot,
	EQClientHoT,
        EQClientVoA
} EQClientVersion;
client_packet.cpp
Code:
void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)
{
	if(app->size != sizeof(ClientZoneEntry_Struct))
		return;
	ClientZoneEntry_Struct *cze = (ClientZoneEntry_Struct *) app->pBuffer;

	if(strlen(cze->char_name) > 63)
		return;

	conn_state = ReceivedZoneEntry;

	string StreamDescription = Connection()->Describe();

	if(StreamDescription == "Patch Titanium")
	{
		ClientVersion = EQClientTitanium;
		ClientVersionBit = BIT_Titanium;
	}
	else if(StreamDescription == "Patch 6.2")
	{
		ClientVersion = EQClient62;
		ClientVersionBit = BIT_Client62;
	}
	else if(StreamDescription == "Patch Anniversary")
	{
		ClientVersion = EQClientAnniversary;
		ClientVersionBit = BIT_Anniversary;	
	}
	else if(StreamDescription == "Patch SoF")
	{
		ClientVersion = EQClientSoF;
		ClientVersionBit = BIT_SoF;
	}
	else if(StreamDescription == "Patch SoD")
	{
		ClientVersion = EQClientSoD;
		ClientVersionBit = BIT_SoD;
	}
	else if(StreamDescription == "Patch Underfoot")
	{
		ClientVersion = EQClientUnderfoot;
		ClientVersionBit = BIT_Underfoot;
	}
	else if(StreamDescription == "Patch HoT")
	{
		ClientVersion = EQClientHoT;
		ClientVersionBit = BIT_HoT;
	}
        else if(StreamDescription == "Patch VoA")
	{
		ClientVersion = EQClientVoA;
		ClientVersionBit = BIT_VoA;
        }
Reply With Quote
  #10  
Old 04-14-2012, 12:06 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I am very impressed with how fast this has been accomplished. Things I noticed not working was my health bar is not registering, was at level 1 instead of 60, guild chat not working and inventory. Not complaining here, in fact I was shocked at how much is actually working, vendors, bots, zoning, all of that works.

I am going to try to get up to speed tonight on how this is done and hopefully will find some information on the wiki on how the client works with the server. I doubt I can get up to speed quick enough to help Trevius and the others but maybe in the future I can help out. If any players want to test the client, our live server is patched up to r2115 so F2P clients should be able to see VoA.








Reply With Quote
  #11  
Old 04-14-2012, 12:16 PM
Noport
Opcode Ninja
 
Join Date: Mar 2009
Location: San francisco
Posts: 426
Default

world client.cpp

Code:
string StreamDescription = eqs->Describe();

	if(StreamDescription == "Patch Titanium")
	{
		ClientVersionBit = BIT_Titanium;
	}
	else if(StreamDescription == "Patch 6.2")
	{
		ClientVersionBit = BIT_Client62;
	}
	else if(StreamDescription == "Patch Anniversary")
	{
		ClientVersionBit = BIT_Anniversary;
	}
	else if(StreamDescription == "Patch SoF")
	{
		ClientVersionBit = BIT_SoF;
	}
	else if(StreamDescription == "Patch SoD")
	{
		ClientVersionBit = BIT_SoD;
	}
	else if(StreamDescription == "Patch Underfoot")
	{
		ClientVersionBit = BIT_Underfoot;
	}
	else if(StreamDescription == "Patch HoT")
	{
		ClientVersionBit = BIT_HoT;
	}
    else if(StreamDescription == "Patch VoA")
	{
		ClientVersionBit = BIT_VoA;
	}  
}
Reply With Quote
  #12  
Old 04-14-2012, 12:17 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Not sure if you are reading my threads as I am posting them NoPort, but I did get it working. There again you may be showing me what I need to know to get up to speed on how the client talks to the server, if so...definitely thank you.

EDIT

I am guessing I need to be reading this.

http://www.eqemulator.net/wiki/wikka...=PacketStructs
Reply With Quote
  #13  
Old 04-14-2012, 01:17 PM
Noport
Opcode Ninja
 
Join Date: Mar 2009
Location: San francisco
Posts: 426
Default

provocating your welcome

download wireshark-win32or64-1.2.10 start saving logs as *.pcap on f2p or your own server
compile trunk\EQEmuServer\utils\EQExtractor2\EQExtractor2
copy your voa.conf and *.pcap into the same directory as eqextractor2

watch forums for changing or updating opcodes
http://code.google.com/p/projecteqem...2FEQExtractor2
http://www.showeq.net/forums/showthr...-for-VoA/page2
http://www.showeq.net/forums/showthr...6515#post46515
Download showeq-x.xx.xx.x the newer file has opcodes inside
http://sourceforge.net/projects/seq/files/ShowEQ/
Reply With Quote
  #14  
Old 04-14-2012, 01:41 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I have spent the last 30 minutes reading the wiki on packet structures, pretty easy to understand. A lot of it is redundant from learning packets studying for classes at work. The primitives I already knew from a little C++ and more from C# from what I use at work.

I have got to get the normal daily stuff done here but later this afternoon I plan on getting some PCAPS and observing them as the packets come in. I also learn better from hands on, you can only get so much from reading. Actually doing it help enforce what you read anyway.
Reply With Quote
  #15  
Old 04-14-2012, 02:58 PM
Noport
Opcode Ninja
 
Join Date: Mar 2009
Location: San francisco
Posts: 426
Default

Good reading links provocating
packetcollector http://www.eqemulator.org/forums/forumdisplay.php?f=602
http://www.eqemulator.net/wiki/wikka...vOpcodeFinding
http://www.eqemulator.net/wiki/wikka...ka=DevAsmTools
http://www.eqemulator.net/wiki/wikka...DevAsmRoutines
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:25 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3