wowpin / dumserver Goto Github PK
View Code? Open in Web Editor NEWA modern MU* engine re-imagined, actively developed and properly tracked.
License: MIT License
A modern MU* engine re-imagined, actively developed and properly tracked.
License: MIT License
What whatever mysterious reason, freshly cloned server (running on Raspberry Pi 3 with Raspbian) crashes when logging in with freshly created new player.
Need to replicate this and try to understand further.
It would be awesome if we had some user friendly front-end for designing the game world.
E.g. I want to add 2 new monsters in this room here. Lemme click this button instead of manually modifying JSONs.
When invoking @quit
command, the .player file corresponding to player who invoked it gets deleted and server crashes @ChrisByrd14
Following trace log has been captured:
26/11/2019 07:42:06 [info] Client ID: 0 has disconnected (wowpin)
26/11/2019 07:42:06 [info] Player disconnected, saving state
Traceback (most recent call last):
File "dumserver.py", line 822, in
saveState(players[id], playersDB)
File "/var/www/webdav/dumserver/functions.py", line 138, in saveState
savePlayer(player, masterDB)
File "/var/www/webdav/dumserver/functions.py", line 125, in savePlayer
newPlayer[key] = hash_password(player[key])
File "/var/www/webdav/dumserver/password.py", line 28, in hash_password
_hash = hashlib.pbkdf2_hmac('sha512', pwd.encode('utf-8'), salt, 100000)
AttributeError: 'int' object has no attribute 'encode'
Looks like an issue in player state saving procedure, gotta read through that commit again when I'm less tired.
NPCs are ignoring any other items in their loot table after they have dropped the first one. Should be relatively straightforward to fix.
Doesn't crash the server, but throws
'Unknown command 'NoneType' object is not subscriptable!'
Easy to fix me thinks.
Scenario:
Result:
Players hits the NPC once, then ceases to attack, fight gets deleted.
Considering scenario:
Lol.
Need to collect trace - it's an issue with gsocket being passed to an AT command.
No restriction is imposed on channel names when subscribing.
It appears that NPCs retaliate fights with the same player multiple times (e.g. after player has left and returned to the room before aggro expired).
Need to look at the retaliation logic and make sure it doesn't happen if NPC fight with the same target already is in progress.
Including a hash signe (#) in your password will break the server on next server boot :)
Due to the fact I'm using a commentjson module, hash is interpreted as beginning of a comment. Same is likely to happen if one includes a double slash (//) in user password.
In a following scenario:
@quit
Upon reconnecting, player is unable to authenticate, receiving password incorrect message.
Probably a silly mistake somewhere in NPC respawn loop in dumserver.py.
This should be cleared when player dies.
In a scenario where a player is in a fight, but hasn't typed a command in a while, it is possible for him to get disconnected due to hitting the idle timer. This leads to a server crash while processing combat actions of a non-existent player.
Combat actions must reset idle timer.
Scenario:
0. Server reboot
Result:
"You cannot see anywhere"
WFTF?
I cannot exactly pinpoint the exact moment those crashes occur - I have a feeling they coincide with multiple user logons.
Need to setup some method of capturing python tracebacks.
dumserver.py line 419 to be looked at.
A system with trackable objectives is needed along with some implementation of conversation trees.
Currently little practical idea of how to implement this, although I have spent very little time thinking about it.
I'm not sure where to report this, but allowing random people to connect to random servers with no authentication or sanity checks seems like a bit of an issue.
Although no immediate crash/error occurs, this is not supported by other processes/logic and should be blocked.
Webclient dependencies need updating and testing.
One of the recent Chrome updates breaks how null chars are displayed (you can see empty square chars in the webclient).
Works fine in IE, EDGE, etc.
Whenever I log in with my character I get this spammed to console. Whether using raw telnet or Mudlet
c3RhdHVzcGFuZWwChris;1;Small Bathroom;100;100;0;100;0;[None]
Also when using raw telnet (putty) I get ghost spaces every few seconds and also the layout is all messed up.
What I would REALLY like is a webclient where I can show health bars, exp bars, ASCII map etc in various sections...
Server crashes on NPC death during following scenario:
target NPC
attack NPC
go to adjacent room
(at this point player looses target, however fight remains active - also a bug)
return to a room
(at this point fight continues)
NPC dies and crashes the server with a following trace:
File "dumserver.py", line 582, in
if players[pid]['target'][4] != None and players[pid]['target'][4] == nid:
TypeError: 'NoneType' object is not subscriptable
Silly bug causing server crashes on NPC respawn. Problematic line commented out, will look into it later.
Ps. Thanks to trace tracking, I know it was caused by LiquidBeef, thanks for your help finding this dude!
Some kind of validation needed to restrict name length, inclusion of special chars etc.
It'd be useful to display some kind of summary of who is fighting in the room on entrance
Could be happening when other clients are connected, but not authenticated?
When target dies, it stays targetted.
If there are connected clients which have not entered the world yet (on character creation etc.), trying to target something will throw:
Unknown command 'NoneType' object has no attribute 'lower'!
Doh!
Does not crash the server, but it's be nice to throw an appropriate message.
Currently the 35 seconds timeout after which the fight will cease (if no combat actions are performed by either side) is hard-coded.
Would be nice to have it configurable via config.ini
Rather than listing every available command via the 'help' command, it would be nice to have a UNIX style MAN system.
Penny for your thought.
It would be good to announce start of combat to others in the room. Makes sense, people around you would see the brawl.
No password security measures have been implemented. Do not provide any real passwords when creating user accounts.
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.