From 22e5b5898e11752c0274c9675cf8311810d869df Mon Sep 17 00:00:00 2001 From: Hipstercat Date: Wed, 12 Jan 2022 23:38:01 +0100 Subject: [PATCH] added README and more docs --- README.md | 22 ++++++++++++++++++++++ main.py | 5 +++-- readme-img/screenshot.png | Bin 0 -> 6627 bytes 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 readme-img/screenshot.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..9409919 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Giants Wdefs Importer + +This tool was created to simplify the process of importing custom Wdefs for Giants 1.502.1. + +![Image](readme-img/screenshot.png) + +## What it does + +This tool: + 1. Creates a backup of your game. + 2. Downloads the requested wdefs file. + 3. Modifies GiantsMain.exe to overwrite the expected CRC value (the game won't load if there is a CRC mismatch). + 4. Starts modded Giants. + 5. Reverts everything to original state after Giants is closed. + +## Where to find modded wdefs? + +[Check our Discord server](https://discord.gg/Avj4azU) + +## What about cheaters? + +Starting 1.497, Giants features a built-in anti-cheat. It works by automatically detecting mismatching clients and kicking them if they don't use the same environment as the server. \ No newline at end of file diff --git a/main.py b/main.py index fe460c9..c9183aa 100644 --- a/main.py +++ b/main.py @@ -87,6 +87,8 @@ def start_giants_with_wdefs_bytes(wdefs_bytes: bytes, wdefs_path: Path, giantsma if sys.platform == "win32": process.start(str(giantsmain_path), ["-launcher"]) else: + # Linux only works for me because of this hardcoded value + # if you want to use my tool, feel free to create a PR to make these values parameterized process.start("/home/tasty/.local/share/lutris/runners/wine/lutris-6.0-x86_64/bin/wine", ["/home/tasty/Jeux/Giants Citizen Kabuto1.498/GiantsMain.exe", "-window", "-launcher"]) @@ -100,7 +102,6 @@ def backup_file(file_path: Path) -> None: # copy and append _original to filename # if file already exists, skip dst = str(file_path.parent / file_path.stem) + "_original" + file_path.suffix - print(dst) if os.path.exists(dst): return shutil.copy(file_path, dst) @@ -155,7 +156,7 @@ def new_exe_bytes(wdefs_bytes: bytes, giantsmain_path: Path) -> bytes: index = content.find(CHECKSUM_1_502_0_1) if index < 0: - raise Exception("Could not find wdefs checksum in embedded GiantsMain.exe. Report this to Amazed#0001") + raise Exception("Could not find wdefs checksum in embedded GiantsMain.exe. If you are 100% sure this is unmodded Giants 1.502.1 please report this to Amazed#0001 on Discord or create an issue on the Git project.") else: content = bytearray(content) wdefs_crc = struct.pack("*=VIlQ5CoyLXRVQ$xkz-aT9%>~RPY z0d_oS{eq93@IgwNMnqVF5;;U+&l$Z{O}q^~oV+2nUXJ&i-96kKpMdPW939<3Z#}&C z@!I9FK0cZ%FN}P1cNhGiw37>c8037894F@$E@wzs4?d2*(W$oL3l$oA8vP%uhNV8% zuilu~Ju$x0u)H);y-%xJs#iurRHLkTDv_v2O-=MixgWegbVSJM${9n>_<8AU+vl#o z)p_LlZwtp!D|$#PwhxA^nhF+;`7}nYf)%r54@Hg}kDuhIty{eE!(^`JZ7M3Nq&tJ4 z@{hpBu~Asbi%+LRRW%b~^;Gw%u|suUtSOWrNe!;bXKe8fc_T~7mdw7KFX0grN9FWQ!Xcy}qYyf7A z!xOMkEmnz7?12T>A54Q=V}#=@W_;8vhUMC`MgnTl2LnS=z8hQjn0}mF#2SL${lU;Z zyYsuepD4W}S#r^CYy2jEwAb?WQNAr!1D3tPWm;&j;H0|HC%c}dbeMlKJqmMSu?-?v zzfU;R?1xi(i;)NrqJOV086DkG;$%D`%Zc~9O zXB)wTL;YLRum@T5F%-%kI2^mpNa;F9+Ca8IMro-PAV0-#vBN6GIZ9$ z(S5&1(mI+Pk4#LKc{ya`byjYF{tyy6BUlXDY5V&prz>HqBS<>u8ywWlsGAYrX5@C6 z3_+K#4ee|D)DC8QfKG-+Qs+^0?g_5KMFJ&WTVX$^-I+{qn@l_FhHp3f*-k4P`wFCRX% zw$iSr`t>@+dbzDlAOC`hW%$oXA*GeG@k_R1@gz~?EhRT~Au;)JZ;23xoTKoaZ-9Jr z0!x7u@PVkm07wn*wTqw6SPayfYH%HLo!VTv`LeDuhuhEm!eNX3;tZ$OiP_p;0Rzcz zvJO`>SFje*&=lLe%skTvYXJ|*#-^F{YLm0 z=>NfQHIapLp>dNB0@Q{}o0Quz>$?bmxXyFq#trT4r{71;mIBWfKn=QGA`D^=DzhnG(k5C`K!;UM0x;t5BR)wEf3mfUWBLsQl&xwmWIwa=#v z?~|buW~xv~t2R+CZTZiQBpcIQ+Q<9*hl3FY(9T?kwE`$^nax~;rP1kT|07~Hp#^FU z^ea2yrA%W{UdqWkQSZ%pCeVI{tMLBNIepMb|L0cd)hK<@c>3aWA2sM&jKrBmO8!U) z^>r-sZe`mcjKb-9M%}kYC=#ZiS!p>{GJnc=Cj+2``=u)D!wkD*yY}(|#`D}Ll9cgL0>Uz>c-GIvH2CMuCZy9LK0+p`O7$Rx4ms=9-jO_Fh%0)gk1mZ6UJD+Mc43m8ch_R^^)*U?%Y-ku z=uoQDeao3j+1l!OG*B&lrZQfS_jBlRvM_O%X=3-c>Z-dGavJZJ_#jcb=B40pc$;ig zxWa2q?u~R{8J}|>Czx5vkIbnKX4Cw@NpKHj zD%sz$Ae^cO>XTGx=X*9m z5k+dOcLO*5!3Cga562Q`W=seuSo*P*N<=%w5s@x&B`@&l2t(;%cm>+}_=jb&Egsye zelM|li#a!ck%yvvw_8%xFK*8|M5QRYY>fJ)HX-L1PTxf10E6SW{o#^r`wRCQm@@%2 z^6llkXmpN0gh${vUIqe>FA^xdb$)7-u4iNy(oVT}0&N7kWeu0I6L{@s68gRSy-)^6a%88`y#Sl8x$&tH+YJJup zZpgiU4iNTD$ptM8y68F2_=4xNUMzdUdd^!Df+1RMOh_)ps%;BJ4_Ey zS?j8=?R1GVA1@phDGj^~r*bu_78is&oeXG$jVavKAxfdF6THy`*O@5#cf{$A`g(eb z8X82No}Oe(PfH|IpTa-Z?ZWVrJCAp}&zMzntdwzp(sI%VU1u=2+VasG!NjPiNir@E zbB^3?y(^Q*q8IzyK^Ek$whw0Z`DCHWd|>EtdrMYwq(=ea#pLj!^E(e)(}@vpvtm-X zf1EtXP2b<~`b5<$5WUQW)I!>-bxE{g)oE46hmO zg?3FQLu+NBQYZX`J6B1dRD4SR22rk)sA>=0-k~gs5MZ`jZPg?vJUS(Fh9TDpCz5pQ zHr#UB_pSt+6;A7*3&)rpK4+Aeov@52Y&ebbdM_0@cg$qQtg}3WH&!Dh8C0xx7pIav zSf2t|G#{MQC0kphhmBn{PwosusAl92%ise{6nI_0<;`u~(qHePfw^(krsYGt+f|yC zR#IX?DvulGDQf5d4$kKf-1ql5#9=fD;7ZM}O;7*(bd9AMwJx23$D6Nv58s(TUbGs% z{9!Fp7pXa`F4zwYZM>49+hOfxm697s$-i^Dc@bLF|L`p9C*+BfXRkyovnRb&6J6~M zke2Pm7bDl})S+4)eCN*JY7^74Ei#m-DgE+iI}2I1Ur{3BPPOmbnWacCoX&u}i^mL< zjHDVqJf6GcyCw4%!mq{_Cj11oEm5tmnkfm^Yj%c#$3y{iL&Zn^(e+5KXMzZ>lbi%# zT82bZFm{{gt$l1Ek%tb->2;GLUq7URk0bj&U%nM31iRZI8JAj~e98#?b?4*v!93zF zmft?_=isY>x%TL;^|(x9pMA%@yFi^Q!V3H2n*k%VhwW+cem~i(&*=V;d4^Te_4^KG zH<^r}vwYDjoAvVL<~T@lZe7xAW<-@hLzSyGPAH*cEl_i+`WxAqynL{yz+btC44%6S z$A_MVR@sO}Rz@204=$9ocL&rJ0llE%lIY{J`p1Yl25@^hg)VBu5zD&j`!2ng*WaJB_pRV{cU%3w_(@){=dYqYMXz*>`z$8L zA~#-+;x>>vav^@abkEcZ^7{VwC8)}6{uAvj^I(LUim*j~tFJ>Z$Rg{I>#XHRjHasD zV6{TUbi(qf=K0jMXX{~M7frDnUjV9xcQ}>>#`q6Fzf0cws@`vM;q#TP8wKEHyFE>b8*?p{D;K0c<4Q=gjMMYtqol4EGux$YcJ|W>l8X6TlJG<6hFA(T^ zSy>TQ!UdYE?h_EKqEO1dzP_!yu~`4o@b}4d$=TVT#y5H7jVlI(n8$f^nkhZvb^8=-2bMLa7E-@FE0VSel zBuCM%QQ&c@_cD6lr$eC+)l$AxR`$6m{Old8e*#91S414K5Y^i#0cp1wpD;D1Y zaQiix8JJpziYp-d49Wp2aj74`>y)oSUJ!rzrVrddHG@6G?1OHe^q~9NeW<9Od6*ip z%=b(M-haAU=CkMm<@kOXuPy^$;R6Zk`d#(IAk?5u@v;&E@hiMuJ~e74YNfZnG?;-v z#;g7%6L5)Bi3Rid!fVmkD~^QA5%?sc;EQ^Kv#Ie3cl?IJXxIb2`YnL$r4zqYa8>+- zB|r39(Tlq{XMX4MD&^W1VqFYa>S@a>@bZAVG{v{X5O+OaJz`H4=HhySIw#YNX%V2T zvEO}ZTxQboDXr8b?-0)%yvw&=vOR+aPaJbwlfPShl(WT6!@Ar3)p~dZ#`=SQXtwkE z9a7}>l%&n{0DmBEr}sxi;h^i(V0M<~;_2?14`WaHoBA(4U+pa=WE%E3oo1{V=H-jP z2QrK2JPCLfG>mUl)>fwqUr83{yoa;9HGw&23Flv{^UEgcY&8h5$UR?n!!dz{rI1cO zGpWH8zJAMKOXapXbM&0e|2>NvIH+rNsQ3|?;J%!DJQ=UFbnb2Nd<1FC_2hWtU3Nvc znrhN-7a`<`=C{?l-J#=6vINHd0?0(}{405M{yE~p@#QeC-o+c)L|=YgKqYSJ2Z`~0 zdkq6~uCLTT4=aMJj@EoKJ}nISojP4wP`~oFfT+ofMowfCb7de@PiFZo=$N#CKpIGp z*-OtsZ(i~ZrJN|DS?{f3aZ-d%=}6q%I@ihMmoV)6!{W#4u~WG`SMbPda~!d4Rrmu& zfUPoqPZVlxmc9L#S5~6o)(?{0x-dRz1_tg1DeCWMoA_tp(LVexCat{T>Ml!l;3j=@hQ#(^^@ksEf|~rp zb~jBdTA%&5-%o)gZU9F-XGeXF+v{2cT36{O3Q&X#1l&>C0P`|#6A9^i!*dYh$2{}& z&U98dD7K)z6%J;jTXd53J4hOqj;5L%LhD6ezbcA@E5^Y7>!>GVMat8c1q#KA;43zoA7YXcf9?;l8n)%K-OH z>kAkkjKU%rPuBp9X$)#A)8>Az&;Ut**~_5epG*;iixLw4&!I#_2OJ(}PNx}6`1PAA z7C_5BR~uj7)m>C*0-SH;GU79pL{yXp;ys3udi$}d`E*ipO?v${JlSeh)mw?BLx+?! zCIv5Me2(6Ol28YEkE;_`L~!u?Q*vCTj~Jl=Sjk|gSc0AbNk}=Kh}oeu)9)}B4HoGt zkp&od3*6kXBAw)#Ynds#t<2kp#;hYf*7tXp{uUrDRTWVXBSI;{T1q9?06Q1K(_%{~ z&w8oX|l+ zc0)9WiMm%mKmW?r0Bf}W@_7!g_mjfk_)FpueA&d6!=E?c059Fj_6Oi$-HTmzHd~-~ zYtmOM^2rAnR5Kk_5^4C#E2BOYE+~t%oGb>&rm&I+PKFC$>kTsGBezl0FIy9n{642G z@;ecwR!HI-6V;Mn(H5hPq9y^`9nK1FE^~qsru-`BTwQ zDSPK2e%`I4-zs>J04kr|n0<;kUGFxv)b!akk%|5k-94zmT?U&qQ{1-jcD4gmGd@&o5*ApslTZ(+N?(fMHaun>>PU>^=)a_V{5B*&Ym* z@54X`%N_QW%8e`*#|(K$YJ6F{h=UDt(wU#9mTKtsks_D^Y*`_5;9L}Yv-=w-$6iU& z5$FH_*bh{m&vlmWs!i-n=_)$4#*WCio`X>}`5B`U4Ya)&f6OBxt`A=uBl`s(cP~6o zRa7TM9zXp|98$z>@7^3c1ZP`sq|B&wJCjUD`p3hZ)<&JL$-AdVQ^aqDi{&>E%?Y~p z3!2*kX{wR^BO?`l>xt%GTkE-O)w}P^+ammqAW12CgS`_4NF0gr&$G`wJhv>+|_KdpPW2{Wmh-o{@3)9(U%-LyuqQ z4kSqE&-lQ`Mh9oM!kzPaxctq}UA5r9H!Ji*RvEotx*8o^??NVOACZ-&PSkH}AOT&w z^y*$pE&dH58;&f^whE1ks*9piNGf<##y~-6#P+Rhuv^T94k#p5 zJZC8$>{Zz6tii*%r@W)!K*ch<)nZl=!fUC#T7<$A&pa_9l)UxCRlXu$uTbzc4XH0Abj$_aPUPo!V|KloE3r_ zzp`iW`q(d@^Fy=1>3s!Rrcfz2G38{`+qr6huE$nKWso1KzIHYh=z-j!d@tb;ssr8r z_pPDJ1F9rY#W!b-tvQ&pp7fV^r7>|*&c_impWjpL%@0M8GtcDu(E!*1EPZp#IAM_& zA0Z-Ng23}nj1<0BRq0v70b-=|!VdF4J^zJbFS5m*DW)wz+IaAjVd=A`hFAXhs6Dm4U7@Y5O+`&@YVJSW4|~M?|C@pTZoL2BmH$`w fApcq9*