Things that need fixing in the Engine

Started by Vitoc, Jan 31, 2006, 08:44 PM

Previous topic - Next topic

The Crazy Animal

I'm not sure if it was crashing but earlier I kept getting knocked off and was getting really bad lag.

proteus

Add another one to the list, I don't remember seeing this anywhere before.


Monsters aren't healing.

ZLemur

Quote from: DeathCow
Yes clearly I'm making a text porn.  Lesuire Suit Mud.

Vitoc

Quote from: proteus on Feb 07, 2006, 05:39 PM
Training stats appears to be completely broken.
This has been fixed now.


Vitoc

#79
Quote from: interchange on Feb 07, 2006, 02:11 PM
I'm sure I can figure out their custom word wrapping so it works with megamud.

I'm 99% positive they're using cursor control to do a word wrap rather than sending a line feed character.

If you could dump the ascii characters to a file and open it up with a hex editor, you'll see the ASCII character codes.

I'm guessing it would be something like <ESC>[{ROW};0f to wrap to the next line.

You can also turn on line wrap <ESC>[7h ... but I'm not sure how exactly that works (wraps by words or wraps by character?).

Does it automatically detect settings for a different screen width, e.g. 100 columns?? I don't think there's a query for that.? You can query cursor position, so maybe there's a way to autodetect it.

Ok, here's a cap of what I'm seeing:
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Broadcast from Vitoc " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
[HP=54/MA=32]:[HP=54/MA=32]:

Here's a cap of every byte received (the byte value is in parentheses, the actual character precedes it):
-(45) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)
(13)
(10)(27)[(91)0(48);(59)3(51)7(55);(59)4(52)0(48)m(109)(27)[(91)7(55)9(57)D(68)(27)[(91)K(75)(27)[(91)1(49);(59)3(51)3(51)m(109)B(66)r(114)o(111)a(97)d(100)c(99)a(97)s(115)t(116) (32)f(102)r(114)o(111)m(109) (32)V(86)i(105)t(116)o(111)c(99) (32)"(34) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97) (32)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)a(97)"(34)
(13)
(10)(27)[(91)7(55)9(57)D(68)(27)[(91)K(75)(27)[(91)0(48);(59)3(51)6(54)m(109)[(91)H(72)P(80)=(61)(27)[(91)1(49);(59)3(51)6(54)m(109)5(53)4(52)(27)[(91)0(48);(59)3(51)6(54)m(109)/(47)M(77)A(65)=(61)(27)[(91)1(49);(59)3(51)6(54)m(109)3(51)2(50)(27)[(91)0(48);(59)3(51)6(54)m(109)](93):(58)(27)[(91)7(55)9(57)D(68)(27)[(91)K(75)(27)[(91)0(48);(59)3(51)6(54)m(109)[(91)H(72)P(80)=(61)(27)[(91)1(49);(59)3(51)6(54)m(109)5(53)4(52)(27)[(91)0(48);(59)3(51)6(54)m(109)/(47)M(77)A(65)=(61)(27)[(91)1(49);(59)3(51)6(54)m(109)3(51)2(50)(27)[(91)0(48);(59)3(51)6(54)m(109)](93):(58)

I'm not seeing any ansi codes that move the cursor for word wrap in that lengthy broadcast.

Here's a listing of the initial handshaking:
?(255)?(251)(3)?(255)?(251)(1)?(255)?(251)A(65)u(117)t(116)o(111)-(45)s(115)e(101)n(110)s(115)i(105)n(110)g(103).(46).(46).(46)
(13)
(10)(1)(1)(1)(1)(1)(1)(1)(1)(1)(8)(8)(8)(8)(8)(8)(8)(8)(8)?(255)?(251)(3)?(255)?(252)(27)[(91)0(48)m(109)

Oh yeah, and yes, there is a way for the server to request the client's screen size in characters.


DeathCow

I could try to summon some more coder type peoples if you need more assistance..this one over my head.

The Crazy Animal

Heres a good one whats the handshake look like when connecting to worldgroups. I'm just curious how different it looks, It might yeild some answers.

Vitoc

Quote from: The Crazy Animal on Feb 08, 2006, 08:45 AM
Heres a good one whats the handshake look like when connecting to worldgroups. I'm just curious how different it looks, It might yeild some answers.
Here's a listing of the initial handshaking:
?(255)?(251)(3)?(255)?(251)(1)?(255)?(251)A(65)u(117)t(116)o(111)-(45)s(115)e(101)n(110)s(115)i(105)n(110)g(103).(46).(46).(46)
(13)
(10)(1)(1)(1)(1)(1)(1)(1)(1)(1)(8)(8)(8)(8)(8)(8)(8)(8)(8)?(255)?(251)(3)?(255)?(252)(27)[(91)0(48)m(109)

That was from wg.


The Crazy Animal

Ok this might go past just the handshake. What standard did you code your terminal to emulate? I know that WG used ANSI, RIP and supported VT100/ANSI as well as straight ACCII mode.

I'm fairly sure that megamud uses VT100/ANSI because If I remember correctly it never shows ANSI art correctly which is commonly based on ANSI.sys emulation for MS-DOS. However, If you ever logged in to a WG system with procomm you'll remember that the ANSI art worked correctly.. This is because they are two different ANSI standards.

Now from what I understand line wrap is partialy handled by the client side and partialy handled by the host side. On the client side: Auto Wrap is done when a character extends past the max col set by the client program. On the host side: forced wrap is done by forcing a return, newline character, or by specifing the screen size. So the problem might really be not having the correct cursor control for megamud to understand whats going on.

Even though I understand a fair bit of this I'm unfortunatly not a programmer so I can't tell you how to fix it but I did some reasearch this morning to give you some more material to work with.

The other thing you might try is to build a decect terminal type in then you could have the core engine serve out the proper Ansi control codes.

VT100/ANSI terminal Control: - This is from the DEC terminal Family
http://www.graphcomp.com/info/specs/ansi_col.html
http://gershwin.ens.fr/vdaniel/Doc-Locale/Outils-Gnu-Linux/Kde/konsole/techref.html

ANSI Terminal Control, AKA - ANSI-BBS
http://enterprise.aacc.cc.md.us/~rhs/ansi.html
http://www.delmar.edu/Courses/CIS415L/ANSIsys.htm
http://bbs.ee.ntu.edu.tw/boards/Programming/17/13.html
http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/

Host Command Summary:
http://www.wyse.com/products/winterm/quickstart/TermEm/wcn17ac.htm

General Terminal Info:
http://www.cs.utk.edu/~shuford/terminal/

You might be able to try posting to these news groups to get an answer:
comp.terminals
alt.folklore.computers

You could also look for ANSI x3.64 terminal emulation controls "ISO 6429??" which ANSI.SYS is based on.

Hope some of this might help.

TCA

DeathCow

 
  Here's the "That was from wg." post telnet-ized--

?(255)     IAC
?(251)     WILL
(3)     #3     SUPPRESS-GO-AHEAD
?(255)     IAC
?(251)     WILL
(1)     #1     ECHO
?(255)     IAC
?(251)     WILL
A(65)u(117)t(116)o(111)-(45)s(115)e(101)n(110)s(115)i(105)n(110)g(103).(46).(46).(46)(13)(10)
(1)(1)(1)(1)(1)(1)(1)(1)(1) (8) (8) (8) (8) (8) (8) (8) (8) (8)
?(255)     IAC
?(251)     WILL
(3)     #3
?(255)     IAC
?(252)     WON'T
(27)[(91)0(48)m(109)
 


Is that there's an instance where there's an "IAC" "WILL" followed by no option code
And another instance at the bottom that has "IAC" "WON'T" and no option code

I'm just posting this so i dont lose it, or forget about it after my night of drinking..I got a little more work i need to do..

Vitoc

Quote from: DeathCow on Feb 08, 2006, 08:08 PM

? Here's the "That was from wg." post telnet-ized--

?(255)? ? ?IAC
?(251)? ? ?WILL
(3)? ? ?#3? ? ?SUPPRESS-GO-AHEAD
?(255)? ? ?IAC
?(251)? ? ?WILL
(1)? ? ?#1? ? ?ECHO
?(255)? ? ?IAC
?(251)? ? ?WILL
A(65)u(117)t(116)o(111)-(45)s(115)e(101)n(110)s(115)i(105)n(110)g(103).(46).(46).(46)(13)(10)
(1)(1)(1)(1)(1)(1)(1)(1)(1) (8) (8) (8) (8) (8) (8) (8) (8) (8)
?(255)? ? ?IAC
?(251)? ? ?WILL
(3)? ? ?#3
?(255)? ? ?IAC
?(252)? ? ?WON'T
(27)[(91)0(48)m(109)
?


Is that there's an instance where there's an "IAC" "WILL" followed by no option code
And another instance at the bottom that has "IAC" "WON'T" and no option code

I'm just posting this so i dont lose it, or forget about it after my night of drinking..I got a little more work i need to do..

FWIW the very first thing I do when someone connects to the server is send will SGA and will ECHO.


The Crazy Animal

#86
Translation:
IAC, WILL, 3
IAC, WILL, 1
IAC, WILL, Send: "Auto-sensing..., CR LF, (9x) SOH, (9x) BS"
IAC, WILL, 3
IAC, WONT, ESC[0m

IAC, WILL, 3 Means:
The sender of this command requests permission to begin suppressing transmission of the TELNET GO AHEAD (GA) character when transmitting data characters, or the sender of this command confirms it will now begin suppressing transmission of GAs with transmitted data characters.

IAC, WILL, 1 Means:
The sender of this command REQUESTS to begin, or confirms that it will now begin, echoing data characters it receives over the TELNET connection back to the sender of the data characters.


NOTES:
IAC - Interpret as command
WILL - Starting preformance or now preforming
WONT - Denial of
3 - SUPPRESS-GO-AHEAD
1 - ECHO = Return Sent Characters to Sender
(13)(10) = CR LF Sequence - new line function
SOH - Start of Heading
BS - Backspace

Now the thing I find interesting is that I stil don't see any negotiates for screen size or terminal type...

More Usefull Stuff:
Ancii table codes 0 thru 127: http://www.lookuptables.com/
RFC Index: http://www.process.com/techsupport/pmdf/rfc/rfc-index.html
Telnet protocol: http://www.scit.wlv.ac.uk/~jphb/comms/telnet.html



DeathCow

you guys only captured what WG sent, not what mega sent back.

DeathCow

mmud lets the client handle all of the word wrap..

The Crazy Animal

Forgot to define a line: ESC[0m = Reset all previous text attributes

So what did mega send back?

What I'd expect to see is something like a set video mode in the start atleast, however; it is possible that WG & Megamud just assumes these standards or ignores the non-supported fuctions.

More ANSI sequences
http://www.robvanderwoude.com/index.html