TsuserverMoS - A Python-based server for Attorney Online,

Overview

tsuserverMoS

A Python-based server for Attorney Online, forked from RealKaiser/tsuserverCC

Requires Python 3.7+ and PyYAML.

Changes/additions from tsuserver3

  • Testimony recording/playback system,
  • Greatly extended support for custom content,
  • More options for area management, including:
    • Accessible hub system, hubs with subareas without need for seperate area lists.
    • Storing/loading hubs up to a 100 areas, complete with connections and music lists,
    • On-the-fly area renaming, creation, and destruction,
    • Password locks,
    • Ability to connect areas via 'exits,'
    • and playercount hiding.
  • Serverside notepads,
  • Additional moderation features,
  • Add music on the fly, and have it appear on the server's music list, (per area/hub basis)
  • A category-based music shuffle system,
  • Fully-functional(?) party system with Main Game features inbuilt.

How to use

  • Install the latest version of Python. Python 2 will not work, as tsuserver3 depends on async/await, which can only be found on Python 3.5 and newer.
    • If your system supports it, it is recommended that you use a separate virtual environment, such as Anaconda for Windows, or virtualenv for everyone else (it runs itself using Python).
  • Open Command Prompt or your terminal, and change to the directory where you downloaded tsuserver3 to. You can do this in two ways:
    • Go up one folder above the tsuserver3 folder, Shift + right click the tsuserver3 folder, and click Open command window here. This is the easiest method.
    • Copy the path of the tsuserver3 folder, open the terminal, and type in cd "[paste here]", excluding the brackes, but including the quotation marks if the path contains spaces.
  • To install PyYAML and dependencies, type in the following:
    python -m pip install --user -r requirements.txt
    If you are using Windows and have both Python 2 and 3 installed, you may do the following:
    py -3 -m pip install --user -r requirements.txt
    This operation should not require administrator privileges, unless you decide to remove the --user option.
  • Rename config_sample to config and edit the values to your liking. Be sure to check your YAML file for syntax errors. Use spaces only; do not use tabs.
  • Run by either double-clicking start_server.py or typing in python start_server.py, or py -3 start_server.py if you use both Python 2 and 3. It is normal to not see any output once you start the server.
    • To stop the server, press Ctrl+C multiple times.

Commands

User Commands

  • help
    • Links to this readme
  • g "message"
    • Sends a serverwide message
  • toggleglobal
    • Toggles global on and off
  • need "message"
    • Sends a serverwide advert
  • toggleadverts
    • Toggles adverts on and off
  • area "area name/abbreviation" "password"
    • Displays all hubs when blank, swaps to area with the specified abbreviation
    • Specify a password to join a password locked area. (If the password matches. Obviously.)
  • getarea
    • Shows the current characters in your area
    • Also works as /ga.
  • getareas
    • Shows all characters in all areas, does not show a hub's subareas. If in hub, will only show lobby and the current hub.
    • Also works as /gas.
  • gethubs
    • Same as getareas, but will always show as if not currently in hub.
  • mods
    • Same as getareas, but only shows moderators
  • doc "url"
    • Gives the doc url if blank, updates the doc url
  • cleardoc
    • Clears the doc url
  • status "status"
    • Shows current areas status if blank, updates the status
    • Statuses: 'idle', 'rp', 'casing', 'looking-for-players'/'lfp', 'recess', 'gaming'
  • pm "target" "Message"
    • Currently non-functional
  • pmmute
    • Disables all incoming PMs
  • charselect
    • Puts you back to char select screen
  • reload
    • Reloads your character ini
  • switch "character"
    • Quick switch to a character
  • randomchar
    • Randomly chooses a character
  • pos "position"
    • Changes your position in the area
    • Positions: Any (provided the background has it, otherwise will default to 'wit')
  • bg "background"
    • Changes the current background, if not an official background, server will look for it in background/custom
  • currentbg
    • Gives user the name of the area's current background.
  • roll "max"
    • Rolls a 1D6 if blank
  • coinflip
    • Flips a coin
  • currentmusic / music
    • Displays the current music
  • playrandom
    • Plays a random track from the server music list.
  • shuffle "category"
    • Plays a random track, then plays another random track afterwards, etc.
    • Will only play from a single category if one is specified.
    • Shuffle will continue in original area if client switches areas, but will eventually stop once the client disconnects.
  • eviswap
    • Swaps and evidence.
  • addcustom "link"
    • Allows user to set a link for the custom character they are currently using.
  • customlist
    • Shows a list of links and the respective custom.
  • removecustom
    • Removes the link for user's custom from the list.
  • clearcustomlist
    • Clears the custom list.
  • notepad "note"
    • Adds note to user's notepad, or displays the current notepad if no note is given.
    • Only persists as long as user's client is connected to server.
  • clearnotepad
    • Clears user's notepad.
  • connectlist
    • Shows all 'exits' for the current area.
  • autopass
    • Toggles autopass. When enabled, an OOC broadcast will sound when the user switches areas.
    • This broadcast is visible in the area the user leaves and the area they join and details which area the user is going to or coming from, respectively.
  • musiclist
    • View the area's current music list.
  • follow "id"
    • Follow another user. If that user changes areas, the follower will also change areas.
    • Can be used with no arguments to check who the user is following.
    • Works with autopass.
  • unfollow
    • Stop following.
  • followers
    • Check who is following you. Will also show your followers' followers.
  • followable "new"
    • Toggle whether users can follow you.
    • Use with argument "new" to disallow new followers without losing current followers.
  • time
    • Show the current time and date according to the server's time.
  • timer "start/stop/continue"
    • A stopwatch. Use without arguments to check current timer without stopping it.
    • "start" will start a new timer, "stop" will stop the timer, and "continue" will start the timer where it was last stopped.
  • serverpoll "yay/nay"
    • View or vote on the current server poll.
  • digitalroot "number"
    • Calculate the digital root of a given number.
  • knock "area abbreviation"
    • Broadcast a message in the selected area that the user is knocking on their door.
  • cm
    • Makes you a CM of the current area.
  • visible
    • Toggles whether you will speak with a 'blank' emote.
  • areapair "left/right/middle"
    • Area-pairs you. If you are to the right, you will "pair" with anyone on the left in your position.
  • call "id or no argument"
    • Try to call someone or check who you're calling with.
  • acceptcall
    • Accept an incoming call.
  • endcall
    • End an ongoing call or reject an incoming one.
  • holdcall
    • Holds your end of the ongoing call so you can speak to people outside the call.

Party Commands

  • party
    • Shows the user's current party.
    • If the user is not in a party, shows all parties on the server.
    • If the user is the leader of their party, shows party members' roles.
  • parties
    • Shows all parties on the server.
  • createparty "name"
    • Creates a party and makes user the leader.
    • Created party will be private/locked by default.
  • partyinvite "id"
    • Invites a user to your party. Party must be locked.
  • joinparty "party ID"
    • Join a party. Party must either be public or the user must be invited.
  • leaveparty
    • Leave the current party.
  • p "message"
    • Same as g, but only visible to other members of your party.
  • partynote "note"
    • Add a note to the party notepad.
    • Show the party notepad instead if no arguments are given.
  • mgvote "subject"
    • Vote on a subject. If user has extra 'voting power,' they may vote more than once.
    • If used by party leader, show current vote tally.

Party Leader-only Commands

  • addrole "id" "role"
    • Adds a role a party member.
  • rolesvisible
    • Toggles whether the roles are visible for everyone in the party.
  • unlockparty
    • Makes current party public.
  • lockparty
    • Makes current party private.
  • clearpartynote
    • Clear the party notepad.
  • partykick "id"
    • Kick the specified user from your party.
  • destroyparty
    • Destroys the current party.
  • mgroles "opt. custom roles"
    • If there enough members in your party, randomly assign party members, excluding the leader, Main Game roles.
    • For custom roles, syntax is as above. e.g. /mgroles Imitator Wildcard Scapegoat
  • clearroles
    • Clears all party members' roles, and resets their 'voting power'.
  • startmgvote "subjects"
    • Start a party vote on subjects provided, e.g. /startmgvote Sara Sou Keiji. Resets everyone's 'voting power'.
  • revealmgvote
    • Post the tally in current area's OOC and restore 'voting power'.
  • mgvp "id" "+/-"
    • Check a party member's 'voting power' or increase/decrease it.
    • Default voting power is 0 (one vote) except for the Sacrifice role, which is 1 (two votes).

CM Commands

  • hide "ID/*"
    • Hides the target from /getarea and playercount.
  • unhide "ID/*"
    • Unhides the target from /getarea and playercount, can be used by non-CM if no arguments are given.
  • allowmusic
    • Toggles whether non-CMs are allowed to play music.
  • narrator
    • Toggles whether you appear as if you are the Narrator character.
  • lock "password"
    • Locks your area, preventing anyone outside of the invite list from joining.
    • Optionally, specify a password to be used with area.
  • unlock
    • Unlocks your area.
  • iclock
    • If area is unlocked, make area spectatable and disallow everyone but CMs from speaking IC.
    • If area is locked, disallow everyone from speaking without making area spectatable.
  • areakick "ID/*" [area]
    • Kicks target and all of their multi-accs from your area to area 0 or specified [area] and removes them from invite-list should the area be locked.
    • Use "*" to kick everyone who isn't a CM or you.
  • invite "ID"
    • Adds target to the invite list of your area.
  • uninvite "ID"
    • Removes target from invite list of your area.
  • forcepos "position" [target]
    • Forcibly change [target]'s position. Leave blank to affect everyone in area.
    • Positions: 'def', 'pro', 'hld', 'hlp', 'jud', 'wit'
  • connect "area ID"
    • Sets an 'exit' for the current area. Clients can only leave the area through said 'exits'.
  • biconnect "area ID"
    • Same as connect, but two-way.
  • disconnect "area ID"
    • Removes an 'exit' from the current area.
  • bidisconnect "area ID"
    • Same as disconnect, but two-way.
  • clearconnect
    • Clears all 'exits' for the current area.
  • play "song file name incl. extension" "length in seconds"
    • Plays a song from music/custom.
    • Optionally, specify the length in seconds for the song to loop server-side.
  • addmusic "song file name incl. extension" "length in seconds"
    • Adds tracks to the area music list. Tracks must be located in music/custom.
  • addcategory "name"
    • Adds a category to the area's music list.
  • clearmusiclist
    • Clear the current area's music list.
  • storemlist "name"
    • Store a music list on the server with the specified name.
  • loadmlist "name"
    • Load a stored music list from the server with the specified name.
  • playl "track number"
    • Plays the specified track from the area's music list. Will loop server-side according to the length provided by addmlist.
  • hidecount
    • Hides the playercount for the current area.
    • Note: player count is only hidden from clients outside the area.
  • rename "new name"
    • Rename the current area, must be a subarea in a hub.
  • removearea
    • Destroy the current area, must be a subarea in a hub.
  • savehub "name"
    • Saves a hub with the specified name.
  • loadhub "name"
    • Loads a previously saved hub with the specified name.
  • clearhub
    • Clears a hub of all it's areas.
  • *hubstatus "status"
    • Same as status, but affects all areas in a hub.
  • shouts
    • Toggle shouts in the current area.
  • hide "id"
    • Hide the specified client from /getarea and the server playercount.
    • Use * instead of an ID to hide all players in the area.
  • unhide "id"
    • Unhide the specified client.
    • Use * instead of an ID to unhide all players in the area.
    • This can be used by non-CMs with no arguments to unhide themselves.
  • poslock "pos/clear"
    • Allow only the specified position(s) to be used.
    • Use with no arguments to what positions the area is locked.
    • Using "clear" as an argument clears the poslock.
  • ambiance
    • Toggles 'ambiance' or server-side looping. While on, allows new clients joining an area to hear a set song once it loops without needing to play it themselves.
  • timer [+/-][time] | start | | hide
    • Manage a countdown timer in the current area. Note that timer of ID 0 is global. All other timer IDs are local to the area.

Testimony Recording

  • A new feature in tsuserverCC - you can now record testimonies and play them back with automatic formatting!
  • You can now record your testimonies by putting in IC //[Your Testimony Title]. Formatting works just as normal, and this will automatically do the WT woosh.
  • While recording, you can add new statements by putting in IC +[Your Statement]. These will show up as if you're just normally testifying for the first time.
    • If you're paired and want your partner to have a statement, have the pair add the statement instead. (Make sure they are also a CM.)
  • Once you're done recording your testimony, just do /end. After this, you can do /// in IC to make the title appear again, this time with a CE woosh.
  • After all that, anyone in the area can say > in IC to move to the next statement or < for the previous statement, = is also available to use to see the current statement again.
  • All the statements will be automatically displayed in green.
  • The CM can at this point also add 'substatements' by using +again, and then can also amend the current statement by using &[amended statement] in OOC.
  • If you want to clear the testimony, use /cleartestimony in OOC. For viewing the current testimony, simply do /testimony in OOC.

Mod Commands

  • login
    • Logs in as a mod or admin depending on set privileges with /addmod.
  • gm "Message"
    • Sends a serverwide message with mod tag
  • lm "Message"
    • Sends an area OOC message with mod tag
  • judgelog
    • Displays the last judge actions in the current area
  • announce "Message"
    • Sends a serverwide announcement
  • charselect "ID"
    • Kicks a player back to the character select screen. If no ID was entered then target yourself.
  • kick "IPID"
    • Kicks the targets with this IPID.
  • ban "IPID" "length"
    • Bans the specified IPID for the specified length of time. If no time is specified, ban will default to six hours.
    • All arguments must be wrapped in double quotes.
    • Length syntax is as follows: "[num] [seconds/minutes/hours/days/weeks] | perma".
  • banhdid "IPID" "length"
    • "Old-style" HDID ban. This will ban both the specified IPID and the associated HDID.
    • All arguments must be wrapped in double quotes.
    • Length syntax is the same as ||ban||.
  • unban "ban ID"
    • Unbans the specified ban ID.
  • mute "Target"
    • Mutes the target from all IC actions, targets IPID.
  • unmute "Target","all"
    • Unmutes the target, "all" will unmute all muted clients
  • oocmute "Target"
    • Mutes the target from all OOC actions via ID.
  • oocunmute "Target"
    • Unmutes the target.
  • bans
    • Returns the five most recent bans.
  • baninfo "ban id" "['ban_id'|'ipid'|'hdid']"
    • Returns requested information about the specified Ban ID from the database.
  • permit "id"
    • Toggles granting specified client special permissions.
  • setserverpoll "poll"
    • Set the current server poll, and announce it globally.
  • setserverpoll "poll"
    • Clear the current server poll, and announce it globally.
  • bglock
    • Toggles the background lock in the current area
  • disemvowel "Target"
    • Removes the vowels from everything said by the target
  • undisemvowel "Target"
    • Lifts the disemvowel curse from the target
  • blockdj "target"
    • Mutes the target from changing music.
  • unblockdj "target"
    • Undo previous command.
  • blockwtce "target"
    • Blocks the target from using Witness Testimony/Cross Examination signs.
  • unblockwtce "target"
    • Undo previous command.
  • evidencemod
    • Changes evidence_mod in this area. Possible values: FFA, CM, HiddenCM, Mods
      • FFA
        • Everyone can add, edit and remove evidence.
      • Mods
        • Only moderators can add, edit or remove evidence.
      • CM
        • Only CM (case-maker, look at /cm for more info) or moderators can add, edit or remove evidence.
      • HiddenCM
        • Same as CM, but every evidence has a preset "owner's position" which can be set by a CM or moderator, such that only one side/position of the court may see the evidence. After presenting the evidence, the position of the evidence changes to "all." Possible positions include def (defense), pro (prosecutor), wit (witness), jud (judge), pos (hidden from everyone), and all (everyone can see the evidence).
  • allowiniswap
    • Toggle allow_iniswap var in this area.
    • Even if iniswap at all is forbidden you can configure all-time allowed iniswaps in iniswaps.yaml
  • ghost
    • Toggles whether the moderator is visible in /getarea and playercount.
  • unmod
    • Revokes moderator credentials from the user.

Admin Commands

  • addmod "ID" "name" "admin (optional for admin status)"
    • Adds a mod/admin's credentials so they can use /login.
  • removemod "name"
    • Revokes a mod/admin's credentials based on the name they were added with.

License

This server is licensed under the AGPLv3 license. In short, if you use a modified version of tsuserverCC, you must distribute its source licensed under the AGPLv3 as well, and notify your users where the modified source may be found. The main difference between the AGPL and the GPL is that for the AGPL, network use counts as distribution. If you do not accept these terms, you should use serverD, which uses GPL rather than AGPL.

See the LICENSE file for more information.

This is simple script that changes the config register of a cisco router over serial so that you can reset the password

Cisco-router-config-bypass-tool- This is simple script that changes the config register of a cisco router over serial so that you can bypass the confi

James 1 Jan 02, 2022
A Python script that alerts via SMS when a stock is reaching an inflection point

TradeAlert Not sure what this will ultimately become, but for now, its a Python script that alerts via SMS when a stock is reaching an inflection poin

3 Feb 22, 2022
A Python framework for interacting with Solana's Pyth network.

Pyth Network A basic Python framework for reading and decoding data regarding the Pyth network

1 Nov 29, 2021
Top server mcpe Indonesia!

server_mcpe Top server mcpe Indonesia! install pkg install python pkg install git git clone https://github.com/Latip176/server_mcpe cd server_mcpe pip

Muhammad Latif Harkat 2 Jul 17, 2022
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.

NetworkX 12k Jan 02, 2023
A Python library to ease the integration with the Beem Africa (SMS, AIRTIME, OTP, 2WAY-SMS, BPAY, USSD)

python-client A Python library to easy the integration with the Beem Africa SMS Gateway Features to be Implemented Airtime OTP SMS Two way SMS USSD Bp

Beem Africa 24 Oct 29, 2022
A pure python implementation of multicast DNS service discovery

python-zeroconf Documentation. This is fork of pyzeroconf, Multicast DNS Service Discovery for Python, originally by Paul Scott-Murphy (https://github

Jakub Stasiak 483 Dec 29, 2022
Rufus is a Dos tool written in Python3.

🦎 Rufus 🦎 Rufus is a simple but powerful Denial of Service tool written in Python3. The type of the Dos attack is TCP Flood, the power of the attack

Billy 88 Dec 20, 2022
This will generate a very basic DHCP config with use of PHPIPAM systems.

phpipam-dhcp-config-generator This will generate a very basic DHCP config with use of PHPIPAM systems. Requirements PHPIPAM Custom Fields domain_name

1 Oct 24, 2021
A Python server and client app that tracks player session times and server status

MC Outpost A Python server and client application that tracks player session times and server status About MC Outpost provides a session graph and ser

Grant Scrits 0 Jul 23, 2021
A simple implementation of an RPC toolkit

Simple RPC With Raw Sockets Repository for the Data network course project: Introduction In this project, you will attempt to code a simple implementa

Milad Samimifar 1 Mar 25, 2022
Whoisss is a website information gatharing Tool.

Whoisss Whoisss is a website information gatharing Tool. You can cse it to collect information about website. Usage apt-get update apt-get upgrade pkg

Md. Nur habib 2 Jan 23, 2022
Learn how modern web applications and microservice architecture work as you complete a creative assignment

Micro-service Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ микросСрвиса ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ соврСмСнных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π² процСссС Π²

Π“Ρ€ΠΈΠ³ΠΎΡ€ΠΈΠΉ ВСрховский 1 Dec 19, 2021
Apple Store Stock Notifier monitors the availability of selected Apple devices in selected Apple stores, and sends you a notification when devices are available!

Apple Store Stock Notifier This software will immediately send you a notification via Telegram when one of your coveted Apple Devices is available in

Floris-Jan Willemsen 25 Dec 05, 2022
Real-time text-editor using python tcp socket

Real-time text-editor using python tcp socket This project does not need any external libraries so you don't need to use virtual environments. All you

MatiYo 3 Aug 05, 2022
(A)sync client for sms.ru with pydantic responses

🚧 aioSMSru Send SMS Check SMS status Get SMS cost Get balance Get limit Get free limit Get my senders Check login/password Add to stoplist Remove fro

Eugene Mayer 4 Jul 03, 2022
Python code that get the name and ip address of a computer/laptop

IP Address This is a python code that provides the name and the internet protocol address of the computer. You need to install socket pip install sock

CODE 2 Feb 21, 2022
Monitoring plugin to check network interfaces with Icinga, Nagios and other compatible monitoring solutions

check_network_interface - Monitor network interfaces This is a monitoring plugin for Icinga, Nagios and other compatible monitoring solutions to check

DinoTools 3 Nov 15, 2022
This is a small python code that I use with my NAS server connected to Plex

Spotifarr This is a small python code that I use with my NAS server connected to Plex I didn't appreciate how Lidarr works because it downloads a full

Automator 35 Oct 04, 2022
Process incoming JSON-RPC requests in Python

August 16, 2021: Version 5 has been released. Read about the changes in version 5, or read the full documentation. Version 5 is for Python 3.8+ only.

Exploding Labs 156 Dec 31, 2022