From aa15e8fc4dae8cc9d4e87338def8735a9bab0992 Mon Sep 17 00:00:00 2001 From: bmg Date: Fri, 20 Aug 2021 19:17:28 +1200 Subject: [PATCH] Add support for multipal servers one same host. Add support for passing arg as different bat file name. --- .vs/RustAutoStarter/v16/.suo | Bin 40960 -> 47616 bytes Program.cs | 38 +++++++++++++++--- RustAutoStarter.csproj | 2 +- bin/Debug/RustAutoStarter.exe | Bin 5120 -> 5632 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6718 -> 6719 bytes ...tAutoStarter.csprojAssemblyReference.cache | Bin 424 -> 424 bytes obj/Debug/RustAutoStarter.exe | Bin 5120 -> 5632 bytes obj/Debug/RustAutoStarter.pdb | Bin 19968 -> 19968 bytes 8 files changed, 33 insertions(+), 7 deletions(-) diff --git a/.vs/RustAutoStarter/v16/.suo b/.vs/RustAutoStarter/v16/.suo index 55777a580075875019c82e7d7f0fd7227d382b3e..e44f5dcfffbac6ebce3d60464c5a1e0c971279b2 100644 GIT binary patch literal 47616 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 QUUm8ZJyQe`HnRl&ANQjC9{>OV delta 2602 zcmc&#U2IfE6uz^2x9paC+bwKq3v|0JiRDJ}761qzY zLV7VZg7VIF28Er6l)0Am*BW#Gg_QsaS&6E zA+Z@rr>6Wt%|UAJky3){%QQJk!Yu?Lm!)3&DUyt!% zROT7no9( zR!p1iF)_%^MFw}N=WTOoJdeapGM_{xVFwCH9tqocs4qp66=)(@Ei}9@U*fZ+db38Z z0&ma~*~@Nt8M|T^hy}kgJhF!|mR8(dR#ehP8vAisqwz{Kxt8GB<%+_{^MveRABUG$ z8bP1u6}DhMsh)NtuLUh?SR6nyPgD3MibzOlzJ}P3DT4W|e8xF=ACmc9s#rl-nGMfO z7HL8iY*uN5ktosVYMYEet5P_NTdt4@ur4f~!Bk*KY(lcUOO=Yrs@&$mwUH(=?v%Eh z2@|xbknrnb1E&0%!uP~}xp6Lu79`6wrGVfP+X~lunz(VNyiFDSY85se5*0TTzH@%M zIX^EUxlB_Q&O#Q9$^33*0f9c7ZO(Hvi8*oH+otdva!TA=;MG)V2_c+(7Am@tEYK90 zAg2v>aq4cvofVq9)CP-YBr9jiX0Z*1UL)hz%HKsUrdDdoGE#+XYRdg&XvoFE&@G1A zl|?k-YPEtuqN>}x+T}Jd$4e7$34W_G>lWFFoEfZk3k0GHZlq(lt~MI02ZfAdtK0Yy zF}d1&Ow`oL7<^I}OA(G1BCqBb&r)(FSa7DM9`Ud)Z|L0Ei_g=I#+oahx*uQvX^@I? zBi7Y!H)?M?78hkEYF`jloG!bhL((znMd`4Vl%i5Z>XY_M37Q>|_DFk4j+mp}neFu# z3gPXV;9JDFwh)UVp?SO~&p+yEFrvNA{n8=ajI6?N^aO65jc4M+eF`ezCp*&;o6z9q zr{IRuh#{WpLq)0r*VB#it=p7X!y}D|8$Mh+R}I~Ws0j+|u+&XK^h*aapBXC!emGZb zjBFDs#%oJGYiFEEQs(4Hxe)6xHqrzA{8RLjJeoN7G_Ia+EZlQsU`OAr^uC}igPUpX=E8dN7 z#M;%WE35h$=f+!8^?&DPvaB2bf#(zcEhc_G=3St|)$F)5VBKeI)VO-iHqwLZTBx(Np)><}#Un znp#8z8giLTL!7tPq?u9EN!-IU!@v-{%<{+}Bjc|S>l+j204`-mdlP9($2NKQ6 vMEzqiP!kG9Yf+FMR=E_oafLgPPLJaBSPc4DCDyMghTeG;Z-#TBf0F$Zxj=-+ diff --git a/Program.cs b/Program.cs index 1532025..f5c425d 100644 --- a/Program.cs +++ b/Program.cs @@ -1,17 +1,43 @@ using System; using System.Diagnostics; +using System.IO; using System.Threading; - namespace RustAutoStarter { class Program { static void Main(string[] args) { - while (true) + string startupfile = "CustomMap.bat"; //Sets default bat to run. + if (args.Length == 1) //Checks if args have been passed + startupfile = args[0]; //Sets passed args as the startup file to run. + + //Check that starup bat exsists + Console.WriteLine("Searching for startup bat " + Environment.CurrentDirectory + @"\" + startupfile); + if (!File.Exists(Environment.CurrentDirectory + @"\" + startupfile)) { - Process[] pname = Process.GetProcessesByName("RustDedicated"); - if (pname.Length == 0) + Console.WriteLine("Startup bat not found, If no args passed then default will be CustomMap.Bat"); + Console.ReadKey(); + Environment.Exit(0); + } + //Sets title of window to bat it will run. + Console.Title = Environment.CurrentDirectory + @"\" + startupfile; + while (true) //Makes it a constant loop + { + Process[] pname = Process.GetProcessesByName("RustDedicated"); //Gets all processes called RustDedicated + //Loops though incase hosting multipal servers. + bool found = false; + foreach (Process p in pname) + { + if (Environment.CurrentDirectory == p.MainModule.FileName.Replace("\\RustDedicated.exe","")) + { + //Found so break for loop. + found = true; + break; + } + } + //If not found then start up. + if (!found) { DateTime now = DateTime.Now; Console.WriteLine("Rust server offline " + now); @@ -21,7 +47,7 @@ namespace RustAutoStarter { proc = new Process(); proc.StartInfo.WorkingDirectory = Environment.CurrentDirectory; - proc.StartInfo.FileName = "CustomMap.bat"; + proc.StartInfo.FileName = startupfile; proc.Start(); } catch (Exception ex) @@ -29,7 +55,7 @@ namespace RustAutoStarter Console.WriteLine(ex.StackTrace.ToString()); } } - Thread.Sleep(10000); + Thread.Sleep(10000); //Sleep for 10 secs } } } diff --git a/RustAutoStarter.csproj b/RustAutoStarter.csproj index 9f9477b..879be72 100644 --- a/RustAutoStarter.csproj +++ b/RustAutoStarter.csproj @@ -14,7 +14,7 @@ true - AnyCPU + x64 true full false diff --git a/bin/Debug/RustAutoStarter.exe b/bin/Debug/RustAutoStarter.exe index e9bb803778b1264e399877114ae9c5e027260917..d1d23e51916f5004acdf211e87e95f5aade907cc 100644 GIT binary patch delta 2097 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 XA_p3iqo&Wi2|qNe9$h{`TS7ko-st9K delta 861 zcmaKqJ!n%=6vyv*c}+}gG-=v2O=`XxE!xtk30kW|qqU8}qN}I{X&t0Ck%BE^CD%+2 zRnpu_16Cc>him#A9Xg4EAcBJE;G*K90S6Hj@qhB+;NT61-#Pc5bKd!gTqU_m#eREP z)X!Ek;(AVc{JU-4bZb>oVXajk6yitIa+a*=@HEY(r#ce**YEF1J?blcEWBJix{o0|BcD!=GBX!H#VD_#7iyo zF*pc+A9xAU4As?xP!DC)vrs&5!M%=J*oVe6d7b2Ix>}&Z2hF9S$ZxpkPWTXhMqL$M zAm`@e5JIy0wfb9fTdlBdpc8BZH-Vg=-?@d&u)9H*5P2Def+plX5YBQ0^njya2RH_L z!Evw?oB)wb=0Fr7=RiNm4I;U`3?jK)0JnfQz#zB;hQJaS25*BAc*r|YHsZq0ec(7z zuUj00^r~F6mkyaL(ZjSBn{qhHjfPK=$__jsV=3iP>3F+l2y-I-R*wiwvmc8Yh8#sI z9xgY|LqQLsQ=LdA?C46gLp+t#G*Oos*>2P9&AA#dt5h0VZ2Yl?UbX!9vnj*s+mX5Z zkSp8yuBcypvv;&~GT--fJTqf<@BU0wRxQcIu76A8{q;b&G>k>?8hB^e9gj~0)VWN+ XjRErTFsRzl8YRb2<9n@gJWPK8h;o*C