bozimmerman / coffeemud Goto Github PK
View Code? Open in Web Editor NEWFull featured, mature MUD supporting MSP, MXP, OLC, with a web server, mail server, and MORE!
License: Apache License 2.0
Full featured, mature MUD supporting MSP, MXP, OLC, with a web server, mail server, and MORE!
License: Apache License 2.0
Text:
Actual: CREATE
Depending on the argument, this command can bring almost anything into existence, from rooms to doors, from monsters to items. The create command is discussed at length in the sections on building rooms and areas. It is also featured prominantly in theGame Builders Guide.
Expected:
CREATE
Depending on the argument, this command can bring almost anything into existence, from rooms to doors, from monsters to items. The create command is discussed at length in the sections on building rooms and areas. It is also featured prominently in the Game Builders Guide.
Errors:
prominantly > prominently
missing space before game builders guide
link
For some reason I can only connect to my mud through localhost. I can't even connect through the local network. It is the same for telnet as well as both web servers.
Result:
tags are sent to Siplet text input box
Note: appears to occur on any MXP-enabled value, not just score>wis. EG Doors, goto, score...
When you use the modify government command in game to edit a clan government. The list of powers that are voted on is cleared.
`General Skills:
[Lvl] Name Requires [Lvl] Name Requires
[1 ] Bandaging 1 train [1 ] Swim 1 train
[2 ] Armor Tweaking 1 train [2 ] Kick 1 train
[3 ] Two Weapon Fighting 1 train [4 ] Weapon Sharpening 1 train
[4 ] Shield Bash 1 train [5 ] Cleave 1 train
Common Skills:
[Lvl] Name Requires [Lvl] Name Requires
[1 ] Gem Digging 1 train [1 ] Drilling 1 train
[1 ] Fishing 1 train [1 ] Floristry 1 train
[1 ] Foraging 1 train [1 ] Herbology 1 train
[1 ] Hunting 1 train [1 ] Play Instrument 1 train
[1 ] Shearing 1 train [1 ] Smoke Rings 1 train
[2 ] Butchering 1 train [2 ] Cooking 1 train
[2 ] Dyeing 1 train [2 ] Embroidering 1 train
[2 ] Engraving 1 train [2 ] Lacquering 1 train
[3 ] Blacksmithing 1 train [3 ] Carpentry 1 train
[3 ] Leather Working 1 train [3 ] Tailoring 1 train
[4 ] Costuming 1 train [4 ] Distilling 1 train
[4 ] Mining 1 train [4 ] Pottery 1 train
[4 ] Sculpting 1 train [4 ] Searching 1 train
[4 ] Tanning 1 train [4 ] Weaving 1 train
[5 ] Armorsmithing 1 train [5 ] Baking 1 train
[5 ] Cobbling 1 train [5 ] Fletching 1 train
[5 ] Food Prep 1 train [5 ] Glass Blowing 1 train
[5 ] Painting 1 train [5 ] Paper Making 1 train
[5 ] Scrimshawing 1 train [5 ] Weaponsmithing 1 train
Languages:
[Lvl] Name Requires [Lvl] Name Requires
[1 ] Draconic 3 practices [1 ] Drowish 3 practices
[1 ] Dwarven 3 practices [1 ] Elvish 3 practices
[1 ] Fey 3 practices [1 ] Gigantic 3 practices
[1 ] Gnomish 3 practices [1 ] Goblinese 3 practices
[1 ] Ignan 3 practices [1 ] Orcish 3 practices
[1 ] Sign Language 3 practices [1 ] Undercommon 3 practices
Character Classes:
[Lvl] Name Requires [Lvl] Name Requires
[1 ] Barbarian 1 train [1 ] Paladin 1 train
[1 ] Ranger 1 train
Expertises:
Name Requires Name Requires
Quick Working I 1 train Combat Fluidity I 1 train
Reduced Conjuring I 1 train
`
Here is my first wave of suggestions for clans
1)Allow members to be assigned to multiple positions and add clanunassign
command.
2)Make the clanqual
command use its own power and respect voting. Give that power to all positions that can already do it.
3)Change clanwho
from power CLAN_BENEFITS to power LIST_MEMBERS.
4)Add SET_MORGUE power for clanmorgue
command instead of SET_HOME.
5)Add a clanprobation
command to block a clan member from using the clan's channel or journal untell it expires or is removed. Add a power for it and make it only work on those with a lower rank than you.
6)Allow members with ORDER_CONQUERED to be above the law in conquered areas if that is not already the case.
7)Add LAW power for changing the law in conquered areas instead of ORDER_CONQUERED.
8)Add clan dues that can be set by leaders as a money tax taken from each member into the clan bank. Add commands to set the dues, view your dues, see who owes, and forgive dues. Add powers for setting, viewing the owed list, forgiving, and being exempt. List, forgive, and exempt could probably be the same power. (SET_DUES and FORGIVE_DUES perhaps?)
9)Add clansumon and clanteleport skills usable by enchanters to teleport to and summon clan members.
Feel free to tackle these in any order. Constructive feedback is always appreciated. Thank you.
I would like to be able to limit skill use by location, for example mining - it makes no sense, nor would it be appropriate to mine for ore in the sky, or in the middle of a building. I would like to be able to disable skills - the closest thing I have been able to find is ResourceOverride for a behaviour which can only be applied to locations and not areas.
Please consider changing "E)mail change" to "C)hange email"
Email change -> reminiscent of sending myself a copy of the results of my account changes (adding character, changing pw, changing email - as a result of "write down your new account name and password")
Change email -> change the registered email on my account
This screenshot also says email is supported - at the time of writing SMTP had been disabled in coffeemud.ini so it's a little unexpected
I want to create more dynamic conversations with the NPCs in my MUD, but currently the system is sort of limited. You need to use the dialogue file and reload the mud each time you want to update it.
I'd like to have complex conversations with multiple keywords, which I could dynamically adjust as time goes on. It seems that the quest engine may be the best way to do this, but in general that is a lot more work then it should be.
Is there chance of having a more stream lined / complex / easier to use dialogue engine being introduced?
Currently, telnet is one of the access options for communicating with the server. Telnet is inherently insecure as all the data is transmitted in plain text.
One possible solution to this issue would be to add support for SSHD, server side, through the use of third party projects such as Apache Mina/SSHD. This would provide not only encrypted communications over a widely accepted, firmly entrenched standard, but it would also provide an interesting layer of security for users - such as the ability to use a shared key for logins as opposed to a password.
Line 306 is missing a semicolon,
Currently reads:
ALTER TABLE CMBKLG
ADD PRIMARY KEY (CMNAME,CMINDX) -- semicolon to terminate the line
This means that alter table on CMBKLG doesn't work, and the CREATE TABLE for CMCLIT also fails, as postgres doesn't see the end of the commit.
Adding a semicolon to the end of line 306 fixes the problem.
ALTER TABLE CMBKLG
ADD PRIMARY KEY (CMNAME,CMINDX) ; -- semicolon terminating the line.;
If you run through the initial setup script InstallUnix.sh, you're not asked for the most holy of information.
I assumed passwords are hashed by default. However; poking at the fakedb containing player data shows this is not so. Converting the password fields from text to hashed still leaves plaintext in place after conversion. In my mind, this is more important than requiring a name for the server. A randomly generated server ID of Coffeemud_bluecircleflyinghorse44 could be used as a placeholder until the owner gets their rhythm going.
There's a small chance the plaintext is left in place even after converting from player-file logins to account-menu logins. I've forgotten much of the terminology, so if its not clear just say so and I'll try harder.
If user has more than one character, picture uploads to the first character despite selected player.
(i will try to help with some of these issues i post, they are mostly cosmetic anyway)
chitch
I just did a pull from the repo and when a new user tries and create a account it just hangs for them and spits out a warning on the sever console. Any ideas or do I need to provide more info?
Hi there, i've trying to install the mud to run it and to build my own server. I've modified the path in mud.bat and make.bat to point to Java app on windows and when i execute the mud.bat, nothing happens
There may be others. Restarting server loads the variable correctly.
If BOTH MXP and MSP are enabled in a session the URL passed to the PlaySound function in termsupport.js is stripping out the forward slashes (apart from the last one) i.e. instead of http://mydomain:27744/sounds/ the url is http:mydomain:27744sounds/
So a fetch of "clap.wav" becomes http:mydomain:27744sounds/clap.wav which returns a 404 ( because the prefix is obviously malformed) and the sound is not played.
IF ONLY MSP is enabled and MXP is NOT enabled the URL passed to the PlaySound is correct (forward slashes are not stripped)
and the sound is played i.e. http//:mydomain:27744/sounds/clap.wav
I have verified issue with server and client running on same computer and on separate computers. I have tried replacing mydomain by ip address. I have tried with the 5.10.0.2 and also latest commit from github - all have same issue.
I could not quite debug exactly where the problem was else I would have offered a solution not just a problem !
DOMAIN=mydomain
SOUNDPATH=http://mydomain:27744/sounds/
MXPIMAGEPATH=http://mydomain:27744/images/mxp
Server: Coffemud 5.10.0.2, Windows 10, JDK 1.6.0_45, MySQL (community) 5.7.39
Client: Chrome 108.0.5359.72 (64 bit) Windows 10
Thanks a lot for this amazing MUD server, the amount of work you put in it is mind-boggling.
I'm trying to have some mobs, like arch villains players should really have to slay only once and for all, stay dead when they die. Setting their rejuv to 0 helps but when I take the server down for maintenance and restart it, these mobs reinsert.
Is it possible to make their death permanent?
If not I was thinking of using scripting to send them to a limbo room when they die but I'm afraid they will reinsert at their original spawn point on server restart.
Any suggestion welcome ๐
Hy,
I found a stored cross site scripting vulnerability in the forum. One can simply drop javascript code as a comment. On quoting the message the code gets executed. The proof of concept can be found on http://www.coffeemud.net/forum.cmvp in general discussion in the discussion named "test".
A simple fix would be to filter user input before storing using specialized filter functions.
Best regards
OK I've been going back and forth on whether to do an issue for this, but given that my cert seems to work under other servers, I feel like this is at least a documentation issue.
So what kind of format exactly does the keystore need to be in? I tried a million different ways to set it up right... I cat'd the private key to the chain bundle, openssld it to x509, created a jks keystore with the key... The guy at the SSL support said for java it should be in a jks keystore, but not as x509, as pfx. I tried doing it with the fullchain pem, I tried so many things..... There are so many conflicting instructions out there....
What are the ACTUAL, step-by-step instructions to follow, to get the bloody SSL cert working under this thing? Or at least a detailed explanation of a final format that will WORK? Please?
I read something about DER not working with SSLv3, so I tried new private keys that were RSA, and I tried changing the context call from SSLv3 to a couple other things.... I've been at this for almost a week now, and I don't feel like I can start the bloody thing without SSL because I don't want it to be hacked the minute it goes up.
I guess I can do a whole PHP thing for the macros/DL support, or else rip it from the codebase, but now I'm starting to be more a web developer than a mud developer. :/
Result: Nothing appears to occur. It takes a few moments for the realisation you need to fill the text field occurs. Dummy text would be highly useful - eg "Dummy Holiday".
Fakedb does not handle UTF-8 correctly. Switching to a different database gets around the issue.
Siplet assumes iso-8859-1 input.
Grinder does not support UTF-8 well. UTF-8 text is not displayed correctly.
Result:
Level :126 (Next at 2.000439E9xp)
Note:
If there is an upper limit to how much exp a clan can earn, it isn't visible in grinder or via command clantax
. If the clan somehow gets more exp while needing an amount like 2.000439E9xp (eg via grinder), the clan may level back down to level 1. If a player has HP benefit from the clan and is already hurt low enough, its theoretically possible to kill that player just from this clan de-level.
I know we have the ability to allow players to have ownership over areas. But what if we allowed players to have ownership over outdoor areas...
...And allow them to create their own kingdoms?
This stems from a very old BASIC computer game called Hamurabi.
https://en.wikipedia.org/wiki/Hamurabi
It was a very simple management program based on population, land area, crop yield and managing grain distribution.
I'm just thinking say once a game month have player's kingdom updated with changes, births and deaths, crop yield, etc. Nothing like an actual kingdom, just a numbers management section of the game.
Hi there,
I've been trying to create a GenMap for a small area, but after the map is created, trying to read it creates an "Oops!" response. I copied the output on the log for your opinion on the matter:
java.lang.NullPointerException
at com.planet_ink.coffee_mud.Items.Basic.StdMap.executeMsg(StdMap.java:588)
at com.planet_ink.coffee_mud.Locales.StdRoom$1.apply(StdRoom.java:874)
at com.planet_ink.coffee_mud.Locales.StdRoom$1.apply(StdRoom.java:870)
at com.planet_ink.coffee_mud.Locales.StdRoom.eachItem(StdRoom.java:2175)
at com.planet_ink.coffee_mud.Locales.StdRoom.executeMsg(StdRoom.java:870)
at com.planet_ink.coffee_mud.Locales.StdRoom.reallyReallySend(StdRoom.java:1546)
at com.planet_ink.coffee_mud.Locales.StdRoom.reallySend(StdRoom.java:1552)
at com.planet_ink.coffee_mud.Locales.StdRoom.send(StdRoom.java:1581)
at com.planet_ink.coffee_mud.Commands.Read.read(Read.java:69)
at com.planet_ink.coffee_mud.Commands.Read.execute(Read.java:106)
at com.planet_ink.coffee_mud.MOBS.StdMOB.doCommand(StdMOB.java:1968)
at com.planet_ink.coffee_mud.MOBS.StdMOB.dequeCommand(StdMOB.java:1893)
at com.planet_ink.coffee_mud.MOBS.StdMOB.enqueCommand(StdMOB.java:2082)
at com.planet_ink.coffee_mud.Common.DefaultSession.mainLoop(DefaultSession.java:2518)
at com.planet_ink.coffee_mud.Common.DefaultSession.run(DefaultSession.java:2236)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thank you so much for your time!
Regards,
XM
Haven't upgraded for a while so decided to move my working install aside and start fresh. Mud built (though with complaints about the mozilla js packages in the doc building phase) and started up fine, but when I went to telnet in to create my archon, I got the following:
Name: z3ndrag0n
'Z3ndrag0n' is not recognized.
That name is also not available for new players.
(And it didn't seem to matter what name I chose.)
In the end, I hit "*" and it successfully created my initial character, but wondering if there's been a mistake here that most people are missing because upgrades versus fresh installs?
So I know that this has been answered before, but it seems like since the release of CoffeeMUD 5.8 (or was it 5.9?) I have been unable to convert StdAbility's to genAbility's. When I modify, for instance, the ability 'Spell_Planeshift', it claims it's a generic ability. Running:
create ability Spell_Planeshift
I get a blank ability template as if the ability Spell_Planeshift had entirely been forgotten. When I tried it in the MUDGrinder earlier, it told me I had to convert it first. When I did that, it gave me a 500 internal server error, and the ability conversion was aborted. So I'm wondering how I would go about this now? Because it seems that, now, the only things that can be converted into generics are races and classes.
Just curious how recall works. I changed in the coffeemud.ini the new player start, death and morgue, but when i recall it takes me to a 3000 off ID room. Is recall hardcoded in, or is it set in the player file? The default New Area is gone, imported the area.cmare you provided, no i could see an issue if it lies in myplayer having a location that doesn't exist..
Thx,
Joe
This also occurs if Account1 is modifying the mobile/item via in-game MODIFY command
Background:
Son and I were trying to untangle a thing he didn't know - he via grinder, me via telnet. We kept over-writing each other's modifications and getting very confused on why changes weren't sticking.
Note:
Ignore child's lack of knowledge, thats nothing to be concerned about... yet...
Result:
CMVP merely doesnt allow banned user to login or explain banned, siplet simply disconnects the user, password reset presents password as cleartext but does not mention bannination (cleartext password is likely a different issue). The only time a banned account is explicitly told "you're unwelcome" is via telnet workflow.
Re: http://www.coffeemud.net/guides/InstallationGuide.html
The command line for getting the software to run for Unix, Linux, or FreeBSD users is missing a trailing double quote.
java -classpath ".:./lib/js.jar:./lib/jzlib.jar
should actually be:
java -classpath ".:./lib/js.jar:./lib/jzlib.jar"
Drops to a command line without it.
Greets:
Per 'ahelp generate' you are supposed to be able to output a list of all 'id' attributes.
This command actually outputs the error "The STRING id 'LIST' has not been defined in the data file." followed by what I assume is the list.
Do also note that per the changes list -> version 5.8.1 -> 26, there are supposed to be 'themes' such as "town, orcs, trolls, and goblins". Per the 'id' output as well as the 'ahelp generate' output, there is no mention of the use of these 'themes' as part of the command.
Hello!
I have commented out MXP images and sounds. However, actions that would normally play a sound still show text as if it were partially trying to send a sound command.
For example, when I use a roar social, it shows:
ROOOOOAAAARRRR!!!! <SOUND roar.wav V=50 P=34
Laughing results in:
You laugh. <SOUND laugh.wav V=50 P=19
I say partially because it is indeed cut off like that within the game. For reference, I use Mudlet 3.0.0-delta. In MUSHclient, this does not happen. In the console, Mudlet is detected as "UNKNOWN MXP MSDP GMCP CMP ANSI", whereas MUSHclient is detected as "MXP CMP ANSI." Any ideas?
Using Mudlet 3.9.0 as client and this package for GMCP stuff.
Error:
<Lua error:InvalidJSONInput: parse error: invalid object key (must be a string)
08553,"name":"a ration pack",}{"id":1628722269,"name":"a wat
(right here) ------^
at ..\3rdparty\lua_yajl\lua_yajl.c line 345>
Digging around the scripts from the package show no sign of doing anything but parsing whatever data it's given from the server, so I'm left thinking that a bit of code somewhere is adding in a comma where it shouldn't be; The toString functions for the MiniJSON.java classes under both core and siplet.support are really the only places I can find where this would happen, specifically
for(final Iterator<String> k = keySet().iterator(); k.hasNext();)
{
final String keyVar = k.next();
value.append("\"").append(toJSONString(keyVar)).append("\":");
final Object obj = get(keyVar);
appendJSONValue(value, obj);
if(k.hasNext())
{
value.append(",");
}
}
value.append("}");
I feel like k.hasNext() is causing it to toss another comma in there before the closing brace, but I'm not sure as to why
I guess I'll be poking at it until it either turns out my hunch is wrong (or is not the lib's fault) or someone beats me to the solution
I am aware that this part of the source code is currently under-utilized, but I am pretty sure the code is question will never work as written.
private RTreeNode chooseLeaf(final T o, final RTreeNode n) {
assert (n != null);
if (n.isLeaf()) {
return n;
}
else {
final BoundedObject.BoundedCube box = o.getBounds();
int maxOverlap = Integer.MAX_VALUE;
RTreeNode maxnode = null;
for (int i = 0; i < n.children.size(); i++) {
final int overlap = expansionNeeded(n.children.get(i).box, box);
if ((overlap < maxOverlap) || (overlap == maxOverlap) && ((maxnode != null) && (area(n.children.get(i).box) < area(maxnode.box)))) {
maxOverlap = overlap;
maxnode = n.children.get(i);
}
}
if (maxnode == null) // Not sure how this could occur
{
return null;
}
return chooseLeaf(o, maxnode);
}
}
the comment on the if statement checking maxnode says this should never happen but in reality, maxnode will always be null.
When maxnode is initialized, it is set to null, and then in the for loop it can only be set to a value if maxnode is not null, and maxnode will never be non-null according to the code as written.
Unfortunately I am not familiar enough with the code to be able to figure out what should really be checked to be able to set maxnode to a non-null value, so I figured that I would open an issue so that the code could be reviewed.
If you use Mudgrinder to generate a genStorekeeper, it does not have the proper fields.
Actual:
If this is -1 the system will start all player stats at BASEMINSTAT
and allow the player to spent MAXSTATS - 18 points in any
way they like, though no stat can be spent above BASEMAXSTAT.
Default is 0.
Expected:
If this is -1 the system will start all player stats at BASEMINSTAT
and allow the player to spend MAXSTATS - 18 points in any
way they like, though no stat can be spent above BASEMAXSTAT.
Default is 0.
Change -> spent/spend
Be able to wish for practices and trains with the wish spell.
Also remove con point from gender, height, and weight change.
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.