PDA

View Full Version : Forcing room display in Stormfront



Taernath
04-13-2015, 11:19 AM
My room window is sometimes not displayed in high traffic/population areas. Is there a way to force it to display? I looked through the options but didn't see it.

Donquix
04-13-2015, 02:14 PM
no, that stream of data is auto-disabled once the room hits critical mass.

You could work around it, but would need to script it with lich i believe and probably send it to the familiar window.

Deathravin
04-13-2015, 03:11 PM
It wouldn't have to be sent to the familiar window, it could have its own or even just see that the room window is disabled and fix it. But Lich uses that window for its updates too, so even if you made a lich version that supplemented the room window with a readout of its own data, it wouldn't be perfectly reliable.

For example - If you had a Lich script that supplemented the room window without the room data coming in, if somebody hid... If somebody hides with the room window active, you will see them disappear from the room window eventually. But if they hide and the room xml data isn't received, lich won't know they hid until you 'look'... But a lot of other data could be supplemented.

HOWEVER again... Lich doesn't currently watch for every single action. It assumes that the room xml will contain the data.

So I don't believe if you see "Soandso sit's down" - that Lich will change the GameObj data for Soandso to show them as seated. It's only when the room XML is sent and it receives that 'Soandso (sitting)' that it will update... So you'd have to add those things to your script. But it certainly is do-able, I personally just don't see a huge return on time spent to make it.

Donquix
04-13-2015, 04:10 PM
It wouldn't have to be sent to the familiar window, it could have its own or even just see that the room window is disabled and fix it. But Lich uses that window for its updates too, so even if you made a lich version that supplemented the room window with a readout of its own data, it wouldn't be perfectly reliable.

For example - If you had a Lich script that supplemented the room window without the room data coming in, if somebody hid... If somebody hides with the room window active, you will see them disappear from the room window eventually. But if they hide and the room xml data isn't received, lich won't know they hid until you 'look'... But a lot of other data could be supplemented.

HOWEVER again... Lich doesn't currently watch for every single action. It assumes that the room xml will contain the data.

So I don't believe if you see "Soandso sit's down" - that Lich will change the GameObj data for Soandso to show them as seated. It's only when the room XML is sent and it receives that 'Soandso (sitting)' that it will update... So you'd have to add those things to your script. But it certainly is do-able, I personally just don't see a huge return on time spent to make it.

the problem with sending to the room window is then you're competing with that window when you move and the actual XML returns. The room stream would win out I would expect but still, fighting with the actual stream is weird. i suppose you could also figure out what the actual number of people needed is to disable to room stream, i think it's around 75, and only send updates from the lich script if GameObj.pcs.length >= that number

Deathravin
04-13-2015, 05:11 PM
I imagine that the xml sent to the room window specifically states "room window disabled, yada yada yada" - any time the room window xml data == that, it starts watching and updating the window itself. And any time that xml is received, it could be blocked from hitting the room window or forcing a refresh directly after its refresh.

Celephais
04-13-2015, 06:13 PM
This is what you get when you enter a room with the room window disabled.


<dialogData id='combat'><dropDownBox id='dDBTarget' value="none" cmd="target %dDBTarget%" tooltip='Select Target' content_text="none,mountain spirit" content_value="target help,#51145899" anchor_left='cmdTarget' anchor_right='cmdAttack' height='20' width='80' top='93' left='0' align='n'/></dialogData>
<streamWindow id='main' title='Story' subtitle=" - Town Square Central" location='center' target='drop'/>
<streamWindow id='room' title='Room' subtitle=" - Town Square Central" location='center' target='drop' ifClosed='' resident='true'/>
<clearStream id='room'/>
<pushStream id='room'/>
<clearStream id='room'/>
<pushStream id='room'/><compDef id='room desc'>[Room window disabled at this location.]</compDef><popStream id='room'/>
<popStream id='room'/>
<component id='room players'>Also here: REDACTED I guess.. </component>
<resource picture="0"/>
<nav/>
<style id="roomName" />[Town Square Central]
<style id=""/>
<style id="roomDesc"/>
<style id=""/>You notice a <a exist="51616892" noun="acorn">large acorn</a>, <a exist="-49715" noun="benches">some stone benches</a> with some stuff on it, an <a exist="32285" noun="bin">herbal remedy donation bin</a> and a <a exist="32283" noun="wagon">huge imperial wagon</a> with a <a exist="32284" noun="pylon">glowing blue-white pylon</a> on it.
Also here: REDACTED for some reason
Obvious paths: <a exist="-10579526" coord="2524,1864" noun="northeast">northeast</a>, <a exist="-10579526" coord="2524,1864" noun="east">east</a>, <a exist="-10579526" coord="2524,1864" noun="southeast">southeast</a>, <a exist="-10579526" coord="2524,1864" noun="southwest">southwest</a>, <a exist="-10579526" coord="2524,1864" noun="west">west</a>, <a exist="-10579526" coord="2524,1864" noun="northwest">northwest</a>
<compass><dir value="ne"/><dir value="e"/><dir value="se"/><dir value="sw"/><dir value="w"/><dir value="nw"/></compass><prompt time="1428888467">&gt;</prompt>


It's perfectly possible to overload the room window with your own values, and you could even have your script at set intervals perform a look, and squelch it out to make sure it was still in sync. As for it constantly pushing "Room window disabled" ... you do realize it defeats the purpose of disabling it, it's not constantly pushed. The "room players" is actually updated all the time, so that can be kept accurate, and the combat targets dropdown gets updated as targets move out of the room.

The question is of course hiding in these rooms, I don't have a good way to search my logs for that, and I'm not really in the mood to test it. Something tells me they would update this though, and if you're in a room with the window disabled this is all you care about really (maybe during an invasion if a room is disabled you'd like some better info on what's going on).

Celephais
04-13-2015, 06:37 PM
I'm really going to regret saying this when they fix it... I don't use Lich so I don't know the specifics of how you'll implement this, but

Create a replacement regex (Lich lets you just do that right? replace stuff in the incoming stream?), replace:

<pushStream id='room'/><compDef id='room desc'>[Room window disabled at this location.]</compDef><popStream id='room'/>

With:

<pushStream id='room'/><compDef id='room desc'>[Room window disabled at this location.]</compDef><compDef id='room objs'></compDef>
<compDef id='room players'></compDef>
<compDef id='room exits'></compDef><popStream id='room'/>

(You'll want the line breaks where I have them)

What is happening is Gemstone sends a "Hey, you know that room window, clear it out, lets start fresh" and then they give you a new definition of what the room window is, and that definition has one component, a description, and the description is the bracketed text. The thing is that the game continues to say "Update the room players component to such and such" but stormfront no longer has a room players component, because it cleared the room window. Whoever implemented disabling room updates did a really poor job, because, the whole point of sending less information, well they still send a decent amount of that information, if it has somewhere to go (you put the components back in) it'll show up.

I don't think you'll see room exits updating, and I have no idea about room objs from the small portion of my log I looked at, but room players absolutely gets updated.

Celephais
04-13-2015, 08:19 PM
http://i.imgur.com/FS3mE5I.png

That worked. You have to either send a look right after, or just wait til things change, but it updates.

People entering and leaving, stuff on the ground, etc ...

So however you do it in Lich, just send that block to redefine the components of the window and suddenly your room window works. All this time they have disabled room windows and didn't actually reduce the amount of data they send you.