Advertisement
Guest User

Untitled

a guest
Feb 27th, 2013
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.03 KB | None | 0 0
  1. namespace Butterfly.HabboHotel.Users.UserDataManagement
  2. {
  3. using Butterfly;
  4. using Butterfly.HabboHotel.Achievements;
  5. using Butterfly.HabboHotel.Catalogs;
  6. using Butterfly.HabboHotel.Habbo.Users;
  7. using Butterfly.HabboHotel.Items;
  8. using Butterfly.HabboHotel.Pets;
  9. using Butterfly.HabboHotel.Rooms;
  10. using Butterfly.HabboHotel.Users.Authenticator;
  11. using Butterfly.HabboHotel.Users.Badges;
  12. using Butterfly.HabboHotel.Users.Inventory;
  13. using Butterfly.HabboHotel.Users.Messenger;
  14. using Butterfly.HabboHotel.Users.Subscriptions;
  15. using Butterfly.Storage;
  16. using Database_Manager.Database;
  17. using Database_Manager.Database.Session_Details.Interfaces;
  18. using System;
  19. using System.Collections;
  20. using System.Collections.Generic;
  21. using System.Data;
  22. using System.Runtime.InteropServices;
  23.  
  24. internal class UserDataFactory
  25. {
  26. internal static UserData GetUserData(int UserId)
  27. {
  28. DataRow dUserInfo;
  29. //DataTable dSongs;
  30. DataRow dGroups = null;
  31. UInt32 userID;
  32. dUserInfo = QueryManager.GetUserInfoByID(UserId);
  33.  
  34. if (dUserInfo == null)
  35. {
  36. return null;
  37. }
  38. userID = Convert.ToUInt32(dUserInfo["id"]);
  39. if (BCStorm.GetGame().GetClientManager().GetClientByUserID(userID) != null)
  40. {
  41. return null;
  42. }
  43.  
  44. if (BCStorm.groupsEnabled)
  45. {
  46. dGroups = QueryManager.GetUserGroups(userID);
  47. }
  48.  
  49. Dictionary<string, UserAchievement> achievements = new Dictionary<string, UserAchievement>();
  50.  
  51. List<uint> favouritedRooms = new List<uint>();
  52.  
  53. List<uint> ignores = new List<uint>();
  54.  
  55. List<string> tags = new List<string>();
  56.  
  57. Dictionary<string, Subscription> subscriptions = new Dictionary<string, Subscription>();
  58.  
  59. List<Badge> badges = new List<Badge>();
  60.  
  61. List<UserItem> inventory = new List<UserItem>();
  62.  
  63. List<AvatarEffect> effects = new List<AvatarEffect>();
  64.  
  65. Dictionary<uint, MessengerBuddy> friends = new Dictionary<uint, MessengerBuddy>();
  66.  
  67. string username = (string)dUserInfo["username"];
  68.  
  69. Dictionary<uint, MessengerRequest> requests = new Dictionary<uint, MessengerRequest>();
  70. List<RoomData> rooms = new List<RoomData>();
  71. Dictionary<uint, Pet> pets = new Dictionary<uint, Pet>();
  72. Dictionary<uint, int> quests = new Dictionary<uint, int>();
  73. Hashtable inventorySongs = new Hashtable();
  74. Habbo user = HabboFactory.GenerateHabbo(dUserInfo, dGroups);
  75.  
  76. return new UserData(userID, achievements, favouritedRooms, ignores, tags, subscriptions, badges, inventory, effects, friends, requests, rooms, pets, quests, inventorySongs, user);
  77. }
  78.  
  79. internal static UserData GetUserData(string sessionTicket, string ip, out byte errorCode)
  80. {
  81. DataRow row;
  82. DataTable table;
  83. DataTable table2;
  84. DataTable table3;
  85. DataTable table4;
  86. DataTable table5;
  87. DataTable table6;
  88. DataTable table7;
  89. DataTable table8;
  90. DataTable table9;
  91. DataTable table10;
  92. DataTable table11;
  93. DataTable table12;
  94. DataTable table13;
  95. DataRow group = null;
  96. uint num;
  97. using (IQueryAdapter adapter = BCStorm.GetDatabaseManager().getQueryreactor())
  98. {
  99. if (BCStorm.useSSO)
  100. {
  101. adapter.setQuery("SELECT * " +
  102. "FROM users " +
  103. "WHERE auth_ticket = @sso ");
  104. }
  105. else
  106. {
  107. adapter.setQuery("SELECT * " +
  108. "FROM users " +
  109. "WHERE auth_ticket = @sso ");
  110. }
  111.  
  112. adapter.addParameter("sso", sessionTicket);
  113.  
  114. row = adapter.getRow();
  115. if (row == null)
  116. {
  117. errorCode = 1;
  118. return null;
  119. }
  120. num = Convert.ToUInt32(row["id"]);
  121. if (BCStorm.GetGame().GetClientManager().GetClientByUserID(num) != null)
  122. {
  123.  
  124.  
  125. BCStorm.GetGame().GetClientManager().GetClientByUserID(num).Disconnect();
  126.  
  127. }
  128. string str = (string)row["lastdailycredits"];
  129. string str2 = DateTime.Today.ToString("MM/dd");
  130. if (str != str2)
  131. {
  132. adapter.runFastQuery(string.Concat(new object[] { "UPDATE users SET credits = credits + 3000, daily_respect_points = 3, lastdailycredits = '", str2, "' WHERE id = ", num }));
  133. row["credits"] = ((int)row["credits"]) + 0xbb8;
  134. }
  135. adapter.setQuery("SELECT * FROM user_achievement WHERE userid = " + num);
  136. table = adapter.getTable();
  137. adapter.setQuery("SELECT room_id FROM user_favorites WHERE user_id = " + num);
  138. table2 = adapter.getTable();
  139. adapter.setQuery("SELECT ignore_id FROM user_ignores WHERE user_id = " + num);
  140. table3 = adapter.getTable();
  141. adapter.setQuery("SELECT tag FROM user_tags WHERE user_id = " + num);
  142. table4 = adapter.getTable();
  143. adapter.setQuery("SELECT * FROM user_subscriptions WHERE user_id = " + num);
  144. table5 = adapter.getTable();
  145. adapter.setQuery("SELECT * FROM user_badges WHERE user_id = " + num);
  146. table6 = adapter.getTable();
  147. if (adapter.dbType == DatabaseType.MySQL)
  148. {
  149. adapter.setQuery("CALL getuseritems(" + num + ")");
  150. }
  151. else
  152. {
  153. adapter.setQuery("EXECUTE getuseritems " + num);
  154. }
  155. table7 = adapter.getTable();
  156. adapter.setQuery("SELECT * FROM user_effects WHERE user_id = " + num);
  157. table8 = adapter.getTable();
  158. adapter.setQuery(string.Concat(new object[] { "SELECT users.id,users.username,users.motto,users.look,users.last_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.sender WHERE messenger_friendships.receiver = ", num, " UNION ALL SELECT users.id,users.username,users.motto,users.look,users.last_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.receiver WHERE messenger_friendships.sender = ", num, " LIMIT 500" }));
  159. table9 = adapter.getTable();
  160. adapter.setQuery("SELECT messenger_requests.sender,messenger_requests.receiver,users.username FROM users JOIN messenger_requests ON users.id = messenger_requests.sender WHERE messenger_requests.receiver = " + num + " LIMIT 150");
  161. table10 = adapter.getTable();
  162. adapter.setQuery("SELECT rooms.*, room_active.active_users FROM rooms LEFT JOIN room_active ON (room_active.roomid = rooms.id) WHERE owner = @name");
  163. adapter.addParameter("name", (string)row["username"]);
  164. table11 = adapter.getTable();
  165. adapter.setQuery("SELECT * FROM user_pets WHERE user_id = " + num + " AND room_id = 0");
  166. table12 = adapter.getTable();
  167. adapter.setQuery("SELECT * FROM user_quests WHERE user_id = " + num);
  168. table13 = adapter.getTable();
  169. if (BCStorm.groupsEnabled)
  170. {
  171. adapter.setQuery("SELECT groups_memberships.*, groups_details.* FROM groups_memberships LEFT JOIN groups_details ON groups_memberships.groupid = groups_details.id WHERE groups_memberships.userid = " + num + " AND groups_memberships.is_current = '1'");
  172. group = adapter.getRow();
  173. }
  174. adapter.setQuery(string.Concat(new object[] { "UPDATE users SET ip_last = @ip WHERE id = ", num, "; UPDATE user_info SET login_timestamp = '", BCStorm.GetUnixTimestamp(), "' WHERE user_id = ", num, " ; " }));
  175. adapter.addParameter("ip", ip);
  176. adapter.runQuery();
  177. if (adapter.dbType == DatabaseType.MySQL)
  178. {
  179. adapter.runFastQuery("REPLACE INTO user_online VALUES (" + num + ")");
  180. }
  181. else
  182. {
  183. adapter.runFastQuery(string.Concat(new object[] { "IF NOT EXISTS (SELECT userid FROM user_online WHERE userid = ", num, ") INSERT INTO user_online VALUES (", num, ")" }));
  184. }
  185. }
  186. Dictionary<string, UserAchievement> achievements = new Dictionary<string, UserAchievement>();
  187. foreach (DataRow row3 in table.Rows)
  188. {
  189. string achievementGroup = (string)row3["groupname"];
  190. int level = (int)row3["level"];
  191. int progress = (int)row3["progress"];
  192. UserAchievement achievement = new UserAchievement(achievementGroup, level, progress);
  193. achievements.Add(achievementGroup, achievement);
  194. }
  195. List<uint> favouritedRooms = new List<uint>();
  196. foreach (DataRow row3 in table2.Rows)
  197. {
  198. uint item = Convert.ToUInt32(row3["room_id"]);
  199. favouritedRooms.Add(item);
  200. }
  201. List<uint> ignores = new List<uint>();
  202. foreach (DataRow row3 in table3.Rows)
  203. {
  204. uint num5 = Convert.ToUInt32(row3["ignore_id"]);
  205. ignores.Add(num5);
  206. }
  207. List<string> tags = new List<string>();
  208. foreach (DataRow row3 in table4.Rows)
  209. {
  210. string str4 = (string)row3["tag"];
  211. tags.Add(str4);
  212. }
  213. Dictionary<string, Subscription> subscriptions = new Dictionary<string, Subscription>();
  214. foreach (DataRow row3 in table5.Rows)
  215. {
  216. string key = (string)row3["subscription_id"];
  217. int timeExpire = (int)row3["timestamp_expire"];
  218. subscriptions.Add(key, new Subscription(key, timeExpire));
  219. }
  220. List<Badge> badges = new List<Badge>();
  221. foreach (DataRow row3 in table6.Rows)
  222. {
  223. string code = (string)row3["badge_id"];
  224. int slot = (int)row3["badge_slot"];
  225. badges.Add(new Badge(code, slot));
  226. }
  227. List<UserItem> inventory = new List<UserItem>();
  228. foreach (DataRow row3 in table7.Rows)
  229. {
  230. string str7;
  231. uint id = Convert.ToUInt32(row3[0]);
  232. uint baseItem = Convert.ToUInt32(row3[1]);
  233. if (!DBNull.Value.Equals(row3[2]))
  234. {
  235. str7 = (string)row3[2];
  236. }
  237. else
  238. {
  239. str7 = string.Empty;
  240. }
  241. uint rareid = Convert.ToUInt32(row3[3]);
  242. string groupstring = (string)row3[4];
  243. inventory.Add(new UserItem(id, baseItem, str7, rareid, groupstring, num));
  244. }
  245. List<AvatarEffect> effects = new List<AvatarEffect>();
  246. foreach (DataRow row3 in table8.Rows)
  247. {
  248. int effectId = (int)row3["effect_id"];
  249. int totalDuration = (int)row3["total_duration"];
  250. bool activated = BCStorm.EnumToBool((string)row3["is_activated"]);
  251. double activateTimestamp = (double)row3["activated_stamp"];
  252. effects.Add(new AvatarEffect(effectId, totalDuration, activated, activateTimestamp));
  253. }
  254. Dictionary<uint, MessengerBuddy> friends = new Dictionary<uint, MessengerBuddy>();
  255. string str9 = (string)row["username"];
  256. foreach (DataRow row3 in table9.Rows)
  257. {
  258. uint num14 = Convert.ToUInt32(row3["id"]);
  259. string pUsername = (string)row3["username"];
  260. string pLook = (string)row3["look"];
  261. string pMotto = (string)row3["motto"];
  262. string pLastOnline = (string)row3["last_online"];
  263. if ((num14 != num) && !friends.ContainsKey(num14))
  264. {
  265. friends.Add(num14, new MessengerBuddy(num14, pUsername, pLook, pMotto, pLastOnline));
  266. }
  267. }
  268. Dictionary<uint, MessengerRequest> requests = new Dictionary<uint, MessengerRequest>();
  269. foreach (DataRow row3 in table10.Rows)
  270. {
  271. uint num15 = Convert.ToUInt32(row3["sender"]);
  272. uint num16 = Convert.ToUInt32(row3["receiver"]);
  273. string str14 = (string)row3["username"];
  274. if (num15 != num)
  275. {
  276. if (!requests.ContainsKey(num15))
  277. {
  278. requests.Add(num15, new MessengerRequest(num, num15, str14));
  279. }
  280. }
  281. else if (!requests.ContainsKey(num16))
  282. {
  283. requests.Add(num16, new MessengerRequest(num, num16, str14));
  284. }
  285. }
  286. List<RoomData> rooms = new List<RoomData>();
  287. foreach (DataRow row3 in table11.Rows)
  288. {
  289. uint roomId = Convert.ToUInt32(row3["id"]);
  290. rooms.Add(BCStorm.GetGame().GetRoomManager().FetchRoomData(roomId, row3));
  291. }
  292. Dictionary<uint, Pet> pets = new Dictionary<uint, Pet>();
  293. foreach (DataRow row3 in table12.Rows)
  294. {
  295. Pet pet = Catalog.GeneratePetFromRow(row3);
  296. pets.Add(pet.PetId, pet);
  297. }
  298. Dictionary<uint, int> quests = new Dictionary<uint, int>();
  299. foreach (DataRow row3 in table13.Rows)
  300. {
  301. uint num18 = Convert.ToUInt32(row3["quest_id"]);
  302. int num19 = (int)row3["progress"];
  303. quests.Add(num18, num19);
  304. }
  305. Hashtable inventorySongs = new Hashtable();
  306. Habbo user = HabboFactory.GenerateHabbo(row, group);
  307. row = null;
  308. table = null;
  309. table2 = null;
  310. table3 = null;
  311. table4 = null;
  312. table5 = null;
  313. table6 = null;
  314. table7 = null;
  315. table8 = null;
  316. table9 = null;
  317. table10 = null;
  318. table11 = null;
  319. table12 = null;
  320. errorCode = 0;
  321. return new UserData(num, achievements, favouritedRooms, ignores, tags, subscriptions, badges, inventory, effects, friends, requests, rooms, pets, quests, inventorySongs, user);
  322. }
  323. }
  324. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement