Quote:
Originally Posted by cavedude
It doesn't work. We are missing most of the Bazaar opcodes, and the code supporting it is half-implemented/broken for our current client. I've been working on getting the missing opcodes, but have met with limited success. Though, I have found something very odd, you can start trader mode if you are against the wall in the Red section. Anwywhere else, including the blue section does not work for me at all. Though, you can only start trader mode you can't do anything else.
|
Thought I'd bump this old thread rather than start a new one.
I've been pouring over live packet traces and disassembly trying to figure out how the hell the client knew you where on a trader stall. I thought at first there would be a packet sent when you moved on/off them, then perhaps maybe there was a flag in the position update packets.
Turns out the trader platforms are doors! The client is looking for you to be standing on a door with opentype 155 or 153. The database has half of them as opentype 154, which is why Cavedude got the client to accept trader mode in some places and not others.
I found the main Bazaar processing routine in the client and a couple of opcodes. The couple of structs I have looked at so far seem the same as is currently used in zone/trading.cpp, so I think it should be possible to get this functional again with a bit of work.
The old trader table is defined in the SourceForge CVS, in the SQL-Files directory.
Code:
mysql> describe trader ;
+-----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| char_id | int(10) unsigned | NO | PRI | 0 | |
| item_id | int(10) unsigned | NO | | 0 | |
| item_cost | int(10) unsigned | NO | | 0 | |
| slot_id | tinyint(3) unsigned | NO | PRI | 0 | |
+-----------+---------------------+------+-----+---------+-------+