163 lines
4.1 KiB
C#
Executable File
163 lines
4.1 KiB
C#
Executable File
using System;
|
|
using System.IO;
|
|
|
|
namespace AMXXRelease
|
|
{
|
|
//AMX Mod X core distribution
|
|
public class CoreMod : AMod
|
|
{
|
|
public CoreMod()
|
|
{
|
|
AddModules();
|
|
AddPlugins();
|
|
}
|
|
|
|
public override sealed string GetName()
|
|
{
|
|
return "base";
|
|
}
|
|
|
|
public override sealed string GetPluginDir()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public override sealed string GetBaseName()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
//annoyingly complicated file exclusion filter
|
|
public override sealed bool ExcludeCopy(string file)
|
|
{
|
|
if ( ((file.IndexOf(".so")!=-1) || (ABuilder.GetFileName(file).CompareTo("amxxpc")==0))
|
|
&& (Releaser.IsWindows) )
|
|
return true;
|
|
if ( (file.IndexOf(".sh")!=-1) && Releaser.IsWindows )
|
|
return true;
|
|
if ( ((file.IndexOf(".exe")!=-1) || (file.IndexOf(".dll")!=-1))
|
|
&& (!Releaser.IsWindows) )
|
|
return true;
|
|
if ( (file.IndexOf("dlsym")!=-1) && Releaser.IsWindows )
|
|
return true;
|
|
if ( ((ABuilder.GetFileName(file).CompareTo("sasm")) == 0)
|
|
&& Releaser.IsWindows )
|
|
return true;
|
|
if (ABuilder.GetFileName(file).CompareTo("svn_version.tpl") == 0)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return base.ExcludeCopy(file);
|
|
}
|
|
|
|
|
|
public override sealed bool CopyExtraFiles(ABuilder ab, string basedir, string source)
|
|
{
|
|
//Create directory structures
|
|
string datadir = basedir + "\\data";
|
|
|
|
if (!Directory.Exists(ABuilder.PropSlashes(datadir)))
|
|
ab.CreateDir(ABuilder.PropSlashes(datadir));
|
|
|
|
File.Copy(ABuilder.PropSlashes(source + "\\dlls\\geoip\\GeoIP.dat"),
|
|
ABuilder.PropSlashes(datadir + "\\GeoIP.dat"),
|
|
true);
|
|
|
|
ABuilder.CopyNormal(ab,
|
|
ABuilder.PropSlashes(source + "\\plugins\\lang"),
|
|
ABuilder.PropSlashes(datadir + "\\lang")
|
|
);
|
|
|
|
if (!Directory.Exists(ABuilder.PropSlashes(basedir + "\\logs")))
|
|
ab.CreateDir(ABuilder.PropSlashes(basedir + "\\logs"));
|
|
|
|
ABuilder.CopyNormal(ab,
|
|
ABuilder.PropSlashes(source + "\\plugins\\include"),
|
|
ABuilder.PropSlashes(basedir + "\\scripting\\include"));
|
|
|
|
ABuilder.CopyNormal(ab,
|
|
ABuilder.PropSlashes(source + "\\plugins\\include\\amxmod_compat"),
|
|
ABuilder.PropSlashes(basedir + "\\scripting\\include\\amxmod_compat"));
|
|
|
|
ABuilder.CopyNormal(ab,
|
|
ABuilder.PropSlashes(source + "\\plugins\\amxmod_compat"),
|
|
ABuilder.PropSlashes(basedir + "\\scripting\\amxmod_compat"));
|
|
|
|
ABuilder.CopyNormal(ab,
|
|
ABuilder.PropSlashes(source + "\\plugins\\testsuite"),
|
|
ABuilder.PropSlashes(basedir + "\\scripting\\testsuite"));
|
|
|
|
return true;
|
|
}
|
|
|
|
private void AddPlugins()
|
|
{
|
|
AddPlugin("admin");
|
|
|
|
Plugin admin_sql = new Plugin("admin_sql");
|
|
admin_sql.source = "admin";
|
|
admin_sql.options = "USING_SQL=1 -oadmin_sql.amx";
|
|
m_Plugins.Add(admin_sql);
|
|
|
|
Plugin bcompat = new Plugin("amxmod_compat");
|
|
bcompat.source = "amxmod_compat/amxmod_compat";
|
|
m_Plugins.Add(bcompat);
|
|
|
|
AddPlugin("adminchat");
|
|
AddPlugin("admincmd");
|
|
AddPlugin("adminhelp");
|
|
AddPlugin("adminslots");
|
|
AddPlugin("adminvote");
|
|
AddPlugin("antiflood");
|
|
AddPlugin("imessage");
|
|
AddPlugin("mapchooser");
|
|
AddPlugin("mapsmenu");
|
|
AddPlugin("menufront");
|
|
AddPlugin("multilingual");
|
|
AddPlugin("nextmap");
|
|
AddPlugin("pausecfg");
|
|
AddPlugin("plmenu");
|
|
AddPlugin("scrollmsg");
|
|
AddPlugin("statscfg");
|
|
AddPlugin("telemenu");
|
|
AddPlugin("timeleft");
|
|
AddPlugin("cmdmenu");
|
|
}
|
|
|
|
private void AddModules()
|
|
{
|
|
Module core = new Module();
|
|
|
|
core.sourcedir = "amxmodx";
|
|
core.vcproj = "amxmodx_mm";
|
|
core.build = "JITRelease";
|
|
core.projname = "amxmodx_mm";
|
|
core.outdir = "dlls";
|
|
|
|
Module mysqlx = new Module("mysqlx");
|
|
mysqlx.projname = "mysql_amxx";
|
|
|
|
Module sqlitex = new Module("sqlite");
|
|
Module engine = new Module("engine");
|
|
Module fun = new Module("fun");
|
|
Module geoip = new Module("geoip");
|
|
Module fakemeta = new Module("fakemeta");
|
|
Module sockets = new Module("sockets");
|
|
Module regex = new Module("regex");
|
|
Module nvault = new Module("nvault");
|
|
|
|
m_Modules.Add(core);
|
|
m_Modules.Add(mysqlx);
|
|
m_Modules.Add(engine);
|
|
m_Modules.Add(fun);
|
|
m_Modules.Add(geoip);
|
|
m_Modules.Add(fakemeta);
|
|
m_Modules.Add(sockets);
|
|
m_Modules.Add(regex);
|
|
m_Modules.Add(nvault);
|
|
m_Modules.Add(sqlitex);
|
|
}
|
|
}
|
|
}
|