Git Product home page Git Product logo

dikumud3's Introduction

DikuMUD3

DikuMUD III using HTML, websockets and live Discord integrated.

D-Day June 21, 2020

Look at the end of this file if you want to contribute.

Join us on Discord (live integrated):

https://discord.gg/vmha2rGRA2

Documentation goes here:

https://wiki.dikumud.net/wiki/DikuMUD

The Wiki docs are sync'ed into this GitHUB repo daily. Many thanks to @Damien Davison.

Pre-requisites:

  • gcc/g++
  • flex/bison (sudo apt-get install bison flex)
  • boost devel (sudo apt-get install libboost-all-dev)
  • OpenSSL devel (sudo apt-get install libssl-dev)
  • Rapidjson devel (sudo apt-get install rapidjson-dev)
  • Debian users look here for flex: https://github.com/Seifert69/DikuMUD3/issues?q=70

Optional:

  • Doxygen (sudo apt-get install doxygen graphviz dia mscgen)

How to build & launch (using the new cmake)

  1. First build the binaries:

     See [CMake](README_cmake.md)* for more details.
    
    cd DikuMUD3/
    cmake .
    make all -j8 # -j8 to compile on 8 threads in parallel
    make test # optionally run the unit tests
    

Code documentation will be generated in docs/ after the build completes. docs/index.html

  1. Now you're ready to launch, open four tabs in shell:

    cd ../bin/
    ./vme # tab1
    tail -f vme.log # tab2
    ./mplex -w -p 4280 # tab3
    tail -f mplex.log #tab4
    

You can also launch a telnet mplex using e.g. mplex -p 4242 And then telnet localhost 4242. You can run several mplex'ers to the server, some supporting telnet some support web sockets.

  1. To open the client

    cd ../www/client/
    firefox index.html
    

Set the host to your fqdn or localhost and set the port to match mplex (4280 if you used that) And you'll see the welcome screen in Firefox.

  1. Connect with a player named 'Papi' to create your first god character. This value is configurable in vme/etc/server.cfg

Get in touch if you'd like to contribute. Drop a mail to seifert at dikumud.com. Contribution can be anything from world building, to creating tables in excel, to coding.

  • World builders are most welcome.
  • Some issues on Git to look at.
  • Need help creating random treasures. Got something working but need to polish it. Also missing e.g. random descriptions and a way to generate random descriptions.
  • Would like to monitor compiled zone files (INotify?) for changes and reindex them if they change. This will allow live, in-game, updates of zones.
  • Would like to be able to push in-game changes back into the zone files for in-game editing.

Docker build/run/test

Prerequisites:

  • Install Docker Desktop
  • Increase the memory available to docker if the build cannot complete (docker Preferences->Resources->Advanced->Memory)

Build the docker image (building the mud from source in the process)

DOCKER_BUILDKIT=1 docker build . -t dikumud3

Run the mud in a new container, binding the port to localhost

docker run -d -p 4280:4280 -p 80:80 dikumud3

Then you can point a webbrowser at http://localhost - and connect to the MUD. If you have a be server running already, try -p 8080:80 instead and connect to http://localhost:8080

Persist data between builds/instances

Create a volume to store mud data

docker volume create muddata

Mount the volume when you start a container instance

docker run -d -p 4280:4280 -p 80:80 -v muddata:/dikumud3/vme/lib -v dikumud3

Create a bash shell into the container then so you can rebuild/restart vme mplex etc

docker exec -it $(docker ps -q -f ancestor=dikumud3) bash

Stop container

docker stop $(docker ps -q -f ancestor=dikumud3)

Docker Example Workflow

Note running docker in the foreground (without the -d switch)

  1. Create volume to persist mud data: docker volume create muddata
  2. Build the container: DOCKER_BUILDKIT=1 docker build . -t dikumud3
  3. Run the container: docker run -d -p 4280:4280 -p 80:80 -v muddata:/dikumud3/vme/lib -v dikumud3
  4. Visit http://localhost
  5. Create "Papi" user or other
  6. Enter MUD and save user
  7. Exit MUD
  8. Make code changes
  9. Build locally (can be skipped)
  10. Stop container: CTRL-C or docker stop $(docker ps -q -f ancestor=dikumud3)
  11. Rebuild container: DOCKER_BUILDKIT=1 docker build . -t dikumud3
  12. Run the container: docker run -d -p 4280:4280 -p 80:80 -v muddata:/dikumud3/vme/lib -v dikumud3
  13. Visit http://localhost
  14. Oh no - it coredumped with my change (ノ`Д´)ノ
  15. Start shell in container: docker exec -it $(docker ps -q -f ancestor=dikumud3) bash
  16. (in container) run vme in debug cd /dikumud3/vme/bin; gdb vme
  17. etc

Errors

If the above gives an error like below, it may be because your distro sets DOCKER_CONTENT_TRUST. This stops docker from executing images that have not been digitally signed by the creator. You can disable the check by setting the env to zero.

[user@localhost]$ docker run -d -p 4280:4280 dikumud3
docker: you are not authorized to perform this operation: server returned 401.
See 'docker run --help'.
[user@localhost]$ env | grep DOCKER
32:DOCKER_CONTENT_TRUST=1
[user@localhost]$ DOCKER_CONTENT_TRUST=0 docker run -d -p 4280:4280 dikumud3

dikumud3's People

Contributors

bluedreamer avatar bonnedav avatar chrisspanton avatar ellpc avatar fizzie68 avatar iamnove avatar luciensadi avatar mochimodev avatar omnidecker avatar roestrei avatar seanholt avatar sebras avatar seifert69 avatar tehkyle avatar tnem avatar waywardmonkeys avatar wilminator avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dikumud3's Issues

Default logging is too high

I'd like to recommend that logging be reduced in the version on Github in the default install.
Currently ALL input is logged to vme.log and mplex.log (duplicative). While this makes sense for debugging, some may decide to use this out of the box.

I'd also recommend that input to the password prompt be specifically turned off in all logging modes for vme.
(This will be much harder to capture in the mplex.log which is unaware of the context).

Bug - Zone - parameter mismatch in a zone file

Mon Sep 28 20:25:23 2020 :: NULL t code to act(): You try to $3t $2n but the job is to much for you and you destroy
Mon Sep 28 20:25:23 2020 :: NULL t code to act(): $1n tries to $3t but the job is to much for $1m and he destroys it.

Check fireweapon and missile

Check out how fireweapon and missile work.

Make sure that resolving combat is not super strange compared to the regular melee attacks.

Does identify work for them?

Zone comiliation error assassin.zon:854

VMC 2.0 Copyright (C) 2001 by Valhalla [Oct 2 2020]
Compiling 'assassin.zon'
<assassin.zon> @ 854: EOF in string
<assassin.zon> @ 854: Unterminated conditional
Fatal error compiling in preprocessor stage in file 'assassin.zon'.

Notes about compiling and running

  1. Need creating directory 'log' in directory 'vme'

  2. In dir vme/lib/ply need create file players.id:

echo 0 > players.id

  1. Directory vme/www is root dir of MUD web site

cp mudenter.html index.html

In file index.html replace "localhost" to your FQDN

I did it all and it worked :-)

[2020-07-21 19:29:42] [error] Handshake ended with HTTP error: 426

Started the MUD up fine - attempted connection via http://host:4280 - receiving a blank screen and the following log:

[2020-07-21 19:29:42] [error] Handshake ended with HTTP error: 426
[2020-07-21 19:29:42] [error] Handshake ended with HTTP error: 426
etc..

Possibly relevant is the vme.log entries here:

Tue Jul 21 19:27:48 2020 :: load_string(): File does not exist: ../lib/boards/strings/pov.idx
Tue Jul 21 19:27:48 2020 :: load_string(): File does not exist: ../lib/boards/strings/paper.idx
Tue Jul 21 19:27:48 2020 :: load_string(): File does not exist: ../lib/boards/strings/citizen.idx
Tue Jul 21 19:27:48 2020 :: sorcerer/Shopkeeper servant@sorcerer unable to load item: coffee@arabian
Tue Jul 21 19:27:48 2020 :: haon_dor/DIL walk_room() unable to locate room throne@dwarves
Tue Jul 21 19:27:48 2020 :: sorcerer/Shopkeeper magic_keeper@sorcerer unable to load item: br_potion@ww1
Tue Jul 21 19:27:48 2020 :: haon_dor/DIL walk_room() unable to locate room throne@dwarves
Tue Jul 21 19:27:49 2020 :: haon_dor/DIL walk_room() unable to locate room throne@dwarves
Tue Jul 21 19:27:58 2020 :: Process took 0.1375 seconds to complete: reload_corpse@death on void@basis - DIL (82)'
Tue Jul 21 19:27:58 2020 :: midgaard/DIL watercurrent(): No such direction 1 in room river1@midgaard
Tue Jul 21 19:28:07 2020 :: Booting Eliza
Tue Jul 21 19:28:07 2020 :: Booting Eliza Done.
Tue Jul 21 19:28:18 2020 :: A multi-host has connected to the game.
Tue Jul 21 19:28:18 2020 :: Sending Mudname Valhalla Test Mud, Len 18
Tue Jul 21 19:28:18 2020 :: Sending Default Colors to multihost.
Tue Jul 21 19:29:00 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:00 2020 :: goblin_cave/DIL walk_room() unable to locate room pt_d_fo@elfdom
Tue Jul 21 19:29:00 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:01 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:01 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:01 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:01 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:02 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:02 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:02 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:02 2020 :: Mplex not from trusted host, terminating.
Tue Jul 21 19:29:25 2020 :: goblin_cave/DIL walk_room() unable to locate room fireplac@elfdom

Although the time on the Mplex errors does NOT coincide with connection attempts.

libfl.so: undefined reference to `yylex'

Is anyone else having trouble compiling with this error? I did some googling and at first thought the problem was with flex, but it hasn't updated in 2+ years. I don't have much experience with C++, so I'm probably missing something simple. :-|

I'm doing this in Docker, so it's all fresh. I started with Arch Linux, but moved to Debian when I first ran into problems. Any help is greatly appreciated. Thanks! :-)

root@f7e15a47dfc0:/diku/vme/src# uname -a; apt list --installed | grep 'gcc\|g++\|flex\|bison\|libboost-all-dev' 
Linux f7e15a47dfc0 5.8.12-arch1-1 #1 SMP PREEMPT Sat, 26 Sep 2020 21:42:58 +0000 x86_64 GNU/Linux

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

bison/stable,now 2:3.3.2.dfsg-1 amd64 [installed]
flex/stable,now 2.6.4-6.2 amd64 [installed]
g++-8/stable,now 8.3.0-6 amd64 [installed,automatic]
g++/stable,now 4:8.3.0-1 amd64 [installed]
gcc-8-base/stable,now 8.3.0-6 amd64 [installed,automatic]
gcc-8/stable,now 8.3.0-6 amd64 [installed,automatic]
gcc/stable,now 4:8.3.0-1 amd64 [installed,automatic]
libbison-dev/stable,now 2:3.3.2.dfsg-1 amd64 [installed,automatic]
libboost-all-dev/stable,now 1.67.0.1 amd64 [installed]
libgcc-8-dev/stable,now 8.3.0-6 amd64 [installed,automatic]
libgcc1/stable,now 1:8.3.0-6 amd64 [installed,automatic]
root@f7e15a47dfc0:/diku/vme/src# make all
g++ -pipe -m64 -o ../bin/vme  ../build/./comm.o ../build/./config.o ../build/./apf_affect.o ../build/./utility.o ../build/./namelist.o ../build/./queue.o ../build/./dbfind.o ../build/./experience.o ../build/./act_color.o ../build/./hookmud.o ../build/./fight.o ../build/./structs.o ../build/./act_change.o ../build/./nanny.o ../build/./convert.o ../build/./main.o ../build/./dictionary.o ../build/./tif_affect.o ../build/./slime.o ../build/./db_file.o ../build/./cmdload.o ../build/./bytestring.o ../build/./interpreter.o ../build/./bank.o ../build/./dilfld.o ../build/./color.o ../build/./teach.o ../build/./spell_parser.o ../build/./act_info.o ../build/./trie.o ../build/./reception.o ../build/./event.o ../build/./dilrun.o ../build/./nice.o ../build/./dilshare.o ../build/./destruct.o ../build/./mobact.o ../build/./magic.o ../build/./signals.o ../build/./act_other.o ../build/./act_wstat.o ../build/./act_skills.o ../build/./combat.o ../build/./badnames.o ../build/./zon_wiz.o ../build/./pcsave.o ../build/./money.o ../build/./spec_assign.o ../build/./system.o ../build/./sector.o ../build/./common.o ../build/./unitfind.o ../build/./hook.o ../build/./modify.o ../build/./dilinst.o ../build/./dilexp.o ../build/./skills.o ../build/./justice.o ../build/./eliza.o ../build/./intlist.o ../build/./zone_reset.o ../build/./db.o ../build/./act_wizard.o ../build/./weather.o ../build/./spec_procs.o ../build/./affect.o ../build/./handler.o ../build/./guild.o ../build/./zon_basis.o ../build/./act_movement.o ../build/./dilsup.o ../build/./extra.o ../build/./account.o ../build/./ban.o ../build/./textutil.o ../build/./limits.o ../build/./act_offensive.o ../build/./protocol.o ../build/./db_utils.o ../build/./files.o ../build/./membug.o ../build/./constants.o ../build/./path.o ../build/./str_parse.o -lcrypt -lpthread -lboost_filesystem  -lboost_regex -lboost_system  
g++ -pipe -m64 -o ../bin/mplex  ../build/./mplex2/network.o ../build/./mplex2/translate.o ../build/./mplex2/ClientConnector.o ../build/./mplex2/mplex.o ../build/./mplex2/echo_server.o ../build/./mplex2/MUDConnector.o ../build/hook.o ../build/queue.o ../build/textutil.o ../build/utility.o ../build/common.o ../build/protocol.o ../build/color.o ../build/bytestring.o ../build/membug.o -lcrypt -lpthread -lboost_filesystem  -lboost_regex -lboost_system  
g++ -pipe -m64 -o ../bin/defcomp  ../build/./defcomp/defcomp.o -lcrypt -lpthread -lboost_filesystem  -lboost_regex -lboost_system  
g++ -pipe -m64 -o ../bin/pp  ../build/./pp/pp6.o ../build/./pp/pp2.o ../build/./pp/pp3.o ../build/./pp/pp4.o ../build/./pp/pp8.o ../build/./pp/pp5.o ../build/./pp/main.o ../build/./pp/pp7.o ../build/./pp/pp1.o -lcrypt -lpthread -lboost_filesystem  -lboost_regex -lboost_system  
cd vmc;make -j8
make[1]: Entering directory '/diku/vme/src/vmc'
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c vmc.cpp -o ../../build//vmc/vmc.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c vmc_process.cpp -o ../../build//vmc/vmc_process.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c utility.cpp -o ../../build//vmc/utility.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c structs.cpp -o ../../build//vmc/structs.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c destruct.cpp -o ../../build//vmc/destruct.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c dilshare.cpp -o ../../build//vmc/dilshare.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c membug.cpp -o ../../build//vmc/membug.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c spec_assign.cpp -o ../../build//vmc/spec_assign.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c money.cpp -o ../../build//vmc/money.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp1.cpp -o ../../build//vmc/pp1.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp2.cpp -o ../../build//vmc/pp2.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp3.cpp -o ../../build//vmc/pp3.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp4.cpp -o ../../build//vmc/pp4.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp5.cpp -o ../../build//vmc/pp5.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp6.cpp -o ../../build//vmc/pp6.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp7.cpp -o ../../build//vmc/pp7.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c pp8.cpp -o ../../build//vmc/pp8.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -c vmc_db_file.cpp -o ../../build//vmc/vmc_db_file.o
bison --debug -y -d -v vmcpar.y
vmcpar.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr]
flex -t vmclex.l > ../../build//vmc/tmp_vmclex.cpp
bison --debug -d -v -pdil dilpar.y
flex -Pdil -t dillex.l  > ../../build//vmc/tmp_dillex.cpp 
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -I ../../build//vmc/ -c ../../build//vmc/tmp_vmcpar.cpp -o ../../build//vmc/tmp_vmcpar.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -I ../../build//vmc/ -c ../../build//vmc/tmp_vmclex.cpp -o ../../build//vmc/tmp_vmclex.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -I ../../build//vmc/ -c ../../build//vmc/tmp_dilpar.cpp -o ../../build//vmc/tmp_dilpar.o
g++  -I.  -I.. -DVMC_SRC -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall  -g -I ../../build//vmc/ -c ../../build//vmc/tmp_dillex.cpp -o ../../build//vmc/tmp_dillex.o
g++ -I. -I.. -I vmc -DVMC  -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall   -O0 ../../build//vmc/vmc.o ../../build//vmc/vmc_process.o ../../build//vmc/utility.o ../../build//vmc/structs.o ../../build//vmc/destruct.o ../../build//vmc/dilshare.o ../../build//vmc/membug.o ../../build//vmc/spec_assign.o ../../build//vmc/money.o ../../build//vmc/pp1.o ../../build//vmc/pp2.o ../../build//vmc/pp3.o ../../build//vmc/pp4.o ../../build//vmc/pp5.o ../../build//vmc/pp6.o ../../build//vmc/pp7.o ../../build//vmc/pp8.o ../../build//vmc/vmc_db_file.o ../../build//vmc/tmp_vmcpar.o ../../build//vmc/tmp_vmclex.o ../../build//vmc/tmp_dilpar.o ../../build//vmc/tmp_dillex.o ../../build//color.o ../../build//textutil.o ../../build//namelist.o ../../build//files.o ../../build//extra.o ../../build//bytestring.o ../../build//common.o ../../build//intlist.o -lfl -g -o ../../bin/vmc 
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libfl.so: undefined reference to `yylex'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:92: ../../bin/vmc] Error 1
make[1]: Leaving directory '/diku/vme/src/vmc'
make: *** [Makefile:211: ../bin/vmc] Error 2

Check slog and szonelog

Head a rumor that slog and szonelog might crash if handed a string longer than MAX_STR_LEN

Help Wanted - Test play

Would love to get feedback from anyone who test plays both on what's fun, what's not. Balance. Experience progression.

web client - quick typing issue

In the web client if you press enter and very quickly type something else it seems to capture the first letter and send it before the enter.

To reproduce hit for example ENTER and type aaa very quickly after each other.

Notice the first a in the sequence appears in the web client as if typed before enter was hit

DIL - Identify

identify robe seems to have boring result. (check item types)

Swim Ocean -> Swim?

If a stream takes you out to the ocean you're stuck and can't swim back. Maybe you should be allowed to swim from Ocean -> Swim sector. Maybe make a very difficult swim check if no difficulty was specified.

Web Client - click zone for cmd line

I keep having an issue using the web client, where when I swap between windows I click the screen, and realize that I am not in the command line and able to type. I then have to move to the small command line box to click there to enter commands. Should be easier to enter commands, while maintaining ability to copy text from output window.

WebClient Broken on Chrome

I have installed the latest upgrades to the web client. When I try to connect to an existing character (in this case my admin) using Chrome, it tells me that my password is wrong and disconnects me. It appears to work fine using FIrefox and Microsoft browsers though.

Admin - Barbarian

New character profession (or race?). Adding a frenzy skill alongside would be nice

Segmentation fault

Hello!

I'm download current version DikuMUD3, compile it and run.

Connect, create character, enter 'save' command and disconnect (control D in tintin++)

And try reconnect and have crash after write password:

gdb says:

Thread 1 "vme" received signal SIGSEGV, Segmentation fault.
0x0000555555592dbc in connect_game (pc=0x555555f6f500) at nanny.cpp:198
198 CHAR_DESCRIPTOR(pc)->logon = time(0);
(gdb) bt
#0 0x0000555555592dbc in connect_game (pc=0x555555f6f500) at nanny.cpp:198
#1 0x0000555555593222 in enter_game (ch=0x555555f6f500, dilway=1) at nanny.cpp:304
#2 0x0000555555593d23 in nanny_motd (d=0x555555bcaea0, arg=0x7fffffffd807 "") at nanny.cpp:457
#3 0x0000555555593c62 in set_descriptor_fptr (d=0x555555bcaea0, fptr=0x555555593caf <nanny_motd(descriptor_data*, char*)>,
call=1 '\001') at nanny.cpp:408
#4 0x0000555555595422 in nanny_existing_pwd (d=0x555555bcaea0, arg=0x555556c0af70 "paroll666") at nanny.cpp:899
#5 0x000055555559973e in game_event () at main.cpp:436
#6 0x00005555555992dc in game_loop () at main.cpp:338
#7 0x0000555555599225 in run_the_game (srvcfg=0x7fffffffdc50 "../etc/server.cfg") at main.cpp:295
#8 0x000055555559901e in main (argc=1, argv=0x7fffffffdf48) at main.cpp:238
(gdb)

With best regards, Serge "Prool" Pustovoitoff

Unable to advance character with 'advance' command.

102m/164e/35h>
advance Fullpint admin 254
That character is not here.

102m/164e/35h>
look fullpint
He has big green ears, and long greasy hair.
Fullpint is a protected citizen.
| a short sword
| a small wooden shield
| Odin's Medallion of Guild Transport
| a leather jerkin
| a dark cloak
| the Broach of Thieving
| a pair of leather pants
| a pair of leather boots

Web Client - number pad navigation

popular dedicated mud clients allow for the 10-key to be a quick one-handed navigation utility. Imagine each number being a point on a compass, they will send you that direction, with 5 in the center being look. Would be beautiful to replicate.

Web Client - Tab Complete?

Tab complete is a compelling feature popular in dedicated MUD clients. Would be valuable in the web client.

Verify setup

Do the directories used in the zonelist need to be manually created?

death 1120tw0008 1 0 250 0 ../lib/death

If so verify to make sure they're in the distribution.

Also double check if DIL uses strings/ subdir.

Admin - Add a few new weapon types

A few new novel weapon types would be nice.

One could add: Shuriken. Darts. Blow-dart. Bola.

They'd be nice additions and special enough they can have their own training skill.

Blow Dart might even break out of the STR DEX DEX and STR STR DEX ability pattern.
Perhaps use DEX DEX CON ?

Logging in as MUD admin doesn't work

Sorry,
New issue with last night's build. I can log in as a normal user, but if I log in as MUD admin, I can't perform the selection to enter MUD (or set Wizinvis, or exit):

Output below:

By what name do they call you?
Papi
Welcome back Papi, please enter your password:
Welcome back Papi, you last visited Valhalla Test Mud on Sat Aug 1 19:39:11 2020
Message of Today
Located in: ~/etc/motd

90m/164e/35h>
Welcome to Valhalla

  1. Enter Valhalla
    W) Change Wizinv level [0]
  2. Exit Valhalla

Make your choice:
1

1

1

1

1

It may be interesting to note that Papi was in the process of dying when I last quit (didn't eat/drink) and was at the part of the death process where you see clouds/the light, whatever, when I typed 'quit' to end my session.

Use of auto in cmdload.cpp fails to compile vme/src

[rgautier@vps1 src]$ make all
cmdload.cpp: In function 'void skill_dump()':
cmdload.cpp:129:14: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
for (auto it = vect.begin(); it != vect.end(); ++it)
^
cmdload.cpp:129:19: error: 'it' does not name a type
for (auto it = vect.begin(); it != vect.end(); ++it)
^
cmdload.cpp:129:38: error: expected ';' before 'it'
for (auto it = vect.begin(); it != vect.end(); ++it)
^
cmdload.cpp:129:38: error: 'it' was not declared in this scope
make: *** [../build/./cmdload.o] Error 1

Reflective XSS in client-a.html

The parameters can be abused to execute arbitrary JavaScript on the page in the trust of the website. Must clean parameters.
(client-a.html)

Credit: Simp Von Cuck - Defcon 28

C Bug - Weight bug

Weight has a bug. Has been there for ages since 1990s. Somehow it's possible to cause the weight values to become incorrect. Right now there is no repro-scenario. So first step would be to reproduce the issue. This issue is quite similar to the light bug issue

Dependency: boost-devel

Attempted to build from fresh clone - make all on vme/src - received notice of missing file.

structs.h:23:40: fatal error: boost/graph/graph_traits.hpp: No such file or directory
#include <boost/graph/graph_traits.hpp>

Note: I've installed boost and flex on the machine. I had NOT installed boost-devel

Installed:
boost.x86_64 0:1.53.0-28.el7

Dependency Installed:
boost-atomic.x86_64 0:1.53.0-28.el7 boost-chrono.x86_64 0:1.53.0-28.el7 boost-context.x86_64 0:1.53.0-28.el7
boost-date-time.x86_64 0:1.53.0-28.el7 boost-filesystem.x86_64 0:1.53.0-28.el7 boost-graph.x86_64 0:1.53.0-28.el7
boost-iostreams.x86_64 0:1.53.0-28.el7 boost-locale.x86_64 0:1.53.0-28.el7 boost-math.x86_64 0:1.53.0-28.el7
boost-program-options.x86_64 0:1.53.0-28.el7 boost-python.x86_64 0:1.53.0-28.el7 boost-random.x86_64 0:1.53.0-28.el7
boost-regex.x86_64 0:1.53.0-28.el7 boost-serialization.x86_64 0:1.53.0-28.el7 boost-signals.x86_64 0:1.53.0-28.el7
boost-system.x86_64 0:1.53.0-28.el7 boost-test.x86_64 0:1.53.0-28.el7 boost-thread.x86_64 0:1.53.0-28.el7
boost-timer.x86_64 0:1.53.0-28.el7 boost-wave.x86_64 0:1.53.0-28.el7

Python - Improve Help script

In the help on the Wiki, probably expand the use of curly brackets, for for example

{command,text}

If there's a comma in the curly brackets, display text and execute the command.

{help} == {help,help} == {#,help}

{help #, Midgaard Paladins} -> Midgaard Paladins

Compiling Issue...destruct.cpp

This is a weird one - to me it looks like it's trying to include the warning that it's error-ing on - but Makefile includes that flag.

g++ -I. -I.. -DVMC_SRC -DVMC -DLINUX -DPOSIX -pipe -m64 -DMUD_DEBUG -g -Wall -g -c destruct.cpp -o ../../build//vmc/destruct.o
In file included from /usr/include/c++/4.8.2/type_traits:35:0,
from ../destruct.cpp:12,
from destruct.cpp:11:
/usr/include/c++/4.8.2/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the
^

Web Client - accessibility NVDA

From: Zach
I wanted to write with some initial thoughts on the accessible client. I played for a few minutes with NVDA and Google Chrome.

THere’s a very weird issue which seems to occasionally “reset,” the client output after a certain mount of time. I basically end up listening to output from when I first logged on, instead of the current data. This is jarring and I can’t seem to find a workaround.

It appears to happen once the mud sends a fairly large number of lines, but I can’t pin down an exact amount.

Newbie Quests for Guild Entry

Per the comments in basis.zon, I agree that setting guild should ideally not happen automatically. This is mostly my reminder. 👍
💯
I'd like to build a set of quests, much of it re-usable between the professions, that introduce players to the game in a more interactive way than the existing newbie guide tour. Final steps of the quest will be to join guild affiliated with profession.

Initial thought:

  • find out how to communicate
  • find out how to navigate
  • find out how to get some food
  • find out how to get some water
  • find out how to do advanced navigation (search, doors, etc)
  • find your guild
  • join guild
  • find out how to make some money
  • find out how to practice

Compilation error due to instantiation of undefined template

I ran into this issue while trying to compile the MUD on OS X. Including <memory> did not resolve it. Any suggestions or advice would be appreciated.

In file included from mplex2/echo_server.cpp:1:
In file included from mplex2/websocketpp/common/memory.hpp:55:
In file included from /usr/local/include/boost/shared_ptr.hpp:17:
In file included from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:23:
In file included from /usr/local/include/boost/config/no_tr1/memory.hpp:21:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:652:
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/type_traits:1624:38: error: implicit instantiation of undefined template 'std::__1::owner_less<boost::weak_ptr<void> >'
    : public integral_constant<bool, __is_empty(_Tp)> {};
                                     ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/map:496:18: note: in instantiation of template class 'std::__1::is_empty<std::__1::owner_less<boost::weak_ptr<void> > >' requested here
          bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value>
                 ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/map:930:13: note: in instantiation of default argument for '__map_value_compare<boost::weak_ptr<void>,
      std::__1::__value_type<boost::weak_ptr<void>, cConHook *>, std::__1::owner_less<boost::weak_ptr<void> > >' required here
    typedef __map_value_compare<key_type, __value_type, key_compare> __vc;
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mplex2/echo_server.cpp:21:98: note: in instantiation of template class 'std::__1::map<boost::weak_ptr<void>, cConHook *, std::__1::owner_less<boost::weak_ptr<void> >, std::__1::allocator<std::__1::pair<const
      boost::weak_ptr<void>, cConHook *> > >' requested here
std::map<websocketpp::connection_hdl, cConHook *, std::owner_less<websocketpp::connection_hdl> > g_cMapHandler;
                                                                                                 ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:5282:29: note: template is declared here
template <class _Tp> struct owner_less;
                            ^
1 error generated.
make: *** [../build/./mplex2/echo_server.o] Error 1

Web client - combat window feature

Would it be nice in the web client, to have all combat messages appear in a separate window?

Maybe we can even avoid the scrolling text and organize the text ore nicely with some markup.

DIL bug when calling remote function with NULL parameter

I triggered a DIL error that said the stack size didn't match.
Didn't sound good. It's the same error I saw the other day in the log. Now I know how to trigger it.

 hm := skillchecksa@skills(SKI_SEARCH, ABIL_BRA, ext.vals.[1]);
In this scenario ext was NULL.

MUD dies after running for hours

Two days in a row now, the MUD process has just ended around 11:45 PM for no particular reason. No one is logged into it, the vme process just ends (no error logged, no input logged), no process error on stderr.

Last logged events are merely zone file errors that had occurred throughout the day regarding objects missing rooms.

web editor for structured data

I'm wondering if there might be a good online editor for structured data. It could also be an editor that can be included as JS on the client. That's actually preferable.

For example to edit an object, NPC or room.

The editor preferably might be able to have a formatted input design. So we can configure how the data is entered.

Data exchange format can be anything, JSON, XML, etc

C Bug - Light

Light, Bright, Illum has a bug. Has been there for ages since 1990s. Somehow it's possible to cause the light values to become incorrect. Right now there is no repro-scenario. So first step would be to reproduce the issue. This issue is quite similar to the weight bug issue

Admin - Move some login help files to Help/

It would be nice to take some of the login help and move it into etc/help/strings as .hlp files and make sure they're updated on the Wiki

Especially these files (be sure to check the files are actually used :)):

alignment.logon
maiden.logon
rules.hlp
profession.logon
newbie.hlp
races.logon
sex.logon

Then it'll be easier to maintain help texts in one location

DIL - Player corpse rotting

It appears that player corpses rot in 15-20 minutes. Previously, they would rot in something like 1.5 days.

corpse rotting dil is in death.zon - rot_corpse (). I havent had a chance to look at whether its something there, or something more fundamental in time.

No leveling

Hi!

I went to the western forest to hunt some rabbits and fox

And see no level up:

score

Prool the human (Neutral).
You have 1428 experience points and you need -28 to the next level.
You have 41(41) hit, 103(103) mana, 211(211) endurance points.
You are a protected citizen.You are standing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.