Modding
Anyone is allowed to create modifications to prometheus code which they can share or even sell, as long as these requirements are met:
- The person sharing/selling the modification has purchases Prometheus.
- Amount of files changed is the minimal possible(Only files that MUST be modified should be modified and shared, adding unnecessary stuff to a file only for it to be shareable is also violation of this requirement)
- You must state on the modification page that it is a derivative work of Prometheus, and also link to Prometheus’ addon page
- You must also state that adding the modification to Prometheus will mean that any errors or problems involving stuff the modification changes will NOT be helped with by the Prometheus support team.
- Your modification must be freely accessible by the Prometheus support team(Can be done after requested by us)
- The modification doesn’t contain Prometheus files from any of these files/folders: /inc/functions.php (you can put any class files in inc/classes and run them from any file loaded elsewhere, they autoload) - /cache/* - /vendor/* - /cert/* - /inc/lib/* - /mods/* - install.php - ipn.php - paymentwall.php - inc/classes/verification.class.php - inc/classes/paymentwall.class.php - inc/classes/stripe.class.php - inc/classes/update.class.php - inc/classes/cache.class.php - inc/classes/mods.class.php
- No modifications regarding license verification
- You need to inform the user that is downloading your modification of the files modified BEFORE they are required to pay(So they can check if any other modifications they already have, have modified a file yours has as well)
- The modification MUST include a modification info file located in “mods” folder, example of syntax can be found in examplemod.txt (Make the filename as unique as you can)
You are allowed to include new files/folders of your own to any folder as long as they do not replace any of Prometheus files/folders. This includes /vendor, but only through the use of composer.
Modding info for Lua side:
Usable hooks:
PrometheusAddActions
Arguments: none
Add any custom actions inside this hook using Prometheus.AddAction function(Described lower)
PrometheusDBConnected
Arguments: none
Ran when Prometheus has just connected to the database
PrometheusDBInitialized
Arguments: none
Ran when Prometheus has fully connected to the database and has run any initializing queries
PrometheusInitialized
Arguments: none
Ran when Prometheus has fully loaded(All it’s functions/values have been created)
PrometheusRunningAction
Arguments:
Table Table of players that this action will run on(Can contain SteamID strings or Player Objects)
String Name of the action
Table Table of values for that action
Table Table of action data(steam64 of person, active status, expire time, etc)
Ran when Prometheus is running an action(For any custom new actions, use PrometheusAddActions hook instead, this is for informational purposes)
Usable functions:
Prometheus.AddAction
Arguments:
Table Table that contains these values:
name => String Name of the action
runfunc => Function Function that will run when the action is bought(Arguments are: Player object, Table of values for that action, Table of action data)
endfunc => Function Functions that will run when the action has expired or deactivated(Arguments are: Player object, Table of values for that action, Table of action data)
Use this to create your own custom actions(Keep in mind you need to also mod web side to be able to save/buy that action).
Examples of actions can be found in actions.lua file.