Permalink
Fetching contributors…
Cannot retrieve contributors at this time
90 lines (69 sloc) 2.98 KB
-- checkplugin.lua
-- Checks the nominated plugin is installed
function do_plugin_check_now (id, name)
local me -- who am I? plugin or main world script?
local location -- location to attempt to load plugin from
-- allow for being called from main world script
if GetPluginID () == "" then
me = "world script"
location = GetInfo (60)
else
me = GetPluginName () .. " plugin"
location = GetPluginInfo(GetPluginID (), 20)
end -- if
-- first check if installed
if not IsPluginInstalled (id) then
ColourNote ("white", "green", "Plugin '" .. name .. "' not installed. Attempting to install it...")
LoadPlugin (location .. name .. ".xml")
if IsPluginInstalled (id) then
ColourNote ("white", "green", "Success!")
-- here if still not installed
else
ColourNote ("white", "red", string.rep ("-", 80))
ColourNote ("white", "red", "Plugin '" .. name .. "' not installed. Please download and install it.")
ColourNote ("white", "red", "It is required for the correct operation of the " .. me)
ColourNote ("white", "red", string.rep ("-", 80))
return -- skip enabled check
end -- if not installed
end -- plugin was not installed
-- now make sure enabled (suggested by Fiendish - version 4.74+ )
if not GetPluginInfo(id, 17) then
ColourNote ("white", "green", "Plugin '" .. name .. "' not enabled. Attempting to enable it...")
EnablePlugin(id, true)
if GetPluginInfo(id, 17) then
ColourNote ("white", "green", "Success!")
else
ColourNote ("white", "red", string.rep ("-", 80))
ColourNote ("white", "red", "Plugin '" .. name .. "' not enabled. Please make sure it can be enabled.")
ColourNote ("white", "red", "It is required for the correct operation of the " .. me)
ColourNote ("white", "red", string.rep ("-", 80))
end -- if
end -- if not enabled
end -- do_plugin_check_now
function checkplugin (id, name)
if GetOption ("enable_timers") ~= 1 then
ColourNote ("white", "red", "WARNING! Timers not enabled. Plugin dependency checks will not work properly.")
end -- if timers disabled
-- give them time to load
DoAfterSpecial (2,
"do_plugin_check_now ('" .. id .. "', '" .. name .. "')",
sendto.script)
end -- checkplugin
function load_ppi (id, name)
local PPI = require "ppi"
local ppi = PPI.Load(id)
if ppi then
return ppi
end
ColourNote ("white", "green", "Plugin '" .. name .. "' not installed. Attempting to install it...")
LoadPlugin (GetPluginInfo(GetPluginID (), 20) .. name .. ".xml")
ppi = PPI.Load(id) -- try again
if ppi then
ColourNote ("white", "green", "Success!")
return ppi
end
ColourNote ("white", "red", string.rep ("-", 80))
ColourNote ("white", "red", "Plugin '" .. name .. "' not installed. Please download and install it.")
ColourNote ("white", "red", string.rep ("-", 80))
return nil
end -- function load_ppi