Log in

View Full Version : Question about ROF client for ulcerative


gibroni
08-15-2014, 05:27 PM
Do you have any idea if or when the summoning stacks issue will be functional using the RoF client? I have been trying to follow your work being done with the inventory overhaul and I understand it's a huge undertaking. Just hoping to touch base on that subject and where it stands.

Uleat
08-15-2014, 06:20 PM
(I'm assuming that's for me..lemme know and I'll make adjustments... If not, I'll answer for what I'm working on - though, I can be ulcerative at times :P )


This basically applies to anything that is 'stacked' on the cursor.


There are two item packet types that we generally use for this - ItemPacketTrade and ItemPacketSummonItem.

'Trade' is used whenever you want to move an existing item between visible slots (i.e., equipment, inventory, bank, etc...)

'SummonItem' is used explicitly for pushing items onto the cursor stack.


If the cursor is empty, you can use 'Trade' to put an item on the cursor. If it is not, then 'Trade' will perform a swap of slots.
(MoveItem consists of a 'To' and a 'From' slot.)

Regardless of whether the cursor is occupied, an item sent using 'SummonItem' will go to the cursor buffer, or 'Limbo.'

Once the cursor is emptied of the visible item, a MoveItem packet will be sent to the server with To=<cursor_slot> and from=<cursor_slot>.

This let's the server know to 'advance' the next limbo item to the visible cursor.


The problem is two-fold...

First, our server code doesn't properly handle 'Limbo.' We assume that if the cursor is empty, we can automatically put something on it.
That doesn't work 100% and leads to desync's between the server and client. (Not exploitable, but can cause unwitted item deletes.)

Second, and the main hold-up, RoF has switched from a mapped linear range inventory model to an array-based one.


Everything in RoF now has to be fully and properly addressed based on location. Our code does not assign position data to the cursor
buffer..it resides in a queue.

At this time, there is no mechanism in place for passing information that doesn't exist. I've had some ideas..but, they will take a lot more
thought than I've put into them.

My current phase of the project is to re-enumerate the Possessions slot range (equipment, general and cursor.) This will put
the 'Power Source' in its proper place, as well as add the two additional RoF general slots.


Since this is having to be done in phases, instead of one big push, I might be able to revisit the cursor issue before moving on
to the next phase.

gibroni
08-15-2014, 07:12 PM
Thanks for the info, and yes was meant for you. Darn auto-spell correct