== What kind of scripting and where ? == Lua is good to embed in qvm: it will be in each qvm/so and in client. (need to create a folder src/lua with a common API for all the modules) Python is huge thus we cannot put it in qvms -> it goes to game.so and ONLY in game.so == How do these langages work with the game ? == === Conditionnal hooks === A conditionnal hook is used by the game to check if an action can be done or not. A conditionnal hook will be composed of a (ordered ?) list of checks. E.G. the evolve hook will have the "team" "spawned" "creds" "ennemiesaround" "validclass" etc ... checks. When the hook is fired, each check will return a true or a false. If only one of the checks answers false, the hook is evaluated to false and the action is canceled. (the player isn't spawned -> cannot evolve.) Furthermore, each check will be composed of parts. The uses of the parts over Azra's API is that each part will answer on it's own, a false will evaluate the whole check as false apart from the fact that a part will be able to send an unconditionnal true. The freefunds plugin will add a part to the "class_valid" check that will return an unconditionnal true if g_freefunds is set to 1. With these 2 things you can have plugins that override the default behavior * Either by answering true where it would have sent a false with the parts. (freefunds) * Or by adding a new check that results to false. (!denyclass) === Action Hooks === An action hook is called by the game to actually DO something (can we evolve - Yes! -> call the onEvolve hook). An action hook is composed of different steps, each step will be called when the hook is triggered. I need to find a way to override the default steps (with deleting them). === Admin Hooks === A script will be able to register admin commands (flags ?), and it will be called when someone actually uses that commands. It'll be able to alter the game data. == ? == === Pros === * Easier/less limited than Azra's for scripters * Doesn't have a huge chain of action and labels and ... o_o * Allows the overriding of the default actions === Cons === * Might still be limited in some ways. * Script conflicts ? * Not finished for the actions hooks.