Fabian Dill
1849693353
Make object hook more dynamic; ignoring unknown arguments
2021-02-28 20:32:15 +01:00
Fabian Dill
f19291aaed
Remove Fake Hollow Knight Items and Locations
...
Add GetDataPackage Network system
2021-02-25 02:07:28 +01:00
Fabian Dill
fe17fc6320
log misunderstood network commands
2021-02-21 23:54:08 +01:00
Fabian Dill
cbbdb2948d
attach command to args dict
2021-02-21 23:46:05 +01:00
Fabian Dill
ff9b24e88e
Hollow Knight integration
...
(prototype status)
2021-02-21 20:17:24 +01:00
Fabian Dill
1da1e4eac6
Sample implemention of JSONtoTextParser
2021-01-31 11:33:39 +01:00
Fabian Dill
2553b1d2ee
Merge branch 'main' into breaking_changes
2021-01-30 23:40:25 +01:00
Fabian Dill
c988ec24b6
update item table offsets
2021-01-30 23:40:01 +01:00
Fabian Dill
a646594f08
Merge branch 'main' into breaking_changes
...
# Conflicts:
# BaseClasses.py
# Fill.py
# MultiClient.py
# MultiServer.py
# Utils.py
# test/dungeons/TestDungeon.py
# test/inverted/TestInverted.py
# test/inverted_minor_glitches/TestInvertedMinor.py
# test/inverted_owg/TestInvertedOWG.py
# test/minor_glitches/TestMinor.py
# test/owg/TestVanillaOWG.py
# test/vanilla/TestVanilla.py
# worlds/alttp/ItemPool.py
# worlds/alttp/Main.py
# worlds/alttp/Rom.py
2021-01-30 23:29:32 +01:00
CaitSith2
6163ddd374
Use names listed in Regions.lookup_name_to_id for location names.
2021-01-22 04:40:09 -08:00
CaitSith2
8d63e13ca7
Revert "Multidata is now able to provide items/location IDs to server."
...
This reverts commit f47a85d435
.
2021-01-21 22:43:07 -08:00
CaitSith2
67119f8858
Revert "Get remaining things for better client/server interactions."
...
This reverts commit 6c1d3cb60d
.
2021-01-21 22:41:19 -08:00
CaitSith2
6c1d3cb60d
Get remaining things for better client/server interactions.
2021-01-21 16:57:31 -08:00
CaitSith2
f47a85d435
Multidata is now able to provide items/location IDs to server.
2021-01-21 16:23:56 -08:00
CaitSith2
8754c63d4e
client/server changes
...
* Server now includes checked locations as a separate list.
* If client connects to a server that sends checked checks, client can now give accurate information on checked locations, and not show "New Check: seed-unknown-location (total/216)" and instead accurately show "New check: 'seed-known-location' (total_checked/seed_total)"
/missing now accurately reports what was previously checked.
* client now attempts to translate "Unknown Location ID: 'ID'" into an actual location, if server is unaware of the location, but the client is.
2021-01-21 16:21:51 -08:00
Fabian Dill
c604dfe509
move networks commands to [str, Optional[dict]] across the board
...
and some other updates
PrintHTML is an experiment and is unlikely the solution I'll go with
2021-01-21 23:37:58 +01:00
Fabian Dill
514cd19367
Merge branch 'main' into breaking_changes
...
# Conflicts:
# BaseClasses.py
# Mystery.py
# WebHostLib/downloads.py
# WebHostLib/models.py
# WebHostLib/templates/macros.html
# WebHostLib/upload.py
# worlds/alttp/ItemPool.py
# worlds/alttp/Main.py
2021-01-17 06:50:25 +01:00
Fabian Dill
5afe44f9cb
use multidata locations to get missing checks (in server)
2021-01-15 03:22:56 +01:00
Fabian Dill
10b7c83f1d
Just use locations in the multidata, not static IDs, for forfeits
...
Should also work better for *other* games
2021-01-10 14:50:38 +01:00
Fabian Dill
233e9e6208
expand forfeit to forfeit out anything that is in multidata, so forfeits works with not yet implemented locations
2021-01-10 12:52:23 +01:00
Fabian Dill
e03841794b
Add Client warning when forfeit is set to automatic and client can't send required information
2021-01-04 22:41:18 +01:00
Fabian Dill
8ebd36b5a7
update Archipelago
2021-01-03 14:32:32 +01:00
Fabian Dill
08ca4245c1
Merge branch 'main' into breaking_changes
...
# Conflicts:
# Adjuster.py
# AdjusterMain.py
# BaseClasses.py
# MultiClient.py
# MultiServer.py
# Mystery.py
# Utils.py
# WebHostLib/downloads.py
# WebHostLib/generate.py
# dumpSprites.py
# test/TestBase.py
# worlds/alttp/EntranceRandomizer.py
# worlds/alttp/Main.py
# worlds/alttp/Rom.py
2021-01-03 13:13:59 +01:00
Fabian Dill
e25a03173b
Implement "minimum version" checks into server and clients
2020-12-29 19:23:14 +01:00
Fabian Dill
5128657349
allow setting remaining_mode from server options
2020-11-30 21:07:02 +01:00
Fabian Dill
f56efbc9e3
improve handling of embedded server options:
...
use whitelist
attempt to set, skip otherwise
attempt to convert data type
2020-11-15 15:21:41 +01:00
CaitSith2
7e3e2134e0
Add option to client for actually forcing item sending safety off.
2020-10-27 16:27:39 -07:00
CaitSith2
66894dbd86
Add further safeties to sending of location checks.
...
This safety is able to be turned off, but has to be done so on EVERY connection explicitly.
2020-10-27 16:24:21 -07:00
CaitSith2
6ff4b20d81
Only save reported locations that actually exist in the multidata.
2020-10-27 02:20:56 -07:00
CaitSith2
83db79815a
Make multiclient/multiserver/tracker keydropshuffle aware
2020-10-27 00:53:32 -07:00
Fabian Dill
1d58f54101
move ALTTP to its own world folder
2020-10-24 05:38:56 +02:00
Fabian Dill
4f8c737eec
squashed commit of many breaking changes
...
Dropping Support for Python 3.7; adding support for Python 3.9
2020-10-19 08:26:31 +02:00
Fabian Dill
add0762114
more compat removal
2020-10-18 23:18:54 +02:00
Fabian Dill
94dafa3c55
Open Breaking changes
2020-10-18 23:07:48 +02:00
CaitSith2
119a5a2b66
Allow client side login and remote issuing of server side commands.
...
Disabled by default. Requires a password to be set for it to be enabled.
2020-09-21 22:11:43 -07:00
CaitSith2
e77cd7c38a
Add command to allow or forbid a specific player from using the !forfeit command despite server restrictions on the command.
...
Allows for allowing a player to forfeit if they are under a time restriction where they have to leave the game, without allowing the command globally.
2020-09-02 02:23:31 -07:00
Fabian Dill
bca1a2d9e0
WebHost: Automatic !hint tracking
2020-07-27 19:30:31 +02:00
Fabian Dill
789d0245cc
MultiServer: supposed to restart savefile on older formats too
2020-07-24 14:14:45 +02:00
Fabian Dill
88ba7b55d2
Multiserver: [0,1] == (0,1) -> False, turns out.
2020-07-24 14:00:59 +02:00
Berserker66
35e2b2d20d
set_save adjustments for older DB savegames
2020-07-22 12:02:09 +02:00
Fabian Dill
78c85cce14
WebHost: List Rooms in a sortable table
2020-07-21 23:15:19 +02:00
Fabian Dill
ac238d9b14
WebHost: Don't count exit saving as activity, thereby creating a hosting loop
2020-07-20 14:17:05 +02:00
Fabian Dill
1d036c0d3c
add compatibility server setting
2020-07-16 16:57:38 +02:00
Fabian Dill
626b6b0521
fix loading old savegames from ponyorm DB
2020-07-16 02:29:36 +02:00
Fabian Dill
93ecf5988b
implement secrets.SystemRandom() for --race
2020-07-14 07:01:51 +02:00
Fabian Dill
59a71dbb05
restore multidata backwards compatibility
2020-07-14 05:06:25 +02:00
Fabian Dill
ea9e103cb0
update rom name handling
2020-07-14 04:48:56 +02:00
Fabian Dill
ead9a0ef15
use modern formatting for joined message
2020-07-13 03:38:19 +02:00
Fabian Dill
baba4b7c02
!hint now properly gives you prior collection info without needing enough to pay for another hint
2020-07-13 03:21:28 +02:00
caitsith2
319a315ec5
Fix !countdown and actually make !options work
2020-07-11 13:20:16 -07:00
Fabian Dill
d190fe65c6
webhost update
2020-07-10 17:42:22 +02:00
Fabian Dill
f998ae1a09
fix that countdown can get stuck
2020-07-05 21:46:44 +02:00
Fabian Dill
12273c396b
add /countdown and !options
2020-07-05 21:45:52 +02:00
Fabian Dill
68e92ae5b4
assign option to correct instance
2020-06-27 16:54:07 +02:00
Fabian Dill
de2cb1692e
refine option changing
2020-06-27 14:25:46 +02:00
Fabian Dill
12120ac995
implement option changing
2020-06-27 14:16:51 +02:00
Fabian Dill
6f9f5cbe14
Add twitch hyperlinking to webhost
2020-06-27 13:52:03 +02:00
Fabian Dill
46038830c3
fix trailing could not pay notification if there was nothing left to pay for
2020-06-26 07:30:26 +02:00
Fabian Dill
45a24fab27
save client activity data to multisave
2020-06-23 14:12:27 +02:00
Fabian Dill
26eb44ef15
revenge of the player number offset
2020-06-21 17:04:25 +02:00
Fabian Dill
6421a373e1
Webhost Update
...
introduce a very WIP tracker
Server will try to reuse port and also try to only use one port
2020-06-21 15:32:31 +02:00
Fabian Dill
9e18c6f1cd
Database-backed Webhosting
2020-06-20 20:03:06 +02:00
Fabian Dill
7e3ee8101f
implement lazy multisave saving using a daemon thread
2020-06-20 15:46:33 +02:00
Fabian Dill
facecdf487
implement --auto_shutdown <minutes>, shutting down a multiserver after that many minutes of inactivity
...
and set WebHost to a default of 6 hours
2020-06-16 11:26:54 +02:00
Fabian Dill
bd1c9f896b
allow ghosted slots with same ID to be replaced
2020-06-16 01:05:32 +02:00
Fabian Dill
3fbb959622
fix !missing for older clients
2020-06-15 22:15:04 +02:00
Fabian Dill
7353b489ce
add available hint points to UI
2020-06-15 06:30:51 +02:00
Fabian Dill
c486cd77bb
fix missed rename
2020-06-14 04:12:38 +02:00
Fabian Dill
ddc7be0794
update webhost
2020-06-13 22:49:57 +02:00
Fabian Dill
5da5847805
allow multiserver to defer to embedded options
2020-06-13 08:37:05 +02:00
Fabian Dill
4125995bdd
Adjust output to "BM" (Berserker's Multiworld) to differentiate spoiler logs, roms and server data at a glance
...
Rename _multidata to .multidata and embed .multidata as MultiServer-openable file into windows registry
2020-06-10 21:25:14 +02:00
Fabian Dill
90b24e3d59
alias now goes to 16, same as rom-name. Also improve some docstrings
2020-06-10 06:13:14 +02:00
Fabian Dill
27901008bc
fix that hints print already collected items again
2020-06-09 05:22:48 +02:00
Fabian Dill
68f453f802
remove duplicate old hints
2020-06-07 03:50:28 +02:00
Fabian Dill
55b37a998d
hotfix hint cost problem
2020-06-07 03:08:53 +02:00
Fabian Dill
2302150521
adjust hint payment rejected text
2020-06-07 02:38:03 +02:00
Fabian Dill
2e21e41c16
Allow partial hints
2020-06-07 02:13:41 +02:00
Fabian Dill
b36738f3f4
reraise the crash
2020-06-07 00:50:39 +02:00
Fabian Dill
55152515f6
move stuff out of main(), for alternative server implementations
2020-06-07 00:49:10 +02:00
Fabian Dill
00d7667771
extend hint system with group names
2020-06-07 00:19:19 +02:00
Fabian Dill
38cbcc662f
WebUI ( #100 )
...
* Object-Oriented base changes for web-ui prep
* remove debug raise
* optimize broadcast to serialize once
* Implement WebUI socket, static assets, and classes
- Still need to wrap logging functions and send output to UI
- UI commands are successfully being sent to the server
* GUI operational. Wrap logging functions, implement server address selection on GUI, automatically launch web browser when client websocket is served
* Update MultiServer status when a user disconnects / reconnects
* Implement colored item and hint checks, improve GUI readability
* Fix improper formatting on received items
* Update SNES connection status on disconnect / reconnect. Implement itemFound, prevent accidentally printing JS objects
* Minor text change for itemFound
* Fixed a very wrong comment
* Fixed client commands not working, fixed un-helpful error messages appearing in GUI
* Fix a bug causing a failure to connect to a multiworld server if a previously existing cached address was present and the client was loaded without an address passed in
* Convert WebUI to React /w Redux. WebSocket communications not yet operational.
* WebUI fully converted to React / Redux.
- Websocket communication operational
- Added a button to connect to the multiserver which appears only when a SNES is connected and a server connection is not active
* Restore some features lost in WebUI
- Restore (found) notification on hints if the item has already been obtained
- Restore (x/y) indicator on received items, which indicates the number of items the client is waiting to receive from the client in a queue
* Fix a grammatical UI big causing player names to show only an apostrophe when possessive
* Add support for multiple SNES Devices, and switching between them
* freeze support for client
* make sure flask works when frozen
* UI Improvements
- Hint messages now actually show a found status via ✔ and ❌ emoji
- Active player name is always a different color than other players (orange for now)
- Add a toggle to show only entries relevant to the active player
- Added a WidgetArea
- Added a notes widget
* Received items now marked as relevant
* Include production build for deployment
* Notes now survive a browser close. Minimum width applied to monitor to prevent CSS issues.
* include webUi folder in setup.py
* Bugfixes for Monitor
- Fix a bug causing the monitor window to grow beyond it's intended content limit
- Reduced monitor content limit to 200 items
- Ensured each monitor entry has a unique key
* Prevent eslint from yelling at me about stupid things
* Add button to collapse sidebar, press enter on empty server input to disconnect on purpose
* WebUI is now aware of client disconnect, message log limit increased to 350, fix !missing output
* Update WebUI to v2.2.1
- Added color to WebUI for entrance-span
- Make !missing show total count at bottom of list to match /missing behavior
* Fix a bug causing clients version <= 2.2.0 to crash when anyone asks for a hint
- Also fix a bug in the WebUI causing the entrance location to always show as "somewhere"
* Update WebUI color palette (this cost me $50)
* allow text console input alongside web-ui
* remove Flask
a bit overkill for what we're doing
* remove jinja2
* Update WebUI to work with new hosting mechanism
* with flask gone, we no longer need subprocess shenanigans
* If multiple web ui clients try to run, at least present a working console
* Update MultiClient and WebUI to handle multiple clients simultaneously.
- The port on which the websocket for the WebUI is hosted is not chosen randomly from 5000 - 5999. This port is passed to the browser so it knows which MultiClient to connect to
- Removed failure condition if a web server is already running, as there is no need to run more than one web server on a single system. If an exception is thrown while attempting to launch a web server, a check is made for the port being unavailable. If the port is unavailable, it probably means the user is launching a second MultiClient. A web browser is then opened with a connection to the correct webui_socket_port.
- Add a /web command to the MultiClient to repoen the appropriate browser window and get params in case a user accidentally closes the tab
* Use proper name for WebUI
* move webui into /data with other data files
* make web ui optional
This is mostly for laptop users wanting to preserve some battery, should not be needed outside of that.
* fix direct server start
* re-add connection timer
* fix indentation
Co-authored-by: Chris <chris@legendserver.info>
2020-06-03 21:29:43 +02:00
Fabian Dill
ffe67c7fa7
make activity timer actually based on activity and add connection timer for connection timing information
...
Also optimize "register_location_checks", because I was editing it anyway
2020-06-03 21:07:32 +02:00
Fabian Dill
0cb80eadf1
add more room info
2020-05-30 11:36:59 +02:00
Fabian Dill
10bced3d68
rip out port forwarding. Broken and as a result mostly unused.
2020-05-30 03:47:40 +02:00
Fabian Dill
3139b05fd2
tiny hint optimization
2020-05-18 23:27:56 +02:00
Fabian Dill
df79e570bb
shorten hint text a bit, now that it got longer
2020-05-18 23:24:41 +02:00
Fabian Dill
b2e20be077
Hints now contain ER info
2020-05-18 05:40:36 +02:00
caitsith2
d24e5e1eeb
Correct an oops on the command line regarding forfeit-mode.
2020-05-14 15:17:56 -07:00
Fabian Dill
9b4a87a467
use self.output in command processor
2020-05-14 07:12:20 +02:00
Fabian Dill
aa3eb6a3f8
stronger compression and compatibility on multidata
2020-05-08 23:09:56 +02:00
Fabian Dill
6afd4f0507
addresses #86
...
And also fixes auto, which worked as goal but never got triggered
2020-05-04 02:47:22 +02:00
Fabian Dill
d6665b6b53
Merge pull request #78 from Berserker66/tweaks
...
Tweaks
2020-04-30 17:27:34 +02:00
Fabian Dill
92350831fc
notify_all already prints to local console via logging
2020-04-30 04:44:57 +02:00
Fabian Dill
a6cc75d36a
optimize broadcast to serialize once
2020-04-30 04:39:38 +02:00
Fabian Dill
f5be6867c8
"license" is a python built-in and we should not shadow that name
2020-04-28 22:17:47 +02:00
caitsith2
7a3511e1ef
Update messages that get sent to client with aliases.
2020-04-27 23:49:46 -07:00
Fabian Dill
00da5dfd65
warn older client versions that features are missing
2020-04-28 05:59:03 +02:00
CaitSith2
495254addf
Actually check if client goal is achieved, instead of just existence of an entry. ( #77 )
2020-04-27 15:13:33 +02:00
Fabian Dill
ad66909669
implement server side /alias, also prevent aliases with trailing whitespace
2020-04-27 03:47:12 +02:00
Fabian Dill
00ba3c71c9
fix server not sending aliased names on connect
2020-04-25 23:16:16 +02:00
Fabian Dill
77ca61d069
introduce forfeit_mode and remaining_mode, as well as server state for client has beaten the game
...
more info in host.yaml
2020-04-25 15:11:58 +02:00
caitsith2
49385ede3d
Change win text
2020-04-24 21:42:13 -07:00
caitsith2
b3c7789596
Changes
...
* Game end detection - Detect if the player finished their game, and announce it accordingly.
* Add a client side /slow_mode option. (allows to delay receiving items when a massive amount of them come in, like from a forfeit.)
2020-04-24 20:07:28 -07:00
Fabian Dill
5d33b4b164
introduce persistent data storage, which for now just caches rom -> server pairs
2020-04-24 05:29:02 +02:00
Fabian Dill
7582767401
aliases
2020-04-23 06:16:54 +02:00
Fabian Dill
9842399d8b
fix payment for already found hints
2020-04-22 15:50:14 +02:00
Fabian Dill
fa2cf20b01
!hint now points out all hints relating to the player issuing the command.
...
payed hints also retain that they were already found and don't need to be re-checked as items can't be unfound.
2020-04-22 05:09:46 +02:00
Fabian Dill
afc379f92e
make get_intended_text handle 1 out of 1 pools correctly.
2020-04-21 21:53:20 +02:00
Fabian Dill
9291a0dbca
make sure countdown is started in base10
2020-04-21 21:46:16 +02:00
Fabian Dill
8ea342abe5
Add result flag to commands
2020-04-21 06:26:51 +02:00
Fabian Dill
356ff91cfd
make players command only output to the player requesting if there's 10 or more players
2020-04-20 23:03:52 +02:00
Fabian Dill
905714adfe
improve license command with cache and local path
2020-04-20 21:15:13 +02:00
Fabian Dill
860faf6ef5
unify versions
2020-04-20 14:50:49 +02:00
Fabian Dill
5a57519c32
Add count to missing command
...
Add a server's missing command
Fix password wasn't able to remove a set password
2020-04-20 11:47:50 +02:00
Fabian Dill
ecc2b03aed
keep track of last item checked time for clients
2020-04-20 04:36:56 +02:00
Fabian Dill
a4225d29e5
document Command Processor __call__ tree
2020-04-19 15:32:27 +02:00
Fabian Dill
60707f5196
fix methods with raw_text and optional argument
2020-04-19 15:31:15 +02:00
Fabian Dill
98a8af560a
rename get_connected_players_string
2020-04-19 14:51:48 +02:00
Fabian Dill
3840832f05
disconnect on send failure
2020-04-19 14:05:58 +02:00
Fabian Dill
24fce94766
Don't ignore disconnects when they happen during data transfer, instead properly disconnect the client
2020-04-19 13:16:12 +02:00
Fabian Dill
659bc0e177
no longer eat multiple spaces in commands
2020-04-19 03:24:27 +02:00
Fabian Dill
4f52a8db4c
player names should not contain spaces, but in case they do, this makes single-spaces work
2020-04-19 00:14:43 +02:00
Fabian Dill
8599c76647
Disallow spaces in generated names
2020-04-18 21:46:57 +02:00
Fabian Dill
ea53fff43e
allow kicking of players with spaces in name (permanent solution later)
2020-04-18 21:42:21 +02:00
Fabian Dill
a36d887122
add ability to disable forfeits
2020-04-16 15:40:31 +02:00
Fabian Dill
07da1c510b
re-allow spaces in passwords
2020-04-15 10:31:58 +02:00
Fabian Dill
ec528b916b
mark optional fields in brackets
2020-04-15 10:29:54 +02:00
Fabian Dill
d9e4bd1ab0
bumb network version for new command processing
2020-04-15 08:49:30 +02:00
Fabian Dill
e47b4d37ec
fix item name args handling
2020-04-15 05:01:17 +02:00
Fabian Dill
3b719220f8
move client stuff to new command processor
2020-04-14 20:26:22 +02:00
Fabian Dill
af78914d22
mvoe client stuff to new command processor
2020-04-14 20:22:42 +02:00
Fabian Dill
8b8e279015
server command processor
...
some commands were renamed at this opportunity
2020-04-13 11:26:50 +02:00
CaitSith2
959917bb13
Print host instead of ip address if host is specified. Also embed specified host into bmbp files. ( #57 )
2020-04-02 19:40:38 +02:00
Fabian Dill
8b02103b93
encode port into patch, also reverse defaulting order for server;
...
cmd args overwrite yaml now
2020-04-02 11:21:33 +02:00
CaitSith2
7b620e94f7
Add a way to show found items on client/server ( #52 )
...
* Add a way to show found items on client/server
* item show stuff:
use less ram and cpu, rename a few things
* Add UpdateTags server command.
Co-authored-by: Fabian Dill <fabian.dill@web.de>
2020-03-23 10:47:07 +01:00
Fabian Dill
963895e7d4
move server to new options function
2020-03-22 21:25:22 +01:00
Fabian Dill
1c7fa25031
move argument parsing to its own function
2020-03-22 21:23:39 +01:00
Fabian Dill
2a05b9cd72
move to promp_toolkit
2020-03-13 03:53:20 +01:00
Fabian Dill
2c8d4e550c
restruct countdown command
2020-03-11 23:08:16 +01:00
Fabian Dill
d220cc9cc9
make port forwarding non-default, as it makes more problems than it solves, apparently
2020-03-11 09:16:07 +01:00
Fabian Dill
8f37715541
show which players are missing, which is usually the important bit
2020-03-11 09:15:39 +01:00
Fabian Dill
a29f93045e
performance improvements and small adjustments
2020-03-10 00:38:29 +01:00
Chris Wilson
74c7eca301
Prevent crash when running MultiServer.py if host.yaml is not present ( #46 )
2020-03-08 05:43:15 +01:00
Fabian Dill
611f4d3fb2
no longer try patching if it's the wrong rom.
...
People ignore the warning.
2020-03-08 02:18:55 +01:00
Fabian Dill
25864314d1
my ' was eaten
2020-03-07 17:38:49 +01:00
Fabian Dill
1d84b126f6
use async await to close websocket server
2020-03-07 17:24:51 +01:00
Fabian Dill
b7814ca050
remove deprecated code
2020-03-07 17:08:50 +01:00
Fabian Dill
b8e8e3904a
add automatic port forwarding
2020-03-07 16:22:04 +01:00
Fabian Dill
d44acfdaaf
implement binary patching for multimystery (for now no gui/cli support)
2020-03-06 00:48:23 +01:00
Fabian Dill
9b82f220bb
improve some random things
2020-03-05 02:31:26 +01:00