PDA

View Full Version : Game Mechanics: EQType 6000's


Hawala
04-24-2015, 10:36 PM
I'm taking over the Classic UI project, and now working on the classic merchant window, I've run up against a problem.

Project 1999 server doesn't recognize <EQType>6000</EQType> through <EQType>6079</EQType>, which correspond to merchant items for sale (1-80).

I see the issue has been brought up before here (http://www.project1999.com/forums/archive/index.php/t-7561.html) but it was not addressed, or fixed.

This is definitely a server issue, as I've coded something that should allow me to purchase these items from the merchant, but the database is not returning the appropriate queries.

This merchant should have a significant amount of things for sale:

http://i.imgur.com/K2t2dGH.png

Thanks.

Hawala
04-28-2015, 11:17 AM
Any help?

Luniz
04-28-2015, 01:24 PM
doacleric
05-17-2010, 05:07 PM
I think you misunderstand what the post means. The data that is displayed by the client in the actual fields is in a database, yes. For example, when you click on a mechant and get loaves of bread, water flasks, and muffins, is stored on the server in the database. However, the server doesn't tell the client "display the buy window in the following graphical way". Thats all client side, and something we can't change unless it can be modified through the UI options.

Madbad
04-28-2015, 01:39 PM
Every time I see classic ui it makes me nostalgic. I can't imagine having to play with it now though. Either way, nice work and I'm glad to see someone else picking up the torch.

Hawala
04-28-2015, 01:41 PM
That's the job of the UI isn't it?

The same interface works classically when modified to loot corpses, where the EQTypes are changed to 5000's, which correspond to corpse loot.

How is this different?

It seems the database is just not returning queries formatted requesting data in the 6000-6079 range, which leads me to believe these EQTypes don't point to merchant items in the server.

It could really be any number, the server just needs to understand that some arbitrary number points to merchant items for sale.

For the Titanium client, they made a change to display the items in a "stream", so the database query is different, returning all the items for sale at once, instead of one by one like it did classically.

Zaela
04-28-2015, 08:18 PM
It's nothing to do with the server.

The server does not know anything about the UI. There are no "EQType" ids on the server side; they don't line up with anything the server uses.

When you click on a merchant, the client sends a packet to the server and the server replies with a packet to open the merchant window, followed by a bunch of item packets for the merchant's inventory. This process is the same regardless of the client being used -- even for a pre-titanium client that still used the "2 column" inventory-style layout rather than the dynamic-filling list. This all happens regardless of anything. The UI has no power over the format of the request or the reply or anything like that. The UI's job is just to do stuff with the info the client already is receiving anyway. (also: merchant inventories are cached in memory, the database's job is done long before a client comes around to click on the merchant.)

Anyway, I don't know anything about UI customization but a cursory look at the xml files in uifiles/default/ doesn't turn up any <EQType>s in the 6000s range, although there are the expected ones for the main inventory, loot window, bazaar, etc. Dropping in the EQUI_MerchantWnd.xml from the earlier client that does still use the 2-column layout and <EQType> 6000s brings up the UI xml incompatibility warning when I log in and indeed does not work properly.

It seems possible that when they changed the merchant window for Titanium (or whenever) to use a <ListBox> rather than the structure with explicit <InvSlot> elements for each slot, they took out the old way of doing it entirely, removing the mapping of <EQType>s 6000 to 6079 from the in-memory structure representing the merchant inventory. (Maybe they brought it back as an option later due to demand -- I have no idea what it's like for Live or anything like that.)

I wouldn't know, though.

It seems like it might be possible to fiddle with the current <ListBox> to make it just show one column of item icons (no quantity or price)... though obviously that's pretty far off the mark.

Grimjaw
04-28-2015, 11:26 PM
I agree with Zaela that the Titanium client is missing the part about 6000-6079, probably removed when they changed the merchant window to use listbox.

also probably hardcoded in one of these files:

C:\Program Files\Sony\EverQuest>findstr /S /M /C:"EQType" *
eqgame.exe
eqmain.dll

here's a link to multiple eqgame.exe's. you could try finding one that recognizes 6000-6079
Edit: these are actually pre2002 so probably dont support the XML clients
https://web.archive.org/web/*/http://www.everquest.com.tw/download/patch/*

Hawala
04-29-2015, 11:00 AM
It's nothing to do with the server.
It seems like it might be possible to fiddle with the current <ListBox> to make it just show one column of item icons (no quantity or price)... though obviously that's pretty far off the mark.

Yeah, I was thinking the same thing. Sort of had this coded as a backup plan, but it makes me sad.

I'm not sure if you're right, I'd like to be able to work with a dev on this one.