-----------------------------------------------
           -=[ S P I   F I L E S ]=-
        S u b 7   P l u g i n   I n f o           
-----------------------------------------------
# intro #######################################
-----------------------------------------------
SPI files are useful for distributing 3rd
party plugins. plugin developers can use these
files to automatically add pages/menu items/etc
to a user's client. this way you don't have to
explain to the users how to manually copy and
paste each page/menu item. all you have to do
is distribute a package containing the plugin
DLL and one SPI file.
-----------------------------------------------
# adding menu items ###########################
-----------------------------------------------
..................s.y.n.t.a.x..................
@menu
#on [existing_entry]
[new entry]
#end
@end
.................e.x.a.m.p.l.e.................
@menu
#on .capture
..moo
...hah
#end
#on plugins
.my_plugin
..plugin_feature1=cmd1
..plugin_feature2=cmd2
#end
@end
...............m.o.r.e...i.n.f.o...............
it will look for the ".capture" line. if found,
it will add everything in the #on - #end list 
right under that command [in this case it will
add the lines "..moo" and "...hah"]. if the 
[existing_entry] is not found, the items are 
added at the end starting with existing_entry
-----------------------------------------------
# adding pages ################################
-----------------------------------------------
..................s.y.n.t.a.x..................
@pages
newpage [page_name]
 [page_data]
end
newpage [page_name]
 [page_data]
end
@end
.................e.x.a.m.p.l.e.................
@pages
newpage MyPage
 Label(10,10,30,30,SomeStupidLabel)
end
@end
...............m.o.r.e...i.n.f.o...............
it will look through the existing pages first. 
if a page with the same name is found, it will 
ask the user if he/she wants to overwrite it.
[this is useful for upgrading]. if a page with
the same name doesn't exist, the page[s] will
be added at the end of the current pages list.
-----------------------------------------------
# adding commands #############################
-----------------------------------------------
..................s.y.n.t.a.x..................
@commands
#define [command_name]
 [command]
#end
#define [command_name]
 [command]
#end
$OnServerCommand("command")=command_name
$OnServerCommand("command")=command_name
@end
.................e.x.a.m.p.l.e.................
@commands
#define MyCommand
 Console("add some stuff in the console")
 Console(Command)
#end
$OnServerCommand("my_params")=MyCommand
@end
...............m.o.r.e...i.n.f.o...............
if will check the list of #define's for 
duplicates. if a define with the same name is 
found, it will ask the user if he/she wats to 
overwrite it. if no duplicates are found, 
everything is appended at the end.
-----------------------------------------------
# final notes #################################
-----------------------------------------------
all of the above examples can be combined into 
one file. ffrom the example above:
.........s.t.a.r.t. .o.f. .s.a.m.p.l.e.........

@menu
#on .capture
..moo
...hah
#end
#on plugins
.my_plugin
..plugin_feature1=cmd1
..plugin_feature2=cmd2
#end
@end

@pages
newpage MyPage
 Label(10,10,30,30,SomeStupidLabel)
end
@end

@commands
#define MyCommand
 Console("add some stuff in the console")
 Console(Command)
#end
$OnServerCommand("my_params")=MyCommand
@end

...........e.n.d. .o.f. .s.a.m.p.l.e...........
-----------------------------------------------
