nickgammon / mushclient Goto Github PK
View Code? Open in Web Editor NEWOpen Source Windows MUD game client
Home Page: www.mushclient.com
Open Source Windows MUD game client
Home Page: www.mushclient.com
MUSHClient sends IAC WILL CHARSET and expects the MUD to start the IAC SB CHARSET subnegotiation. But according to RFC 2066 (https://tools.ietf.org/html/rfc2066) about the IAC SB CHARSET REQUEST message:
This message initiates a new CHARSET subnegotiation. It can only be sent by a side that has received a DO CHARSET message and sent a WILL CHARSET message (in either order).
So either MUSHClient should send a IAC DO CHARSET and wait for the server to send the SB or send the IAC WILL CHARSET and start itself the SB.
Best Regards,
Alex
When using a script file instead of a plugin and you're telling MUSHclient via the world configuration how the script callbacks are called, it does seem to have trouble finding those events.
I can confirm that script callbacks World Opened, World Disconnected and World Closed do work fine, but world gets focus and world loses focus don't.
In fact, I simply create two functions like this:
Focused = true
function OnWorldGetFocus()
Focused = true
end
function OnWorldLoseFocus()
Focused = false
end
Then I go to Scripting and tell him that OnWorldGetFocus is the event handler for getting the focus and OnWorldLoseFocus is the event handler for losing it.
When starting MUSHclient for the next time (after saving the world configuration), I get the following errors:
Cannot find the function 'OnWorldLoseFocus' - item
'OnWorldLoseFocus' is nil
Cannot find the function 'OnWorldGetFocus' - item
'OnWorldGetFocus' is nil
Its just like its trying to call OnWorldGetFocus and OnWorldLoseFocus before the actual script is even loaded.
Can you check and fix this please?
I've just done a fresh conversion of MUSHclient.sln in Visual Studio Community 2015 (free), and it's complaining about missing files:
zlib/minigzip.c
scripting/lpeg.c
pcre/pcre_info.c
pcre/pcre_try_flipped.c
not sure if this is the right place for this, but wanted to reach out.
the forum website seems to be down
http://www.gammon.com/ seems to redirect to something german I think is for perfume.
the other websites seem to no longer respond (http://www.gammon.com.au/ and http://www.mushclient.com/)
Will the support documentation be migrated here?
I've been running a comparison of MUD clients that implement the MMCP chat protocol (as part of adding it to Mudlet).
One oddity that caught my eye was a difference in the meaning of the 'F' character. According to the MudMaster documentation, 'F' means something about a Firewall (maybe the detected incoming connection is on a different IP address to the one it advertises) whereas 'T' is used to show that this client instance will accept file transfers from that peer:
However, I noted that MUSHClient uses 'F' to indicate file transfers will be accepted instead of the 'T' that MM uses - is this intentional or accidental?
BTW Is there a method to set the IP address that MUSHClient advertises when it tries to make a connection to another peer? I could not see a way to set this but it'll be needed if it is behind a ISP's NATing modem/router and a central server is not being used...
The anticipated result would be that NAWS would send the number of characters that would fit in the client's viewport.
Instead, it is using the value from Output > Output buffer size > Wrap output at column number
even when that option is unchecked. I could appreciate if that were checked to send that value, but when unchecked, it should ideally be sending the above calculated value.
I make a alias like:
if ReSet_mark~=true then
ReSet_mark=true
wait.make(function()
while sleeping==true do
wait.time(0.1)
end
DoCommand("ResetAllTimers")
DoCommand("ReLoadScriptFile")
...
...
If this alias be called by other world in background,but my currently playing game woud be affected.
This is my favourite client, is there ever going to be plans to make ubuntu releases?
To test, I set the column number to 20. When I displayed text, it wrapped the text at 20 characters.
I unchecked the option and the client continued to wrap at 20 characters.
Commit baec90b is breaking fresh installations of Learning_Mapper.lua and derivatives, causing the windows to save without window_flags=2 and if user tries to move them they get auto-positioned top left and stuck there with no way to fix it apart from manually editing the state file and adding the missing window flag (something most users have no idea how to do).
This has probably flown under the radar because either most users have not updated their movewindow.lua from git, or they're updating with existing working installations of Learning_Mapper and derivatives, so the flag is already present in the state file.
I have no idea if this breaks other plugin installations with movewindow.lua dependencies but it's most likely it does.
When tabbing back to an open world, NAWS sends several messages to the mud, some with incorrect values. I have uploaded a video to YouTube demonstrating this.
I start with a clean output, switch to another world, come back to the world with NAWS enabled and you can see that the MUD is receiving several NAWS dimensions (width,height).
I have my game reporting every time it receives NAWS information.
Such as title,the display text one line be broken into two line,so trigger cant be fired.
Hi, Thanks for making mushclient open source!
I'm current working on a chinese lpmud mudlib that outputs UTF-8 output, which is working fine after select UTF-8 , but when I want to type something in UTF-8 , it only send garbagled input.
Also, is there plan to support ANSI positioning codes? like clear screen, set position etc.
Cheers.
Just move that 'T' up there, I want to change it to green.
If you change white and gray, the original white will also turn green.
I hope the next version has this feature, thank you.
This is an enhancement request around the world (MCL) file XML.
I've set up MUSHClient on two computers with different fonts as the global input/output fonts. I have my MCL file in a git repository so I can record and sync changes to the world and its related scripts between my computers.
It works, but every time the MCL file is saved, it updates the world XML input/output font info with the values of the defaults from that computer. This of course doesn't do anything since the "override with default" option is checked, but it does cause constant changes in the repository I have to ignore.
Ideally (for me) when saving a world with the "override with default" option set for one of the fonts, it would either leave the existing font information alone or perhaps just delete it from the XML. Either way would keep the MCL file constant.
print(utils.utf8convert(utils.fromhex("FFFAC9636F6D6D2E6368616E6E656C207B20226368616E223A20226774656C6C222C20226D7367223A2022405928405747726F757040592920405931333337204834783072204669656E646973683A2027686D274077222C2022706C61796572223A20224669656E6469736822207DFFF01B5B303B33376D5B1B5B313B33316D61796C6F722D301B5B303B33376D20546865204772616E642043697479206F662041796C6F72201B5B313B33326D45786974733A4E45535755441B5B303B33376D5D205B1B5B313B33366D57697A693A1B5B313B33356D201B5B313B33366D496E636F673A1B5B313B33356D1B5B303B33376D5D201B5B313B33316D54656C6C733A30201B5B6D1B5B303B33376D1B5B303B33376D0A0D")))
in a debug build of MUSHclient raises
The hex is obviously invalid utf8.
If I write a wait.make code block in the trigger and send to script, sometimes it will be activated again and again. Main process would be deadlocked,I have to end the program by taskmgr.exe. It seems that the trigger is repeatedly activated. So I have to write some code to stop this, like:
if busy_mark~=true then
busy_mark=true
wait.make(
function()
Note("function code")
wait.time(0.1)
busy_mark = nil
end)
end
Most of time it can be prevent the deadlock ,however, it's not possible to completely stop the master process be deadlock because of forgot wrote these code or other reasons.But we can't find out the bug code line in script,because the main process is deadlock too.
Could we make a guard thread to check the lua code be executed too long time?Like IE ,we can choose to stop the script executing.So we can find out the bug code and trigger.
If a trigger's sendto text is simple script sentences,the process is working right.
But if used complex 'WAIT.REGEXP' function in script text and be on KeepEvaluating ,the trigger would be fired endless in looping.
I think here is some bug in CMUSHclientDoc::ProcessPreviousLine , because the WAIT.REGEXP function dynamically created some new triggers,and the SortTriggers function be called , this would be broken .
// main triggers
for (iItem = 0; !bFoundIt && iItem < GetTriggerArray ().GetSize (); iItem++)
void CMUSHclientDoc::SortTriggers (void)
{
int iCount = GetTriggerMap ().GetCount ();
int i;
CString strTriggerName;
CTrigger * pTrigger;
POSITION pos;
GetTriggerArray ().SetSize (iCount);
GetTriggerRevMap ().clear ();
// extract pointers into a simple array
for (i = 0, pos = GetTriggerMap ().GetStartPosition(); pos; i++)
{
GetTriggerMap ().GetNextAssoc (pos, strTriggerName, pTrigger);
GetTriggerArray ().SetAt (i, pTrigger);
GetTriggerRevMap () [pTrigger] = strTriggerName;
}
// sort the array
qsort (GetTriggerArray ().GetData (),
iCount,
sizeof (CTrigger *),
CompareTrigger);
} // end of CMUSHclientDoc::SortTriggers
Maybe the iItem++ point to same trigger repeatly?
I am not sure how portable Mushclient is but it would be nice to have an arm32 and arm64 version as well as x86 now that ARM based Windows tablets/laptops are available. It would also make it possible to run on Android and other devices like the Raspberry Pi since wine doesn't do CPU emulation (but works just fine with win32/arm software) and Hangover appears dead.
Honestly not sure if this has been mentioned before but you should switch to luajit. It's much faster than normal Lua and can be used as a drop in replacement to the Lua API-- no code changes needed. Main reason I want this is to be able to use ffi; I'm sure many others would agree
I code/develop for a different MUD Client which is also a GUI one and I was looking to include support for the 10
- 19
SGR ("Set Graphics Rendition") codes (<ESC>
+ [
... m
, primary + up to 9 Alternate ones).
However there does not appear to be an obvious way to specify what those fonts are. I was considering an <OSC>
"Operating System Command" (<ESC>
+ ]
... <ESC>
+ \
, where the last two bytes are the "String Terminator") approach but I was wondering whether any other clients - such as yours already support those <SGR>
sequences and have a means for the Game Server to specify what they are/mean? If not - is it something that you'd want to consider and collaborate on?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.