I have made an interactions enabler to automatically enable the actions "removed" by TQ.Simple to use, just put it in your Conquer Online 2.0 directory ("C:\Program Files\Conquer Online 2.0" by default) and run.
Scan if you want.
Made using C# and .NET 2.0 so if you STILL don't have the .NET framework shoot yourself in the face.
Code:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace InteractionsEnabler {
static class Program {
/// <summary>
/// 1024x768 GUI file RELATIVE location.
/// </summary>
const string GUI_FILE_1024 = "ini/GUI.ini";
/// <summary>
/// 800x600 GUI file RELATIVE location.
/// </summary>
const string GUI_FILE_800 = "ini/GUI800X600.ini";
/// <summary>
/// Ini Setting block
/// Section, Key, and Value
/// </summary>
struct IniSettingBlock {
public string Section;
public string Key;
public string Value;
public IniSettingBlock(string s, string k, string v) {
Section = s;
Key = k;
Value = v;
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
List<IniSettingBlock> settingsList = initList();
if (!checkPatch(GUI_FILE_1024, settingsList)) {
applyPatch(GUI_FILE_1024, settingsList);
}
if (!checkPatch(GUI_FILE_800, settingsList)) {
applyPatch(GUI_FILE_800, settingsList);
}
Console.WriteLine("Interactions enabled, you may now reload the ini values by changing resolution or restarting client");
Console.WriteLine("Press any key to close...");
Console.ReadKey();
}
/// <summary>
/// Build list of ini blocks
/// </summary>
/// <returns>list of ini blocks</returns>
private static List<IniSettingBlock> initList() {
List<IniSettingBlock> ret = new List<IniSettingBlock>();
ret.Add(new IniSettingBlock("360-2432", "x", "15"));
ret.Add(new IniSettingBlock("360-2433", "x", "130"));
ret.Add(new IniSettingBlock("360-2434", "y", "30"));
ret.Add(new IniSettingBlock("360-2435", "x", "130"));
ret.Add(new IniSettingBlock("360-2436", "y", "60"));
ret.Add(new IniSettingBlock("360-2437", "y", "60"));
ret.Add(new IniSettingBlock("360-2438", "x", "15"));
ret.Add(new IniSettingBlock("360-2438", "y", "90"));
return ret;
}
/// <summary>
/// Check status of patch, returns true if the values are the patched values, false otherwise
/// </summary>
/// <param name="file">path to file</param>
/// <param name="lst">list of ini blocks to check</param>
/// <returns></returns>
private static bool checkPatch(string file, List<IniSettingBlock> lst) {
IniFile gui = new IniFile(file);
bool patched = false;
Console.WriteLine("Checking patch status of \"{0}\"...", file);
foreach (IniSettingBlock block in lst) {
patched = (gui.IniReadValue(block.Section, block.Key) == block.Value);
if (!patched) {
break;
}
}
Console.WriteLine("\"{0}\" is {1}", file, (patched ? "patched" : "not patched"));
return patched;
}
/// <summary>
/// Patch file
/// </summary>
/// <param name="file">path to file</param>
/// <param name="lst">list of ini blocks to apply</param>
private static void applyPatch(string file, List<IniSettingBlock> lst) {
Console.WriteLine("Patching \"{0}\"...", file);
IniFile gui = new IniFile(file);
foreach (IniSettingBlock block in lst) {
gui.IniWriteValue(block.Section, block.Key, block.Value);
}
Console.WriteLine("File: \"{0}\" patched successfully", file);
}
}
}






