Difference between revisions of "Modding"

From PrometheusIPN Wiki
Jump to: navigation, search
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
=== Web ===
 
=== Web ===
 
Anyone is allowed to create modifications to prometheus code which they can share or even sell, as long as these requirements are met:
 
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.
+
* The person sharing/selling the modification must have purchased 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)
 
* 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 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.
 
* 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)
 
* 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:   (you can put any class files in inc/classes and run them from any file loaded elsewhere, they autoload) {| class="wikitable" !File/Folder |- |/inc/functions.php |- |/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 |}
+
* '''The modification can't contain Prometheus files from any of these files/folders:''' (you can put any class files in inc/classes and run them from any file loaded elsewhere, they autoload)
 +
** /inc/functions.php
 +
** /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
 
* 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)
 
* 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)
 
* 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.
 
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.
 
 
=== Lua ===
 
=== Lua ===
Usable hooks:
+
==== Usable hooks: ====
 
+
* PrometheusAddActions
PrometheusAddActions
+
** Arguments: none
 
+
** Add any custom actions inside this hook using Prometheus.AddAction function(Described lower)
Arguments: none
+
* PrometheusDBConnected
 
+
** Arguments: none
Add any custom actions inside this hook using Prometheus.AddAction function(Described lower)
+
** Ran when Prometheus has just connected to the database
 
+
* PrometheusDBInitialized
PrometheusDBConnected
+
** Arguments: none
 
+
** Ran when Prometheus has fully connected to the database and has run any initializing queries
Arguments: none
+
* PrometheusInitialized
 
+
** Arguments: none
Ran when Prometheus has just connected to the database
+
** Ran when Prometheus has fully loaded(All it’s functions/values have been created)
 
+
* PrometheusRunningAction
PrometheusDBInitialized
+
** Arguments:
 
+
*** Table     Table of players that this action will run on(Can contain SteamID strings or Player Objects)
Arguments: none
+
*** String     Name of the action
 
+
*** Table     Table of values for that action
Ran when Prometheus has fully connected to the database and has run any initializing queries
+
*** 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)
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)
+
==== 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.
  
Ran when Prometheus is running an action(For any custom new actions, use PrometheusAddActions hook instead, this is for informational purposes)
+
'''Preferably don't modify Prometheus Lua files.'''
  
Usable functions:
+
Rather create your own separate add-on that uses the hooks/function overwrites to modify Prometheus Lua side, while not modifying files is almost impossible in PHP, in Lua it's pretty easy.
  
Prometheus.AddAction
+
Pretty much anything you would need to do can be acquired by using the hooks, if that isn't enough, you can use function overwrites, example of tapping into a function called "testFunc":
  
Arguments:
+
local oldFunc = testFunc
  
Table Table that contains these values:
+
testFunc = function(...)
  
name  => String Name of the action
+
args = {...}
  
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)
+
-- Do anything here with the arguments, original function will still run by running the oldFunc(...)
  
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)
+
oldFunc(...)
  
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).
+
end
 +
{| class="wikitable" !File / Folder
 +
|- | / inc functions.php |- cache * vendor cert lib mods |install.php |ipn.php |paymentwall.php |inc classes verification.class.php paymentwall.class.php stripe.class.php update.class.php cache.class.php mods.class.php |}
  
Examples of actions can be found in actions.lua file.
+
|}

Latest revision as of 20:25, 21 August 2017

Web

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 must have purchased 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 can't contain Prometheus files from any of these files/folders: (you can put any class files in inc/classes and run them from any file loaded elsewhere, they autoload)
    • /inc/functions.php
    • /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.

Lua

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.

Preferably don't modify Prometheus Lua files.

Rather create your own separate add-on that uses the hooks/function overwrites to modify Prometheus Lua side, while not modifying files is almost impossible in PHP, in Lua it's pretty easy.

Pretty much anything you would need to do can be acquired by using the hooks, if that isn't enough, you can use function overwrites, example of tapping into a function called "testFunc":

local oldFunc = testFunc

testFunc = function(...)

args = {...}

-- Do anything here with the arguments, original function will still run by running the oldFunc(...)

oldFunc(...)

end