Giter VIP home page Giter VIP logo

mushcode's Introduction

Volund's Core Code Suite

CONTACT INFO

Name: Volund

Email: [email protected]

PayPal: [email protected]

Patreon: https://www.patreon.com/volund

TERMS AND CONDITIONS

You may copy, distribute, and alter this softcode with the following restrictions:

  1. The softcode may not be used for commercial purposes, whether this be selling the softcode or using it on a pay-to-play game.
  2. Please link back to the original repository in a visible credits file or article somewhere on your game, and give credit where it is due. This is done by default with the Credits helpfile I provide!
  3. You need not release any altered versions of the softcode, but if you do it must be under identical terms.

Support is limited by my time and energy, but it's my goal to provide an easy-to-use and expansive suite of MUSHcode for all fans of the gaming platform to enjoy. If you have questions, bug reports, or feature requests, please use GitHub's Issues tab. Faiing that, email will do.

REQUIREMENTS

  • A reliable server host.
  • Access to a MySQL or MariaDB database. This MUST be a local server, preferably running on the same host as the game due to latency.
  • Decent computer administration skills.

REQUIREMENTS - PennMUSH

  • The latest version of PennMUSH. You can find PennMUSH at https://github.com/pennmush/pennmush
  • A WIZARD character to install and maintain the code. (do NOT use #1 for this except where specified!)
  • Access to #1's STARTUP - you'll need to get VERY creative without it.
  • Very specific mush.cnf settings. Those will be detailed below.

REQUIREMENTS - RhostMUSH

  • The latest version of RhostMUSH. You can find RhostMUSH at https://github.com/RhostMUSH/trunk
  • An IMMORTAL (bittype 6) character to install and maintain the code.
  • Specific netrhost.conf settings. Those will be detailed below.

FEATURES

  • CROSS-COMPATABILITY: Run a game in either PennMUSH or RhostMUSH.

  • MODULAR DESIGN: Install only the features you want. The CORE INSTALL is designed to get along with most existing code for well-established games.

  • MIGRATION SUPPORT: Previous versions of the code can be upgraded in-place with very little finnagling.

  • CONFIGURABILITY: Each code system has a /config menu for admins to customize its behavior, and often a player-equivalent. Most of how the game appears can be easily altered in one place.

  • ACCOUNT-BASED CHARACTER/ALTS MANAGEMENT: The Account, Alts, and Approval system offer plenty of support for binding characters together as alts and sharing data between them. The approval system is great for application-based games.

  • ANCESTOR PARENTS: Ancestor Things/Players/Rooms/Exits are included, laying an easily-tweaked foundation of room formatters, startup commands, and more.

  • BULLETIN BOARD: A high-quality replacement to the ever-popular Myrddin's BBS is provided. With SQL storage for its backend, it can store thousands of posts without trouble. The BBS integrates with the Group system as well, allowing each Group to have its own Boards in a separate namespace.

  • CHANNELS: For PennMUSH, its built-in @channels code has been greatly expanded upon with automated tools for configuring extra mogrifier options, displaying channels in a user-friendly style. Channels become easier to secure and manage. A duration-based 'muzzle' system can restrict troublemakers from channels.

  • CONVENIENCE: A plethora of player globals and conveniences, such as multi-descer, +beep, and +who.

  • MULTI-DESCER: A basic Multi-descer for saving and loading player @descs.

  • THEME: An +fclist/+theme system is provided for games with pre-genned characters and any need to track the availability or closure of feature characters. Themes can also have notes/text files attached for tracking important information.

  • DYNAMICDATA: Many commands utilize an information-retrieval API that's exposed for players and admin to use for designing their own displays using this codesuite's information.

  • FINGER: An incredibly powerful +finger and +oocfinger that can be configured via +gameconfig to be whatever a game owner wants it to be.

  • DISTRICTS: Building grids is simplified and better organized under the +District system, a manager for nestable ROOM PARENTS.

  • NAVIGATION: The +port and +meetme tools let players easily navigate even huge grids.

  • GROUP SYSTEM: A Groups/Guilds system handles representing all factions, organizations, guilds, and similar associations with a flexible rank structure, configurable permissions, softcoded IC and OOC channels, and a set of BBS boards specific to each group if the BBS is installed. Groups can be arranged and sorted into configurable Tiers, and Private Groups

  • HELP SYSTEM: The provided help system supports display categories and subfiles, as well as text-based searching. Everything is elaborately documented in a consistent, easy-to-read style. +help for players, +shelp for admin!

  • INFO SYSTEM: The +info system allows 'text files' to be created on players and optionally locked by admin, visible to all other players. +pinfo allows players to store private information only they and admin can see. Adding new categories/commands that use this infrastructure takes just two lines of code tweaks.

  • JOBS: Inspired by the ever-popular Anomaly Jobs, the Job Tracker handles trouble tickets/requests/issues across various Buckets, with flexible levels of access and administration.

  • LOCK-SIMPLIFICATION: With the Group system installed, systems like Jobs and the BBS switch to an incredible powerful and versatile Group-based lock system. It can generate Keystrings acceptable for @lock too.

  • PAGE EXTENSION: For PennMUSH, the Page Extension enables the reply command and provides an +ignore command to automatically block unwanted pagers.

  • PUEBLO/MXP SUPPORT: In PennMUSH, many systems create clickable output for ease of use.

  • RADIO: A flexible frequency-based +radio system allows players to manage their own softcoded 'channels.'

  • SCENESYS/POT: The Scene Management System is a very advanced scene scheduling and automatic logging system that uses SQL. Also included is a Pose Tracker (+pot) for local storage and convenience in roleplay.

  • FRIEND: A Friends/watch list lets players keep track of their friends and alert them when they connect or disconnect.

  • WHO AND WHERE: A Who and Where command is provided that integrates with many other systems. Don't like how Who looks? Change it with DynamicData strings!

  • LOGIN TRACKER: If installed, the Login Tracker records IP addresses and times of every login attempt, helping players and admin keep an eye out for suspicious activity.

  • WIZLIST: Don't like to give out Royalty or Wizard flags? Don't worry. Specify a private Admin group, and anyone on it is considered an admin in this code package. Only those of a customizable group rank or higher appear on the WizList!

  • IDLE SWEEPER:: Give it a destination, a run interval, and an idle limit, and this will keep the grid clear of idlers.

  • POLL SYSTEM: Hold global polls that can accept given options and allow for 'Other' field answers.

  • GUEST MANAGEMENT: Creating and keeping track of Guests is easy and fully explained. This code makes sure that Guests return to a specific room after disconnect, will have access to a guest channel, and allows them to adopt a temporary custom name.

  • VIRTUAL ROOMS: Don't like giving people @dig access? No problem. The Virtual Room parents allows a THING object to be turned into a veritable and highly stylish labyrinth of virtual rooms. Ambitious softcoders can do much to change their room's appearance.

  • CUSTOM COLORS: Players can alter most of the colors of things they see, from other character's names to groups to borders in commands like +who and +finger.

CONSIDERATIONS

  1. Although this code was designed with the hope that it will be easy to install on an established game, those are always case-by-case situations. I can make no guarantees. On PennMUSH, the Core Code Parent must be the Event Handler. On RhostMUSH, it must be the hook_obj. Without this, many things simply will not work.
  2. While many bugs were stomped in the creation of 3.0, more doubtlessly remain. Don't be afraid to send in GitHub issues if you find them.
  3. My code uses lots and lots of action lists. If you're a mostly function-based softcoder, you're on your own.

INSTALLATION GUIDE - SQL

  1. Obtain a SQL Database, Username, and Password. If you're on shared hosting, your provider should be able to give these to you.
  2. Run the Schema.sql file from this repository. The easiest way to do this would be putting it in your shell account, browsing to the file, and then typing mysql -u <username> -p <database> < Schema.sql replacing the appropriate fields.
  3. For PennMUSH, edit your mush.cnf so that the sql_* entries are appropriate. Note that MariaDB is counted as MySQL. Just use MySQL style if you're using MariaDB.
  • For RhostMUSH, the file you want is game/rhost_mysql.conf

INSTALLATION GUIDE - PennMUSH

  1. This readme assumes you at least know the basics of what you're doing by installing softcode and running a game, have a host, know how to get the game running and back it up, edit its files, etc. If you don't, I'd suggest checking out these fine people over at MUS*H, PennMUSH's development/social hangout establishment - most coders there could easily get you going in a flash.
  2. Examine your mush.cnf, make sure it has the following:
  • Event Handler and Ancestors will be handled by the #1 Startup - leave these alone.
  • function_invocation_limit 100000
  • queue_entry_cpu_time 4500
  • null_eq_zero yes
  • pueblo yes
  • Under the help section, comment out ahelp, anews, and news.
  • max_named_qregs 250
  1. Recommendations in mush.cnf: These are not NECESSARY, but are nice to have.
  • mud_name - set it to something short but respectable, it'll be showing up in my code a lot!
  • Uncomment all the dump_* messages and then clear dump_complete - this'll get rid of that annoying 'GAME: Save Complete.'
  • Instead of using the built-in txt files, create in-game objects and put the displays there? It'll protect them from Git updates and lets you use ANSI and softcode displays!
  • player_name_spaces yes
  • page_aliases yes
  • Under Flags section: You may also want to include ANSI and COLOR256 as a default but some clients might barf at this.
  1. In your restart file, uncomment and ensure your LANG=en_US to enable the expanded charset. This is required because many SQL queries utilize unusual characters as delimiters. Some server OSes might need the ISO version of en_US specified, typically: LANG=en_US.ISO-8859-1
  2. Logon to your code-WIZARD character who will own the code. Run the CORE 01 file from PennMUSH folder to create the Core Code Parent.
  3. Next, logon to #1 and run CORE 02.
  4. Return to your WIZARD character and run CORE 03, CORE 04, and CORE 05.
  5. @shutdown/reboot to make sure all of the STARTUPS are working.
  6. At this point, you can choose to install whatever you want.
  7. Use +gameconfig to configure all relevant settings as appropriate to your game.
  8. Have fun!

INSTALLATION GUIDE - RhostMUSH

This readme assumes you at least know the basics of what you're doing by installing softcode and running a game, have a host, know how to get the game running and back it up, edit its files, etc. If you don't, I'd suggest checking out these fine people over at the Rhost Dev server, rhostdev.mushpark.com 4201, or their Discord - most coders there could easily get you going in a flash.

Be sure you are saving the .conf files with UNIX linebreaks if you're on Windows! I recommend notepad++ for the job.

make confsource options:

  • B1: enable mysql support.
  • 29: Enable 150 to 250 qregs.
  • 7: Disable hardcoded +help

netrhost.conf options:

  • includenest 30
  • includecount 100
  • master_room

You also may want to set:

  • player_name_spaces 1

Steps:

  1. Logon to your Immortal character who will own the code. Run the CORE 01 file to create the Core Code Parent.
  2. Use @dig Master Room to create a Master Room/Global Room. You will have to set it in netrhost.conf to have the setting stick, but until you reboot you can use @admin master_room=<dbref>
  3. Run CORE 02. Unlike Penn this will be run off the same character, not #1.
  4. Run CORE 03, CORE 04, and CORE 05
  5. @reboot to make sure all of the STARTUPS are working.

Why does it not need a lot of modifications to netrhost.conf? Because the CORE 02 startup does all of that! Handy!

  1. At this point, you can choose to install whatever you want. HOWEVER, do note that the helpfiles for each system are included in the system's file. If you want to use my Help System, install it FIRST. This will ensure the helpfiles are entered as the systems are installed.

  2. Use +gameconfig to configure all relevant settings as appropriate to your game.

  3. Have fun!

mushcode's People

Stargazers

 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

mushcode's Issues

Installing Volund3.0

I am getting a lot of sql syntax errors. the help system isn't displaying anything and when I check the sql db it's all there, but it can't read it. It tells me separator error.

If you would like to look at what I've installed so far, shoot me an email: [email protected]

SQL TRG`INSTALL not installing sql tables.

u(SQL`FORMAT,%0,%1,%2,%3,%4,%5,%6,%7,%8,%9) => #-1 FUNCTION (REGEDITALLI) EXPECTS AT LEAST 3 ARGUMENTS BUT GOT 2

This is the issue. I am not sure what the fix would be here, looks like the updated code does not have the correct formatting in the SQL`FORMAT function call.

Error In SQL Code

I think the error is in CALL`2 on the CCP. When trying to add a sub file to any +help/+shelp/+news I get the following error.

-==- ERROR: #-1 SQL ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

Code Names are Mismatched

So, it seems like many things aren't matching up.

Your startup for one called StartupExtra`, this code doesn't exist in CORE 02. You also never call the startup's on the MCO. Is that intentional?

Your code in +gameconfig calls INCGETSWITCH, there is no INCGETSWITCH. There is an INCGET` which I assume is what it should be.

Your code for the player configuartion system (+config) calls getswitch also, but actually there isn't even a INCGET. Also not an INCGETSWITCH. I think some things got removed from the code on github?

As it is nothing works on a fresh install.

Login Issue?

PLAYERCONNECT [#2]: @attach %!/INCCHECKPC=%0,1;th u(call3,volp_login_record,0,%q<t1id>,1,'[sqlescape(get(%0/LASTIP))]') PLAYERCONNECTFAIL [#2]: @Attach %!/INCCHECKPC=%0,1;th u(call3,volp_login_record,0,%q,0,'[sqlescape(get(%0/LASTIP))]')

There is no VOLP_LOGIN_RECORD table in the SQL db. So, I think this is creating an issue.

+XP Types

There is no HLP`TYPES as referenced in the +help +XP file. There is also no documentation on how to 'add' or 'remove' xp types from the system.

VOL_functions not working

I'm not sure how the code is built, but after getting SQL to work (finally), I ran every CORE file as per the instructions, only to get this.

*look*ing at a room nets this : 
#-1 FUNCTION (VOL_CHOOSEGAME) NOT FOUNDvol_header(Master Room(#2),,1,,,v(DISTCOLOR`BORDER),v(DISTCOLOR`HEADER_STAR),v(DISTCOLOR`HEADER_TEXT))
This is the master room. Any exit in here is considered global. The same is true for objects with $-commands placed here.
vol_separator(Players,,,,,v(DISTCOLOR`BORDER),v(DISTCOLOR`HEADER_STAR),v(DISTCOLOR`HEADER_TEXT))
#-1 INVALID ANSI DEFINITION: vol_color(#3,COLUMN_NAMES) Name               
vol_mxpmenu(vol_get
moniker(vol_sortnam
e(lvplayers(#2))),l
ook #-1 NO SUCH    
OBJECT VISIBLE)    
vol_separator(Things,,,,,v(DISTCOLOR`BORDER),v(DISTCOLOR`HEADER_STAR),v(DISTCOLOR`HEADER_TEXT))
#-1 INVALID ANSI DEFINITION: vol_color(#3,COLUMN_NAMES) Name                                     Owner                        DBref   
vol_pueblize(moniker(vol_sortname(lvthin vol_pueblize(name(owner(vol_ can't   
gs(#2))),look #-1 NO SUCH OBJECT         sortname(lvthings(#2)))),+fi         
VISIBLE)                                 nger #-1 NO SUCH OBJECT              
                                         VISIBLE)                             
vol_subheader(,,,,,v(DISTCOLOR`BORDER),v(DISTCOLOR`HEADER_STAR),v(DISTCOLOR`HEADER_TEXT))

and using +help on any subject :

================<* +help: #-1 SEPARATOR MUST BE ONE CHARACTER *>================
#-1 SEPARATOR MUST BE ONE CHARACTER
==================================< Subfiles >==================================
	To read subfiles, use '+help #-1 SEPARATOR MUST BE ONE CHARACTER/<file>'
#-1 SEPARATOR MUST BE ONE CHARACTER  
--------------------------------------------------------------------------------
-=<HELP>=- SQL ERROR - UPDATE`READ: #-1 SQL ERROR: Incorrect integer value: '' for column `mush`.`vol_help_read`.`character_id` at row 1

I got the feeling the SQL error might be related to the other errors though, but not sure.

Interwiki prefix?

This might be another easily answered question: when I try to follow the scenesys installation steps, I hit an obstacle when it comes to importing the provided XML file. Specifically, Mediawiki throws an error: "Import failed: No interwiki prefix was supplied"

I'll admit having almost no experience with interwiki linking, so any advice in this regard would be awesome. Thanks!

Request: Sub-Districts

Is there anyway to get a system for sub-districts that are tied to the core districts. So we can create a regional area?

Ancestor Room Exit Format

As part of the Ancestor Room core, there's this bit of code:

&EXITFORMATDEFAULT [u(cobj,ancestor_room)]=[u(SEPARATOR,Exits)]%R[null(if(u(setr(lvexits,lvexits(%!)),iter(exitalias exitname exitwrap exitdest,u(setq,col%i0,u(strfirstof,v(DISTCOLOR%i0),vol_color(%#,ROOM,%i0))))))][table(iter(vol_sortorder(vol_sortname(%q<lvexits>)),u(RENDER_EXIT,%i0,37),%b,|),37,width(%#),|)]%R[u(SUBHEADER)]

This part here:

u(setr(lvexits,lvexits(%!))

should probably be

setr(lvexits,lvexits(%!))

None of the exits were actually displaying for me until I took the u() out of the mix.

regexp error - unescaped hyphen in capnames()

There is a regex error showing up in +help and related systems.

#-1 REGEXP ERROR: invalid range in character class

It traces back to an unescaped - in global function capnames. Patch:

&GFNCAPNAMES u(gfo)=regeditall(lcstr(%0),(?<=[_/\-\s]|^)([a-z]),capstr($1))`

CCP a runaway object?

I've tried to get this suite set up a few times now (on a few different Digital Ocean Ubuntu droplet versions), and following the directions, I seem to reliably run into a few problems. These all occur after the initial core components are installed and I'm asked to @shutdown/reboot to get the startups going:

  1. The CCP object is halted on a @shutdown/reboot, identified as a runaway object.
  2. +help doesn't actually show the menu or any individual files, instead giving me a 'separator must be one character' error and a SQL-specific 'incorrect integer value' error.

Maybe I'm overlooking something obvious, which would be great to hear. But I'm not sure what's going on.

Not Quite Sure if this is the Place BUT

How to integrate AnomalyJobs with your Codesuite? I know there's a patch, but... there's not any real help on how it integrates, and quoting it into my MUSH doesn't make it work. (I get a lot of 'I can't see that here', etc.)

Am I doing something wrong or? is there some more steps I need?

No such attribute response from core 02

Full response
Nuadha is the name of user 1

Nuadha/STARTUP - Set.
Nuadha - Triggered.
Core Code Parent <CCP> - Triggered.
Parent changed.
Name       : @COMMAND (Enabled)
Flags      : Eqsplit
Lock       : #TRUE
Switches   : ADD, ALIAS, CLONE, DELETE, DISABLE, ENABLE, EQSPLIT, LSARGS, NOEVAL, NOPARSE, OFF, ON, QUIET, RESTRICT, RSARGS, RSNOPARSE
Leftside   : 
Rightside  : 
Unable to set alias.
Unable to set alias.
Unable to set alias.
Option set but not saved (Saves disabled.)
Option set but not saved (Saves disabled.)
Option set but not saved (Saves disabled.)
Option set but not saved (Saves disabled.)
Option set but not saved (Saves disabled.)
Option set but not saved (Saves disabled.)
No such attribute.

-=<SHELP>=- ERROR: #-1 FUNCTION DISABLED

I have corrected an error with what seemed to be a standard display issue in the +help system by changing my locale file.

But, I simply can't add help files to either +shelp or +help. I get the function disabled error.

I'm a total novice, so I'm sure it is something simple that I've overlooked. I'd appreciate any guidance on this.

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.