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; return base.ExcludeCopy(file); } public override sealed bool CopyExtraFiles(string basedir, string source) { //Create directory structures string datadir = basedir + "\\data"; if (!Directory.Exists(ABuilder.PropSlashes(datadir))) Directory.CreateDirectory(ABuilder.PropSlashes(datadir)); File.Copy(ABuilder.PropSlashes(source + "\\dlls\\geoip\\GeoIP.dat"), ABuilder.PropSlashes(datadir + "\\GeoIP.dat"), true); ABuilder.CopyNormal( ABuilder.PropSlashes(source + "\\plugins\\lang"), ABuilder.PropSlashes(datadir + "\\lang") ); if (!Directory.Exists(ABuilder.PropSlashes(basedir + "\\logs"))) Directory.CreateDirectory(ABuilder.PropSlashes(basedir + "\\logs")); if (!Directory.Exists(ABuilder.PropSlashes(basedir + "\\doc"))) Directory.CreateDirectory(ABuilder.PropSlashes(basedir + "\\doc")); File.Copy( ABuilder.PropSlashes(source + "\\doc\\amxmodx-doc.chm"), ABuilder.PropSlashes(basedir + "\\doc\\amxmodx-doc.chm"), true); ABuilder.CopyNormal( ABuilder.PropSlashes(source + "\\plugins\\include"), ABuilder.PropSlashes(basedir + "\\scripting\\include")); 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); 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.bindir = "msvc"; core.sourcedir = "amxmodx"; core.vcproj = "amxmodx_mm"; core.build = "JITRelease"; core.projname = "amxmodx_mm"; core.outdir = "dlls"; Module mysql = new Module(); mysql.sourcedir = "mysql"; mysql.projname = "mysql_amxx"; mysql.bindir = "mysql_amxx"; mysql.vcproj = "mysql_amxx"; Module engine = new Module(); engine.sourcedir = "engine"; engine.projname = "engine_amxx"; engine.vcproj = "engine"; Module fun = new Module(); fun.sourcedir = "fun"; fun.projname = "fun_amxx"; fun.vcproj = "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(mysql); 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); } } }