namespace Holo.Managers { using Holo; using System; using System.Collections; using System.Runtime.InteropServices; using System.Text; public static class catalogueManager { private static Hashtable ᙅ; private static Hashtable 4AAAA; private static void ᙄ(int ᙂ) { string[] strArray = DB.runReadRow("SELECT indexname,minrank,displayname,style_layout,img_header,img_side,label_description,label_misc,label_moredetails FROM catalogue_pages WHERE indexid = '" + ᙂ + "'"); if ((ᙂ <= 0) || (strArray.Length != 0)) { string key = ""; StringBuilder builder = new StringBuilder(); catalogueManager.ᙃ ᙃ = new catalogueManager.ᙃ(); if (ᙂ > 0) { key = strArray[0]; ᙃ.displayName = strArray[2]; ᙃ.minRank = byte.Parse(strArray[1]); builder.Append(string.Concat(new object[] { "i:", key, Convert.ToChar(13), "n:", strArray[2], Convert.ToChar(13), "l:", strArray[3], Convert.ToChar(13) })); if (strArray[4] != "") { builder.Append("g:" + strArray[4] + Convert.ToChar(13)); } if (strArray[5] != "") { builder.Append("e:" + strArray[5] + Convert.ToChar(13)); } if (strArray[6] != "") { builder.Append("h:" + strArray[6] + Convert.ToChar(13)); } if (strArray[8] != "") { builder.Append("w:" + strArray[8] + Convert.ToChar(13)); } if (strArray[7] != "") { string[] strArray2 = strArray[7].Split(new char[] { Convert.ToChar(13) }); for (int j = 0; j < strArray2.Length; j++) { builder.Append(strArray2[j] + Convert.ToChar(13)); } } } int[] numArray = DB.runReadColumn("SELECT tid FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray2 = DB.runReadColumn("SELECT typeid FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray3 = DB.runReadColumn("SELECT length FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray4 = DB.runReadColumn("SELECT width FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray5 = DB.runReadColumn("SELECT catalogue_cost FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray6 = DB.runReadColumn("SELECT door FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray7 = DB.runReadColumn("SELECT tradeable FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); int[] numArray8 = DB.runReadColumn("SELECT recycleable FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0, null); string[] strArray3 = DB.runReadColumn("SELECT catalogue_name FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0); string[] strArray4 = DB.runReadColumn("SELECT catalogue_description FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0); string[] strArray5 = DB.runReadColumn("SELECT name_cct FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0); string[] strArray6 = DB.runReadColumn("SELECT colour FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0); string[] strArray7 = DB.runReadColumn("SELECT top FROM catalogue_items WHERE catalogue_id_page = '" + ᙂ + "' ORDER BY catalogue_id_index ASC", 0); for (int i = 0; i < numArray.Length; i++) { if (stringManager.getStringPart(strArray5[i], 0, 4) != "deal") { 4AAAA.Add(numArray[i], new itemTemplate(strArray5[i], Convert.ToByte(numArray2[i]), strArray6[i], numArray3[i], numArray4[i], double.Parse(strArray7[i]), numArray6[i] == 1, numArray7[i] == 1, numArray8[i] == 1)); if (ᙂ != -1) { builder.Append(string.Concat(new object[] { "p:", strArray3[i], Convert.ToChar(9), strArray4[i], Convert.ToChar(9), numArray5[i], Convert.ToChar(9), Convert.ToChar(9) })); if (numArray2[i] == 0) { builder.Append("i"); } else { builder.Append("s"); } builder.Append(Convert.ToChar(9) + strArray5[i] + Convert.ToChar(9)); if (numArray2[i] == 0) { builder.Append(Convert.ToChar(9)); } else { builder.Append("0" + Convert.ToChar(9)); } if (numArray2[i] == 0) { builder.Append(Convert.ToChar(9)); } else { builder.Append(string.Concat(new object[] { numArray3[i], ",", numArray4[i], Convert.ToChar(9) })); } builder.Append(strArray5[i] + Convert.ToChar(9)); if (numArray2[i] > 0) { builder.Append(strArray6[i]); } builder.Append(Convert.ToChar(13)); } } else { int num3 = int.Parse(strArray5[i].Substring(4)); int[] numArray9 = DB.runReadColumn("SELECT tid FROM catalogue_deals WHERE id = '" + num3 + "'", 0, null); int[] numArray10 = DB.runReadColumn("SELECT amount FROM catalogue_deals WHERE id = '" + num3 + "'", 0, null); builder.Append(string.Concat(new object[] { "p:", strArray3[i], Convert.ToChar(9), strArray4[i], Convert.ToChar(9), numArray5[i], Convert.ToChar(9), Convert.ToChar(9), "d" })); builder.Append(Convert.ToChar(9), 4); builder.Append(string.Concat(new object[] { "deal", num3, Convert.ToChar(9), Convert.ToChar(9), numArray9.Length, Convert.ToChar(9) })); for (int k = 0; k < numArray9.Length; k++) { string str2 = DB.runRead("SELECT name_cct FROM catalogue_items WHERE tid = '" + numArray9[k] + "'"); string str3 = DB.runRead("SELECT colour FROM catalogue_items WHERE tid = '" + numArray9[k] + "'"); builder.Append(string.Concat(new object[] { str2, Convert.ToChar(9), numArray10[k], Convert.ToChar(9), str3, Convert.ToChar(9) })); } } } if (ᙂ != -1) { ᙃ.pageData = builder.ToString(); ᙅ.Add(key, ᙃ); } } } public static string getPage(string pageName, byte userRank) { try { catalogueManager.ᙃ ᙃ = (catalogueManager.ᙃ) ᙅ[pageName]; if (userRank < ᙃ.minRank) { return "holo.cast.catalogue.access_denied"; } return ᙃ.pageData; } catch { return "cast_catalogue.access_denied"; } } public static bool getPageExists(string pageName) { return ᙅ.ContainsKey(ᙅ.ContainsKey(pageName)); } public static string getPageIndex(byte userRank) { try { StringBuilder builder = new StringBuilder(); string[] strArray = DB.runReadColumn("SELECT indexname FROM catalogue_pages WHERE minrank <= '" + userRank + "' ORDER BY indexid ASC", 0); for (int i = 0; i < strArray.Length; i++) { if (ᙅ.ContainsKey(strArray[i])) { builder.Append(string.Concat(new object[] { strArray[i], Convert.ToChar(9), ((ᙃ) ᙅ[strArray[i]]).displayName, Convert.ToChar(13) })); } } return builder.ToString(); } catch { return Convert.ToChar(13).ToString(); } } public static itemTemplate getTemplate(int templateID) { try { return (itemTemplate) 4AAAA[templateID]; } catch { return new itemTemplate(); } } public static void handlePurchase(int templateID, int receiverID, int roomID, int decorID, int presentBoxID) { string sprite = getTemplate(templateID).Sprite; bool flag = true; switch (sprite) { case "wallpaper": case "landscape": case "floor": { int lastItemID = catalogueManager.lastItemID; DB.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", decorID, "' WHERE id = '", lastItemID, "' LIMIT 1" })); break; } case "roomdimmer": { int num2 = catalogueManager.lastItemID; string str2 = "1,#000000,155"; string str3 = "1,1,1,#000000,155"; DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_moodlight(id,roomid,preset_cur,preset_1,preset_2,preset_3) VALUES ('", num2, "','0','1','", str2, "','", str2, "','", str2, "')" })); DB.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", str3, "' WHERE id = '", num2, "' LIMIT 1" })); break; } case "door": case "doorB": case "doorC": case "doorD": case "teleport_door": { int num3 = catalogueManager.lastItemID; DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture(tid,ownerid,roomid,teleportid) VALUES ('", templateID, "','", receiverID, "','", roomID, "','", num3, "')" })); int num4 = catalogueManager.lastItemID; DB.runQuery(string.Concat(new object[] { "UPDATE furniture SET teleportid = '", num4, "' WHERE id = '", num3, "' LIMIT 1" })); if (presentBoxID > 0) { DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", num3, "')" })); DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", num4, "')" })); } flag = false; break; } case "ads_cltele": { int num5 = catalogueManager.lastItemID; DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture(tid,ownerid,roomid,teleportid) VALUES ('", templateID, "','", receiverID, "','", roomID, "','", num5, "')" })); int num6 = catalogueManager.lastItemID; DB.runQuery(string.Concat(new object[] { "UPDATE furniture SET teleportid = '", num6, "' WHERE id = '", num5, "' LIMIT 1" })); if (presentBoxID > 0) { DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", num5, "')" })); DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", num6, "')" })); } flag = false; break; } case "post.it": case "post.it.vd": DB.runQuery("UPDATE furniture SET var = '20' WHERE id = '" + catalogueManager.lastItemID + "' LIMIT 1"); break; default: if (stringManager.getStringPart(sprite, 0, 10) == "sound_set_") { int num8 = catalogueManager.lastItemID; int num9 = int.Parse(sprite.Substring(10)); DB.runQuery(string.Concat(new object[] { "UPDATE furniture SET soundmachine_soundset = '", num9, "' WHERE id = '", num8, "' LIMIT 1" })); } break; } if ((presentBoxID > 0) && flag) { DB.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", catalogueManager.lastItemID, "')" })); } } public static void Init() { Out.WriteLine("Avvio degli elementi del catalogo + oggetti..."); int[] numArray = DB.runReadColumn("SELECT indexid FROM catalogue_pages ORDER BY indexid", 0, null); ᙅ = new Hashtable(); 4AAAA = new Hashtable(); for (int i = 0; i < numArray.Length; i++) { ᙄ(numArray[i]); } ᙄ(-1); Out.WriteLine(string.Concat(new object[] { "Caricati con successo ", ᙅ.Count, " pagine di catalogo e ", 4AAAA.Count, " oggetti!" })); } public static string tradeItemList(int[] itemIDs) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < itemIDs.Length; i++) { if (itemIDs[i] != 0) { itemTemplate template = getTemplate(DB.runRead("SELECT tid FROM furniture WHERE id = '" + itemIDs[i] + "'", null)); builder.Append(string.Concat(new object[] { "SI", Convert.ToChar(30).ToString(), itemIDs[i], Convert.ToChar(30).ToString(), i, Convert.ToChar(30) })); if (template.typeID > 0) { builder.Append("S"); } else { builder.Append("I"); } builder.Append(string.Concat(new object[] { Convert.ToChar(30).ToString(), itemIDs[i], Convert.ToChar(30).ToString(), template.Sprite, Convert.ToChar(30) })); if (template.typeID > 0) { builder.Append(string.Concat(new object[] { template.Length, Convert.ToChar(30).ToString(), template.Width, Convert.ToChar(30).ToString(), DB.runRead("SELECT var FROM furniture WHERE id = '" + itemIDs[i] + "'"), Convert.ToChar(30).ToString() })); } builder.Append(string.Concat(new object[] { template.Colour, Convert.ToChar(30).ToString(), i, Convert.ToChar(30).ToString(), "/" })); } } return builder.ToString(); } public static string wallPositionOK(string wallPosition) { try { string[] strArray = wallPosition.Split(new char[] { ' ' }); if ((strArray[2] != "l") && (strArray[2] != "r")) { return ""; } string[] strArray2 = strArray[0].Substring(3).Split(new char[] { ',' }); int num = int.Parse(strArray2[0]); int num2 = int.Parse(strArray2[1]); if (((num < 0) || (num2 < 0)) || ((num > 200) || (num2 > 200))) { return ""; } string[] strArray3 = strArray[1].Substring(2).Split(new char[] { ',' }); int num3 = int.Parse(strArray3[0]); int num4 = int.Parse(strArray3[1]); if (((num3 < 0) || (num4 < 0)) || ((num3 > 200) || (num4 > 200))) { return ""; } return string.Concat(new object[] { ":w=", num, ",", num2, " l=", num3, ",", num4, " ", strArray[2] }); } catch { return ""; } } public static int lastItemID { get { return DB.runRead("SELECT MAX(id) FROM furniture", null); } } [StructLayout(LayoutKind.Sequential)] private struct ᙃ { internal string displayName; internal string pageData; internal byte minRank; } [StructLayout(LayoutKind.Sequential)] public struct itemTemplate { internal byte typeID; internal string Sprite; internal string Colour; internal int Length; internal int Width; internal double topH; internal bool isDoor; internal bool isTradeable; internal bool isRecycleable; public itemTemplate(bool b) { this.typeID = 1; this.Sprite = ""; this.Colour = "null"; this.Length = 1; this.Width = 1; this.topH = 0.0; this.isDoor = false; this.isTradeable = false; this.isRecycleable = false; } public itemTemplate(string Sprite, byte typeID, string Colour, int Length, int Width, double topH, bool isDoor, bool isTradeable, bool isRecycleable) { if (Sprite.Contains(" ")) { this.Sprite = Sprite.Split(new char[] { ' ' })[0]; this.Colour = Sprite.Split(new char[] { ' ' })[1]; } else { this.Sprite = Sprite; this.Colour = Colour; } this.typeID = typeID; this.Length = Length; this.Width = Width; this.topH = topH; this.isDoor = isDoor; this.isTradeable = isTradeable; this.isRecycleable = isRecycleable; } } } }