Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.03 KB | None | 0 0
  1. using Butterfly.HabboHotel.GameClients;
  2. using Butterfly.HabboHotel.Rooms.Wired.WiredHandlers.Interfaces;
  3. using Butterfly.Communication.Packets.Outgoing;
  4. using Butterfly.Communication.Packets.Outgoing.Structure;
  5. using Butterfly.HabboHotel.Items;
  6. using Butterfly.Database.Interfaces;
  7. using System.Data;
  8. using System.Collections.Generic;
  9. using Butterfly.HabboHotel.Roleplay;
  10. using Butterfly.HabboHotel.Roleplay.Player;
  11. using Butterfly.HabboHotel.Roleplay.Enemy;
  12. using Butterfly.Communication.Packets.Outgoing.WebSocket;
  13. using System.Linq;
  14.  
  15. namespace Butterfly.HabboHotel.Rooms.Wired.WiredHandlers.Effects
  16. {
  17. public class SuperWired : IWired, IWiredEffect, IWiredCycleable
  18. {
  19. private readonly WiredHandler handler;
  20. private readonly int itemID;
  21. private string message;
  22. public int Delay { get; set; }
  23. private bool disposed;
  24.  
  25. public SuperWired(string message, int mdelay, bool GodPermission, bool StaffPermission, WiredHandler handler, int itemID)
  26. {
  27. this.itemID = itemID;
  28. this.handler = handler;
  29. this.message = "";
  30.  
  31. this.Delay = mdelay;
  32. this.disposed = false;
  33.  
  34. string effet = "";
  35.  
  36. if (message.Contains(":"))
  37. effet = message.Split(new char[] { ':' })[0].ToLower();
  38. else
  39. effet = message;
  40.  
  41. switch (effet)
  42. {
  43. case "rpsendtimeuser":
  44. case "rptimespeed":
  45. case "cyclehoureffect":
  46. case "setenemy":
  47. case "enemyaggrostop":
  48. case "enemyaggrostart":
  49. case "addenemy":
  50. case "removeenemy":
  51. case "userpvp":
  52. case "pvp":
  53. case "addmunition":
  54. case "munition":
  55. case "rpsay":
  56. case "rpsayme":
  57. case "rpexp":
  58. case "rpremoveexp":
  59. case "removemoney":
  60. case "addmoney":
  61. case "work":
  62. case "health":
  63. case "healthplus":
  64. case "hit":
  65. case "weaponfarid":
  66. case "weaponcacid":
  67. case "removeenergy":
  68. case "addenergy":
  69. case "allowitemsbuy":
  70. case "inventoryadd":
  71. case "inventoryremove":
  72. case "sendroomid":
  73. case "botchoose":
  74. if (this.handler.GetRoom().RpRoom)
  75. this.message = message;
  76. else
  77. this.message = "";
  78. break;
  79.  
  80. case "alert":
  81. case "send":
  82. case "enablestaff":
  83. case "teleportdisabled":
  84. case "roomingamechat":
  85. case "jackanddaisy":
  86. case "openpage":
  87. case "playsounduser":
  88. case "playsoundroom":
  89. case "playmusicroom":
  90. case "playmusicuser":
  91. case "stopsounduser":
  92. case "stopsoundroom":
  93. if (StaffPermission)
  94. this.message = message;
  95. else
  96. this.message = "";
  97. break;
  98. case "badge":
  99. case "achievement":
  100. case "givelot":
  101. if (GodPermission)
  102. this.message = message;
  103. else
  104. this.message = "";
  105. break;
  106. case "moveto":
  107. case "reversewalk":
  108. case "speedwalk":
  109. case "configbot":
  110. case "rot":
  111. case "roommute":
  112. case "enable":
  113. case "dance":
  114. case "sit":
  115. case "lay":
  116. case "handitem":
  117. case "setspeed":
  118. case "freeze":
  119. case "unfreeze":
  120. case "roomdiagonal":
  121. case "roomoblique":
  122. case "point":
  123. case "usertimer":
  124. case "addusertimer":
  125. case "removeusertimer":
  126. case "addpoint":
  127. case "removepoint":
  128. case "ingame":
  129. case "setitemmode":
  130. case "addpointteam":
  131. case "breakwalk":
  132. case "allowshoot":
  133. case "transf":
  134. case "transfstop":
  135. case "pushpull":
  136. this.message = message;
  137. break;
  138. default:
  139. this.message = "";
  140. break;
  141. }
  142. }
  143.  
  144. public bool OnCycle(RoomUser user, Item item)
  145. {
  146. this.HandleEffect(user, item);
  147. return false;
  148. }
  149.  
  150. public bool Disposed()
  151. {
  152. return this.disposed;
  153. }
  154.  
  155. public void Handle(RoomUser user, Item TriggerItem)
  156. {
  157. if (string.IsNullOrEmpty(this.message) || this.message == ":")
  158. return;
  159.  
  160. if (this.Delay > 0)
  161. this.handler.RequestCycle(new WiredCycle(this, user, TriggerItem, this.Delay));
  162. else
  163. this.HandleEffect(user, TriggerItem);
  164. }
  165.  
  166. private void HandleEffect(RoomUser User, Item TriggerItem)
  167. {
  168. if (string.IsNullOrEmpty(this.message) || this.message == ":")
  169. return;
  170.  
  171. string Cmd = "";
  172. string Value = "";
  173.  
  174. if (this.message.Contains(":"))
  175. {
  176. Cmd = this.message.Split(new char[] { ':' })[0].ToLower();
  177. Value = this.message.Split(new char[] { ':' })[1];
  178. }
  179. else
  180. {
  181. Cmd = this.message;
  182. }
  183.  
  184. RpCommand(Cmd, Value, this.handler.GetRoom(), User, TriggerItem);
  185. UserCommand(Cmd, Value, User, TriggerItem);
  186. RoomCommand(Cmd, Value, this.handler.GetRoom(), TriggerItem, User);
  187. BotCommand(Cmd, Value, User, TriggerItem);
  188. }
  189.  
  190. private void RpCommand(string Cmd, string Value, Room Room, RoomUser User, Item TriggerItem)
  191. {
  192. if (Room == null || !Room.RpRoom)
  193. return;
  194.  
  195. if (User == null || User.GetClient() == null)
  196. return;
  197.  
  198. RolePlayer Rp = User.Roleplayer;
  199. if (Rp == null)
  200. return;
  201.  
  202. switch (Cmd)
  203. {
  204. case "botchoose":
  205. {
  206. List<string[]> ChooseList = new List<string[]>();
  207. if (string.IsNullOrEmpty(Value))
  208. {
  209. Rp.SendWebPacket(new BotChooseComposer(ChooseList));
  210. break;
  211. }
  212.  
  213. if (Value.Contains(","))
  214. {
  215. foreach (string pChoose in Value.Split(','))
  216. {
  217. List<string> list = pChoose.Split(';').ToList();
  218. if (list.Count == 3)
  219. {
  220. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotByName(list[0]);
  221. if (BotOrPet != null && BotOrPet.BotData != null)
  222. list.Add(BotOrPet.BotData.Look);
  223. else
  224. list.Add("");
  225.  
  226. ChooseList.Add(list.ToArray());
  227. }
  228. }
  229. }
  230. else
  231. {
  232. List<string> list = Value.Split(';').ToList();
  233. if (list.Count == 3)
  234. {
  235. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotByName(list[0]);
  236. if (BotOrPet != null && BotOrPet.BotData != null)
  237. list.Add(BotOrPet.BotData.Look);
  238. else
  239. list.Add("");
  240.  
  241. ChooseList.Add(list.ToArray());
  242. }
  243. }
  244. Rp.SendWebPacket(new BotChooseComposer(ChooseList));
  245. break;
  246. }
  247. case "rpsendtimeuser":
  248. {
  249. User.SendWhisperChat("Il est " + Room.RpHour + " heures et " + Room.RpMinute + " minutes");
  250. break;
  251. }
  252. case "setenemy":
  253. {
  254. string[] Params = Value.Split(';');
  255. if (Params.Length != 3)
  256. break;
  257.  
  258. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Params[0]);
  259. if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null)
  260. break;
  261.  
  262. RPEnemy RPEnemyConfig = null;
  263.  
  264. if(!BotOrPet.IsPet)
  265. RPEnemyConfig = ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().GetEnemyBot(BotOrPet.BotData.Id);
  266. else
  267. RPEnemyConfig = ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().GetEnemyPet(BotOrPet.BotData.Id);
  268.  
  269. if (RPEnemyConfig == null)
  270. break;
  271.  
  272. switch (Params[1])
  273. {
  274. case "health":
  275. {
  276. if (!int.TryParse(Params[2], out int ParamInt))
  277. break;
  278.  
  279. if (ParamInt <= 0)
  280. ParamInt = 0;
  281. if (ParamInt > 9999)
  282. ParamInt = 9999;
  283.  
  284. RPEnemyConfig.Health = ParamInt;
  285. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  286.  
  287. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  288. queryreactor.RunQuery("UPDATE roleplay_enemy SET health = '"+ ParamInt + "' WHERE id = '"+ RPEnemyConfig.Id + "'");
  289.  
  290. break;
  291. }
  292. case "weaponfarid":
  293. {
  294. if (!int.TryParse(Params[2], out int ParamInt))
  295. break;
  296.  
  297. if (ParamInt <= 0)
  298. ParamInt = 0;
  299. if (ParamInt > 9999)
  300. ParamInt = 9999;
  301.  
  302. RPEnemyConfig.WeaponGunId = ParamInt;
  303. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  304.  
  305. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  306. queryreactor.RunQuery("UPDATE roleplay_enemy SET weaponFarId = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  307. break;
  308. }
  309. case "weaponcacid":
  310. {
  311. if (!int.TryParse(Params[2], out int ParamInt))
  312. break;
  313.  
  314. if (ParamInt <= 0)
  315. ParamInt = 0;
  316. if (ParamInt > 9999)
  317. ParamInt = 9999;
  318.  
  319. RPEnemyConfig.WeaponCacId = ParamInt;
  320. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  321.  
  322. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  323. queryreactor.RunQuery("UPDATE roleplay_enemy SET weaponCacId = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  324. break;
  325. }
  326. case "deadtimer":
  327. {
  328. if (!int.TryParse(Params[2], out int ParamInt))
  329. break;
  330.  
  331. if (ParamInt <= 0)
  332. ParamInt = 0;
  333. if (ParamInt > 9999)
  334. ParamInt = 9999;
  335.  
  336. RPEnemyConfig.DeadTimer = ParamInt;
  337. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  338.  
  339. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  340. queryreactor.RunQuery("UPDATE roleplay_enemy SET deadTimer = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  341. break;
  342. }
  343. case "lootitemid":
  344. {
  345. int ParamInt = 0;
  346. if (!int.TryParse(Params[2], out ParamInt))
  347. break;
  348.  
  349. if (ParamInt <= 0)
  350. ParamInt = 0;
  351. if (ParamInt > 9999)
  352. ParamInt = 9999;
  353.  
  354. RPEnemyConfig.LootItemId = ParamInt;
  355. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  356.  
  357. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  358. queryreactor.RunQuery("UPDATE roleplay_enemy SET lootItemId = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  359. break;
  360. }
  361. case "moneydrop":
  362. {
  363. if (!int.TryParse(Params[2], out int ParamInt))
  364. break;
  365.  
  366. if (ParamInt <= 0)
  367. ParamInt = 0;
  368. if (ParamInt > 9999)
  369. ParamInt = 9999;
  370.  
  371. RPEnemyConfig.MoneyDrop = ParamInt;
  372. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  373.  
  374. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  375. queryreactor.RunQuery("UPDATE roleplay_enemy SET moneyDrop = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  376. break;
  377. }
  378. case "teamid":
  379. {
  380. if (!int.TryParse(Params[2], out int ParamInt))
  381. break;
  382.  
  383. if (ParamInt <= 0)
  384. ParamInt = 0;
  385. if (ParamInt > 9999)
  386. ParamInt = 9999;
  387.  
  388. RPEnemyConfig.TeamId = ParamInt;
  389. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  390.  
  391. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  392. queryreactor.RunQuery("UPDATE roleplay_enemy SET teamId = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  393. break;
  394. }
  395. case "aggrodistance":
  396. {
  397. if (!int.TryParse(Params[2], out int ParamInt))
  398. break;
  399.  
  400. if (ParamInt <= 0)
  401. ParamInt = 0;
  402. if (ParamInt > 9999)
  403. ParamInt = 9999;
  404.  
  405. RPEnemyConfig.AggroDistance = ParamInt;
  406. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  407.  
  408. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  409. queryreactor.RunQuery("UPDATE roleplay_enemy SET aggroDistance = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  410. break;
  411. }
  412. case "zonedistance":
  413. {
  414. if (!int.TryParse(Params[2], out int ParamInt))
  415. break;
  416.  
  417. if (ParamInt <= 0)
  418. ParamInt = 0;
  419. if (ParamInt > 9999)
  420. ParamInt = 9999;
  421.  
  422. RPEnemyConfig.ZoneDistance = ParamInt;
  423. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  424.  
  425. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  426. queryreactor.RunQuery("UPDATE roleplay_enemy SET zoneDistance = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  427. break;
  428. }
  429. case "resetposition":
  430. {
  431. RPEnemyConfig.ResetPosition = (Params[2] == "true");
  432. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  433.  
  434. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  435. queryreactor.RunQuery("UPDATE roleplay_enemy SET resetPosition = '" + ButterflyEnvironment.BoolToEnum(RPEnemyConfig.ResetPosition) + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  436. break;
  437. }
  438. case "lostaggrodistance":
  439. {
  440. if (!int.TryParse(Params[2], out int ParamInt))
  441. break;
  442.  
  443. if (ParamInt <= 0)
  444. ParamInt = 0;
  445. if (ParamInt > 9999)
  446. ParamInt = 9999;
  447.  
  448. RPEnemyConfig.LostAggroDistance = ParamInt;
  449. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  450.  
  451. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  452. queryreactor.RunQuery("UPDATE roleplay_enemy SET lostAggroDistance = '" + ParamInt + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  453. break;
  454. }
  455. case "zombiemode":
  456. {
  457. RPEnemyConfig.ZombieMode = (Params[2] == "true");
  458. BotOrPet.BotData.RoleBot.SetConfig(RPEnemyConfig);
  459.  
  460. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  461. queryreactor.RunQuery("UPDATE roleplay_enemy SET zombieMode = '" + ButterflyEnvironment.BoolToEnum(RPEnemyConfig.ZombieMode) + "' WHERE id = '" + RPEnemyConfig.Id + "'");
  462. break;
  463. }
  464. }
  465. break;
  466. }
  467. case "removeenemy":
  468. {
  469. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Value);
  470. if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null)
  471. break;
  472.  
  473. if (!BotOrPet.IsPet)
  474. {
  475. ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().RemoveEnemyBot(BotOrPet.BotData.Id);
  476. BotOrPet.BotData.RoleBot = null;
  477. BotOrPet.BotData.AiType = RoomBots.AIType.Generic;
  478. BotOrPet.BotData.GenerateBotAI(BotOrPet.VirtualId);
  479. }
  480. else
  481. {
  482. ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().RemoveEnemyPet(BotOrPet.BotData.Id);
  483. BotOrPet.BotData.RoleBot = null;
  484. BotOrPet.BotData.AiType = RoomBots.AIType.Pet;
  485. BotOrPet.BotData.GenerateBotAI(BotOrPet.VirtualId);
  486. }
  487. break;
  488. }
  489. case "addenemy":
  490. {
  491. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Value);
  492. if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot != null)
  493. break;
  494.  
  495. if (!BotOrPet.IsPet)
  496. {
  497. RPEnemy RPEnemyConfig = ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().AddEnemyBot(BotOrPet.BotData.Id);
  498. if (RPEnemyConfig != null)
  499. {
  500. BotOrPet.BotData.RoleBot = new RoleBot(RPEnemyConfig);
  501. BotOrPet.BotData.AiType = RoomBots.AIType.RolePlayBot;
  502. BotOrPet.BotData.GenerateBotAI(BotOrPet.VirtualId);
  503. }
  504. }
  505. else
  506. {
  507. RPEnemy RPEnemyConfig = ButterflyEnvironment.GetGame().GetRoleplayManager().GetEnemyManager().AddEnemyPet(BotOrPet.BotData.Id);
  508. if (RPEnemyConfig != null)
  509. {
  510. BotOrPet.BotData.RoleBot = new RoleBot(RPEnemyConfig);
  511. BotOrPet.BotData.AiType = RoomBots.AIType.RolePlayPet;
  512. BotOrPet.BotData.GenerateBotAI(BotOrPet.VirtualId);
  513. }
  514. }
  515. break;
  516. }
  517. case "enemyaggrostop":
  518. {
  519. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Value);
  520. if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null)
  521. break;
  522.  
  523. BotOrPet.BotData.RoleBot.ResetAggro();
  524.  
  525. break;
  526. }
  527. case "enemyaggrostart":
  528. {
  529. RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Value);
  530. if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null)
  531. break;
  532.  
  533. BotOrPet.BotData.RoleBot.AggroVirtuelId = User.VirtualId;
  534. BotOrPet.BotData.RoleBot.AggroTimer = 0;
  535.  
  536. break;
  537. }
  538. case "sendroomid":
  539. {
  540. int RoomId;
  541. if (int.TryParse(Value, out RoomId))
  542. {
  543. Room room = ButterflyEnvironment.GetGame().GetRoomManager().LoadRoom(RoomId);
  544. if (room != null && room.RoomData.OwnerId == Room.RoomData.OwnerId)
  545. {
  546. User.GetClient().GetHabbo().IsTeleporting = true;
  547. User.GetClient().GetHabbo().TeleportingRoomID = RoomId;
  548. User.GetClient().GetHabbo().PrepareRoom(RoomId, "");
  549. }
  550. }
  551. break;
  552. }
  553. case "inventoryadd":
  554. {
  555. int ItemId = 0;
  556. int.TryParse(Value, out ItemId);
  557.  
  558. RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(ItemId);
  559. if (RpItem == null)
  560. break;
  561.  
  562. Rp.AddInventoryItem(RpItem.Id);
  563. break;
  564. }
  565. case "inventoryremove":
  566. {
  567. int ItemId = 0;
  568. int.TryParse(Value, out ItemId);
  569.  
  570. RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(ItemId);
  571. if (RpItem == null)
  572. break;
  573.  
  574. Rp.RemoveInventoryItem(RpItem.Id);
  575. break;
  576. }
  577. case "userpvp":
  578. {
  579. if (Value == "true")
  580. Rp.PvpEnable = true;
  581. else
  582. Rp.PvpEnable = false;
  583. break;
  584. }
  585. case "allowitemsbuy":
  586. {
  587. List<RPItem> ItemsList = new List<RPItem>();
  588. User.AllowBuyItems.Clear();
  589.  
  590. if (string.IsNullOrEmpty(Value))
  591. {
  592. Rp.SendItemsList(ItemsList);
  593. break;
  594. }
  595.  
  596. if (Value.Contains(","))
  597. {
  598. foreach (string pId in Value.Split(','))
  599. {
  600. int Id = 0;
  601. if (!int.TryParse(pId, out Id))
  602. continue;
  603.  
  604. RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(Id);
  605. if (RpItem == null)
  606. continue;
  607. ItemsList.Add(RpItem);
  608. User.AllowBuyItems.Add(Id);
  609. }
  610. }
  611. else
  612. {
  613. int Id = 0;
  614. if (!int.TryParse(Value, out Id))
  615. break;
  616.  
  617. RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(Id);
  618. if (RpItem == null)
  619. break;
  620. ItemsList.Add(RpItem);
  621. User.AllowBuyItems.Add(Id);
  622. }
  623.  
  624. Rp.SendItemsList(ItemsList);
  625.  
  626. break;
  627. }
  628. case "removeenergy":
  629. {
  630. int Nb = 0;
  631. int.TryParse(Value, out Nb);
  632.  
  633. Rp.RemoveEnergy(Nb);
  634.  
  635. Rp.SendUpdate();
  636. break;
  637. }
  638. case "addenergy":
  639. {
  640. int Nb = 0;
  641. int.TryParse(Value, out Nb);
  642.  
  643. Rp.AddEnergy(Nb);
  644.  
  645. Rp.SendUpdate();
  646. break;
  647. }
  648. case "weaponfarid":
  649. {
  650. int Nb = 0;
  651. int.TryParse(Value, out Nb);
  652. if (Nb < 0 || Nb > 2)
  653. Nb = 0;
  654.  
  655. Rp.WeaponGun = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponGun(Nb);
  656.  
  657. break;
  658. }
  659. case "weaponcacid":
  660. {
  661. int Nb = 0;
  662. int.TryParse(Value, out Nb);
  663.  
  664. if (Nb < 0 || Nb > 3)
  665. Nb = 0;
  666.  
  667. Rp.WeaponCac = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponCac(Nb);
  668. break;
  669. }
  670. case "pvp":
  671. {
  672. if (Value == "true")
  673. Room.Pvp = true;
  674. else
  675. Room.Pvp = false;
  676. break;
  677. }
  678. case "munition":
  679. {
  680. int Nb = 0;
  681. int.TryParse(Value, out Nb);
  682. if (Nb > 99)
  683. Nb = 99;
  684. if (Nb < 0)
  685. Nb = 0;
  686.  
  687. Rp.Munition = Nb;
  688.  
  689. Rp.SendUpdate();
  690. break;
  691. }
  692. case "addmunition":
  693. {
  694. int Nb = 0;
  695. int.TryParse(Value, out Nb);
  696.  
  697. Rp.AddMunition(Nb);
  698. Rp.SendUpdate();
  699. break;
  700. }
  701. case "removemunition":
  702. {
  703. int Nb = 0;
  704. int.TryParse(Value, out Nb);
  705.  
  706. Rp.RemoveMunition(Nb);
  707. Rp.SendUpdate();
  708. break;
  709. }
  710. case "rpexp":
  711. {
  712. int Nb = 0;
  713. int.TryParse(Value, out Nb);
  714. if (Nb <= 0)
  715. break;
  716.  
  717. Rp.AddExp(Nb);
  718. break;
  719. }
  720. case "rpremoveexp":
  721. {
  722. int Nb = 0;
  723. int.TryParse(Value, out Nb);
  724. if (Nb <= 0)
  725. break;
  726.  
  727. Rp.RemoveExp(Nb);
  728. break;
  729. }
  730. case "removemoney":
  731. {
  732. int Nb = 0;
  733. int.TryParse(Value, out Nb);
  734. if (Nb <= 0)
  735. break;
  736.  
  737. if (Rp.Money - Nb < 0)
  738. {
  739. Rp.Money = 0;
  740. }
  741. else
  742. {
  743. Rp.Money -= Nb;
  744. }
  745. Rp.SendUpdate();
  746. break;
  747. }
  748. case "addmoney":
  749. {
  750. int Nb = 0;
  751. int.TryParse(Value, out Nb);
  752. if (Nb <= 0)
  753. break;
  754.  
  755. Rp.Money += Nb;
  756. Rp.SendUpdate();
  757. break;
  758. }
  759. case "health":
  760. {
  761. int Nb = 0;
  762. int.TryParse(Value, out Nb);
  763. if (Nb <= 0)
  764. break;
  765.  
  766. if (Nb > Rp.HealthMax)
  767. Rp.Health = Rp.HealthMax;
  768. else
  769. Rp.Health = Nb;
  770. Rp.SendUpdate();
  771. break;
  772. }
  773. case "healthplus":
  774. {
  775. int Nb = 0;
  776. int.TryParse(Value, out Nb);
  777. if (Nb <= 0)
  778. break;
  779.  
  780. Rp.AddHealth(Nb);
  781.  
  782. Rp.SendUpdate();
  783. break;
  784. }
  785. case "hit":
  786. {
  787. int Nb = 0;
  788. int.TryParse(Value, out Nb);
  789. if (Nb <= 0)
  790. break;
  791.  
  792. Rp.Hit(User, Nb, Room, false, true);
  793. Rp.SendUpdate();
  794. break;
  795. }
  796. case "rpsay":
  797. {
  798. User.OnChat(Value, 0, false);
  799. break;
  800. }
  801. case "rpsayme":
  802. {
  803. User.OnChatMe(Value, 0, false);
  804. break;
  805. }
  806. }
  807. }
  808.  
  809. private void BotCommand(string Cmd, string Value, RoomUser User, Item TriggerItem)
  810. {
  811. if (User == null || !User.IsBot)
  812. return;
  813.  
  814. switch (Cmd)
  815. {
  816. case "dance":
  817. {
  818. int danceid;
  819. if (int.TryParse(Value, out danceid))
  820. {
  821. if (danceid < 0 || danceid > 4)
  822. danceid = 0;
  823. if (danceid > 0 && User.CarryItemID > 0)
  824. User.CarryItem(0);
  825. User.DanceId = danceid;
  826. User.mRoom.SendPacket(new DanceComposer(User, danceid));
  827. }
  828.  
  829. break;
  830. }
  831.  
  832. case "handitem":
  833. {
  834. int carryid;
  835. if (int.TryParse(Value, out carryid))
  836. User.CarryItem(carryid, true);
  837. break;
  838. }
  839. case "sit":
  840. {
  841. if (User.RotBody % 2 == 0)
  842. {
  843. User.SetStatus("sit", "0.5");
  844.  
  845. User.IsSit = true;
  846. User.UpdateNeeded = true;
  847. }
  848. break;
  849. }
  850.  
  851. case "lay":
  852. {
  853. if (User.RotBody % 2 == 0)
  854. {
  855. User.SetStatus("lay", "0.7");
  856.  
  857. User.IsLay = true;
  858. User.UpdateNeeded = true;
  859. }
  860. break;
  861. }
  862.  
  863. case "enable":
  864. {
  865. int NumEnable;
  866. if (!int.TryParse(Value, out NumEnable))
  867. return;
  868.  
  869. if (!ButterflyEnvironment.GetGame().GetEffectsInventoryManager().EffectExist(NumEnable, false))
  870. return;
  871.  
  872. User.ApplyEffect(NumEnable);
  873. break;
  874. }
  875.  
  876. case "breakwalk":
  877. {
  878. if (Value == "true")
  879. User.breakwalk = true;
  880. else
  881. User.breakwalk = false;
  882.  
  883. break;
  884. }
  885.  
  886. case "freeze":
  887. {
  888. int Seconde = 0;
  889. int.TryParse(Value, out Seconde);
  890. Seconde = Seconde * 2;
  891. User.Freeze = true;
  892. User.FreezeEndCounter = Seconde;
  893. break;
  894. }
  895. case "unfreeze":
  896. {
  897. User.Freeze = false;
  898. User.FreezeEndCounter = 0;
  899. break;
  900. }
  901. }
  902. }
  903.  
  904. private void RoomCommand(string Cmd, string Value, Room Room, Item TriggerItem, RoomUser User)
  905. {
  906. if (Room == null)
  907. return;
  908.  
  909. switch (Cmd)
  910. {
  911. case "stopsoundroom":
  912. {
  913. Room.SendPacketWeb(new StopSoundComposer(Value));
  914. break;
  915. }
  916. case "playsoundroom":
  917. {
  918. Room.SendPacketWeb(new PlaySoundComposer(Value, 1)); //Type = Trax
  919. break;
  920. }
  921. case "playmusicroom":
  922. {
  923. Room.SendPacketWeb(new PlaySoundComposer(Value, 2, true)); //Type = Trax
  924. break;
  925. }
  926. case "configbot":
  927. {
  928. string[] Params = Value.Split(';');
  929.  
  930. RoomUser Bot = Room.GetRoomUserManager().GetBotByName(Params[0]);
  931. if (Bot == null)
  932. return;
  933.  
  934. switch (Params[1])
  935. {
  936. case "enable":
  937. {
  938. if (Params.Length < 3)
  939. break;
  940.  
  941. int.TryParse(Params[2], out int IntValue);
  942.  
  943. if (!ButterflyEnvironment.GetGame().GetEffectsInventoryManager().EffectExist(IntValue, false))
  944. return;
  945.  
  946. if (Bot.CurrentEffect != IntValue)
  947. Bot.ApplyEffect(IntValue);
  948.  
  949. if (Bot.BotData.Enable != IntValue)
  950. {
  951. Bot.BotData.Enable = IntValue;
  952. }
  953. break;
  954. }
  955. case "handitem":
  956. {
  957. if (Params.Length < 3)
  958. break;
  959.  
  960. int.TryParse(Params[2], out int IntValue);
  961.  
  962. if (Bot.CarryItemID != IntValue)
  963. Bot.CarryItem(IntValue, true);
  964.  
  965. if (Bot.BotData.Handitem != IntValue)
  966. {
  967. Bot.BotData.Handitem = IntValue;
  968. }
  969. break;
  970. }
  971. case "rot":
  972. {
  973. if (Params.Length < 3)
  974. break;
  975.  
  976. int.TryParse(Params[2], out int IntValue);
  977. IntValue = (IntValue > 7 || IntValue < 0) ? 0 : IntValue;
  978.  
  979. if (Bot.RotBody != IntValue)
  980. {
  981. Bot.RotBody = IntValue;
  982. Bot.RotHead = IntValue;
  983. Bot.UpdateNeeded = true;
  984. }
  985.  
  986. if (Bot.BotData.Rot != IntValue)
  987. {
  988. Bot.BotData.Rot = IntValue;
  989. }
  990. break;
  991. }
  992. case "sit":
  993. {
  994. if (Bot.BotData.Status == 1)
  995. {
  996. Bot.BotData.Status = 0;
  997.  
  998. Bot.RemoveStatus("sit");
  999. Bot.IsSit = false;
  1000. Bot.UpdateNeeded = true;
  1001. }
  1002. else
  1003. {
  1004. if (!Bot.IsSit)
  1005. {
  1006. Bot.SetStatus("sit", (Bot.IsPet) ? "" : "0.5");
  1007. Bot.IsSit = true;
  1008. Bot.UpdateNeeded = true;
  1009. }
  1010.  
  1011. Bot.BotData.Status = 1;
  1012. }
  1013. break;
  1014. }
  1015. case "lay":
  1016. {
  1017. if (Bot.BotData.Status == 2)
  1018. {
  1019. Bot.BotData.Status = 0;
  1020.  
  1021. Bot.RemoveStatus("lay");
  1022. Bot.IsSit = false;
  1023. Bot.UpdateNeeded = true;
  1024. }
  1025. else
  1026. {
  1027. if (!Bot.IsLay)
  1028. {
  1029. Bot.SetStatus("lay", (Bot.IsPet) ? "" : "0.7");
  1030. Bot.IsLay = true;
  1031. Bot.UpdateNeeded = true;
  1032. }
  1033.  
  1034. Bot.BotData.Status = 2;
  1035. }
  1036. break;
  1037. }
  1038. }
  1039. break;
  1040. }
  1041. case "rptimespeed":
  1042. {
  1043. if (!Room.RpRoom)
  1044. break;
  1045.  
  1046. if (Value == "true")
  1047. Room.RpTimeSpeed = true;
  1048. else
  1049. Room.RpTimeSpeed = false;
  1050.  
  1051. break;
  1052. }
  1053. case "cyclehoureffect":
  1054. {
  1055. if (!Room.RpRoom)
  1056. break;
  1057.  
  1058. if (Value == "true")
  1059. Room.RpCycleHourEffect = true;
  1060. else
  1061. Room.RpCycleHourEffect = false;
  1062.  
  1063. break;
  1064. }
  1065. case "jackanddaisy":
  1066. {
  1067. RoomUser Bot = null;
  1068. if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1)
  1069. Bot = Room.GetRoomUserManager().GetBotOrPetByName("Jack");
  1070. else
  1071. Bot = Room.GetRoomUserManager().GetBotOrPetByName("Daisy");
  1072.  
  1073. if (Bot == null)
  1074. break;
  1075.  
  1076. List<string> Phrases = new List<string>();
  1077.  
  1078. switch (Value)
  1079. {
  1080. case "wait":
  1081. {
  1082.  
  1083. Phrases.Add("Merci de patienter, le jeu va bientôt commencer !");
  1084. Phrases.Add("Le jeu ne devrait pas tarder à commencer !");
  1085. Phrases.Add("Le jeu va commencer dans quelques minutes !");
  1086. Phrases.Add("Le jeu va commencer dans quelques instants");
  1087. Phrases.Add("Patience, le jeu va débuter sous peu !");
  1088. break;
  1089. }
  1090. case "win":
  1091. {
  1092. if (Bot.BotData.Name == "Jack")
  1093. {
  1094. Phrases.Add("Fichtre... #username# a gagné !");
  1095. Phrases.Add("Et c'est ce moussaillon de #username# qui repart avec le trésor !");
  1096. Phrases.Add("#username# vient de décrocher une très belle surprise !");
  1097. }
  1098. else
  1099. {
  1100. Phrases.Add("Félicitations à #username# qui remporte la partie !");
  1101. Phrases.Add("Félicitons #username# qui remporte la partie !");
  1102. Phrases.Add("La chance était du côté de #username# aujourd'hui");
  1103. }
  1104. break;
  1105. }
  1106. case "loose":
  1107. {
  1108. if (Bot.BotData.Name == "Jack")
  1109. {
  1110. Phrases.Add("Oulà ! #username# viens de se faire botter l'arrière train' !");
  1111. Phrases.Add("Et #username# qui rejoint l'équipe des loosers");
  1112. Phrases.Add("Une défaite en bonne et due forme de #username# !");
  1113. }
  1114. else
  1115. {
  1116. Phrases.Add("La prochaine fois tu y arriveras #username#, j'en suis sûre et certain !");
  1117. Phrases.Add("Courage #username#, tu y arriveras la prochaine fois !");
  1118. Phrases.Add("Ne soit pas triste #username#, d'autres occasions se présenteront à toi !");
  1119. }
  1120. break;
  1121. }
  1122. case "startgame":
  1123. {
  1124. Phrases.Add("Allons y, lets go !");
  1125. Phrases.Add("C'est parti !");
  1126. Phrases.Add("A vos marques, prêts ? Partez !");
  1127. Phrases.Add("Let's go!");
  1128. Phrases.Add("Ne perdons pas plus de temps, c'est parti !");
  1129. Phrases.Add("Que la partie commence !");
  1130. break;
  1131. }
  1132. case "endgame":
  1133. {
  1134. Phrases.Add("L'animation est terminé, bravo à tout les gagnant(e)s !");
  1135. Phrases.Add("L'animation est enfin terminé ! reviens nous voir à la prochaine animation !");
  1136. break;
  1137. }
  1138. case "fungame":
  1139. {
  1140. if (Bot.BotData.Name == "Jack")
  1141. {
  1142. Phrases.Add("Mhhhh, les joueurs sont vraiment mauvais à ce point ?");
  1143. Phrases.Add("On sait déjà tous qui sera le grand vaiqueur...");
  1144. Phrases.Add("Qui ne tente rien n'a rien");
  1145. }
  1146. else
  1147. {
  1148. Phrases.Add("La victoire approche tenez le coup !");
  1149. Phrases.Add("C'est pour ça qu'il faut toujours avoir un trèfle à 4 feuilles");
  1150. Phrases.Add("En essayant continuellement, on finit par réussir, plus ça rate, plus on a des chances que ça marque ;)");
  1151. }
  1152. break;
  1153. }
  1154. }
  1155.  
  1156. string TextMessage = Phrases[ButterflyEnvironment.GetRandomNumber(0, Phrases.Count - 1)];
  1157. if (User != null)
  1158. TextMessage = TextMessage.Replace("#username#", User.GetUsername());
  1159.  
  1160. Bot.OnChat(TextMessage, 2, true);
  1161.  
  1162. break;
  1163. }
  1164. case "roomingamechat":
  1165. {
  1166. if (Value == "true")
  1167. Room.RoomIngameChat = true;
  1168. else
  1169. Room.RoomIngameChat = false;
  1170. break;
  1171. }
  1172. case "roommute":
  1173. {
  1174. if (Value == "true")
  1175. Room.RoomMuted = true;
  1176. else
  1177. Room.RoomMuted = false;
  1178. break;
  1179. }
  1180. case "roomfreeze":
  1181. {
  1182. if (Value == "true")
  1183. Room.FreezeRoom = true;
  1184. else
  1185. Room.FreezeRoom = false;
  1186. break;
  1187. }
  1188. case "setspeed":
  1189. {
  1190. int Vitesse = 0;
  1191. int.TryParse(Value, out Vitesse);
  1192.  
  1193. Room.GetRoomItemHandler().SetSpeed(Vitesse);
  1194. break;
  1195. }
  1196. case "roomdiagonal":
  1197. {
  1198. if (Value == "true")
  1199. Room.GetGameMap().DiagonalEnabled = true;
  1200. else
  1201. Room.GetGameMap().DiagonalEnabled = false;
  1202.  
  1203. break;
  1204. }
  1205. case "roomoblique":
  1206. {
  1207. if (Value == "true")
  1208. Room.GetGameMap().ObliqueDisable = true;
  1209. else
  1210. Room.GetGameMap().ObliqueDisable = false;
  1211.  
  1212. break;
  1213. }
  1214.  
  1215. case "setitemmode":
  1216. {
  1217. if (TriggerItem == null)
  1218. break;
  1219. int Count = 0;
  1220. int.TryParse(Value, out Count);
  1221.  
  1222. if (Count > TriggerItem.GetBaseItem().Modes - 1)
  1223. break;
  1224.  
  1225. int result = 0;
  1226. if (!int.TryParse(TriggerItem.ExtraData, out result))
  1227. break;
  1228.  
  1229. TriggerItem.ExtraData = Count.ToString();
  1230. TriggerItem.UpdateState();
  1231. Room.GetGameMap().updateMapForItem(TriggerItem);
  1232.  
  1233. break;
  1234. }
  1235.  
  1236. case "pushpull":
  1237. {
  1238. if (Value == "true")
  1239. Room.PushPullAllowed = true;
  1240. else
  1241. Room.PushPullAllowed = false;
  1242. break;
  1243. }
  1244. }
  1245. }
  1246.  
  1247. private void UserCommand(string Cmd, string Value, RoomUser User, Item TriggerItem)
  1248. {
  1249. if (User == null || User.IsBot || User.GetClient() == null)
  1250. return;
  1251.  
  1252. switch (Cmd)
  1253. {
  1254. case "stopsounduser":
  1255. {
  1256. User.GetClient().GetHabbo().SendWebPacket(new StopSoundComposer(Value)); //Type = Trax
  1257. break;
  1258. }
  1259. case "playsounduser":
  1260. {
  1261. User.GetClient().GetHabbo().SendWebPacket(new PlaySoundComposer(Value, 1)); //Type = furni
  1262. break;
  1263. }
  1264. case "playmusicuser":
  1265. {
  1266. User.GetClient().GetHabbo().SendWebPacket(new PlaySoundComposer(Value, 2, true)); //Type = Trax
  1267. break;
  1268. }
  1269. case "moveto":
  1270. {
  1271. if (Value == "true")
  1272. User.AllowMoveTo = true;
  1273. else
  1274. User.AllowMoveTo = false;
  1275. break;
  1276. }
  1277. case "reversewalk":
  1278. {
  1279. if (Value == "true")
  1280. User.ReverseWalk = true;
  1281. else
  1282. User.ReverseWalk = false;
  1283. break;
  1284. }
  1285. case "speedwalk":
  1286. {
  1287. if (Value == "true")
  1288. User.WalkSpeed = true;
  1289. else
  1290. User.WalkSpeed = false;
  1291. break;
  1292. }
  1293. case "openpage":
  1294. {
  1295. User.GetClient().SendPacket(new NuxAlertComposer("habbopages/" + Value));
  1296. break;
  1297. }
  1298. case "rot":
  1299. {
  1300. int ValueInt = 0;
  1301. int.TryParse(Value, out ValueInt);
  1302.  
  1303. if (ValueInt > 7 || ValueInt < 0)
  1304. ValueInt = 0;
  1305.  
  1306. if (User.RotBody == ValueInt && User.RotHead == ValueInt)
  1307. break;
  1308.  
  1309. User.RotBody = ValueInt;
  1310. User.RotHead = ValueInt;
  1311. User.UpdateNeeded = true;
  1312.  
  1313. break;
  1314. }
  1315. case "allowshoot":
  1316. {
  1317. if (Value == "true")
  1318. User.AllowShoot = true;
  1319. else
  1320. User.AllowShoot = false;
  1321. break;
  1322. }
  1323. case "addpointteam":
  1324. {
  1325. if (User.team == Games.Team.none)
  1326. break;
  1327.  
  1328. int Count = 0;
  1329. int.TryParse(Value, out Count);
  1330.  
  1331. if (User.mRoom == null)
  1332. break;
  1333.  
  1334. User.mRoom.GetGameManager().AddPointToTeam(User.team, Count, User);
  1335. break;
  1336. }
  1337. case "ingame":
  1338. {
  1339. if (Value == "true")
  1340. User.InGame = true;
  1341. else
  1342. User.InGame = false;
  1343.  
  1344. break;
  1345. }
  1346. case "usertimer":
  1347. {
  1348. int Points = 0;
  1349. int.TryParse(Value, out Points);
  1350.  
  1351. User.UserTimer = Points;
  1352. break;
  1353. }
  1354. case "addusertimer":
  1355. {
  1356. int Points = 0;
  1357. int.TryParse(Value, out Points);
  1358.  
  1359. if (Points == 0)
  1360. break;
  1361.  
  1362. User.UserTimer += Points;
  1363. break;
  1364. }
  1365. case "removeusertimer":
  1366. {
  1367. int Points = 0;
  1368. int.TryParse(Value, out Points);
  1369.  
  1370. if (Points == 0)
  1371. break;
  1372.  
  1373. if (Points >= User.UserTimer)
  1374. {
  1375. User.UserTimer = 0;
  1376. }
  1377. else
  1378. {
  1379. User.UserTimer -= Points;
  1380. }
  1381. break;
  1382. }
  1383. case "point":
  1384. {
  1385. int Points = 0;
  1386. int.TryParse(Value, out Points);
  1387.  
  1388. User.WiredPoints = Points;
  1389. break;
  1390. }
  1391. case "addpoint":
  1392. {
  1393. int Points = 0;
  1394. int.TryParse(Value, out Points);
  1395.  
  1396. if (Points == 0)
  1397. break;
  1398.  
  1399. User.WiredPoints += Points;
  1400. break;
  1401. }
  1402. case "removepoint":
  1403. {
  1404. int Points = 0;
  1405. int.TryParse(Value, out Points);
  1406.  
  1407. if (Points == 0)
  1408. break;
  1409.  
  1410. if (Points >= User.WiredPoints)
  1411. {
  1412. User.WiredPoints = 0;
  1413. }
  1414. else
  1415. {
  1416. User.WiredPoints -= Points;
  1417. }
  1418. break;
  1419. }
  1420. case "freeze":
  1421. {
  1422. int Seconde = 0;
  1423. int.TryParse(Value, out Seconde);
  1424. Seconde = Seconde * 2;
  1425. User.Freeze = true;
  1426. User.FreezeEndCounter = Seconde;
  1427. break;
  1428. }
  1429. case "unfreeze":
  1430. {
  1431. User.Freeze = false;
  1432. User.FreezeEndCounter = 0;
  1433. break;
  1434. }
  1435. case "breakwalk":
  1436. {
  1437. if (Value == "true")
  1438. User.breakwalk = true;
  1439. else
  1440. User.breakwalk = false;
  1441.  
  1442. break;
  1443. }
  1444. case "enable":
  1445. {
  1446. int NumEnable;
  1447. if (!int.TryParse(Value, out NumEnable))
  1448. return;
  1449.  
  1450. if (!ButterflyEnvironment.GetGame().GetEffectsInventoryManager().EffectExist(NumEnable, false))
  1451. return;
  1452.  
  1453. User.ApplyEffect(NumEnable);
  1454. break;
  1455. }
  1456. case "enablestaff":
  1457. {
  1458. int NumEnable;
  1459. if (!int.TryParse(Value, out NumEnable))
  1460. return;
  1461.  
  1462. if (!ButterflyEnvironment.GetGame().GetEffectsInventoryManager().EffectExist(NumEnable, true))
  1463. return;
  1464.  
  1465. User.ApplyEffect(NumEnable);
  1466. break;
  1467. }
  1468. case "dance":
  1469. {
  1470. if (User.mRoom == null)
  1471. break;
  1472.  
  1473. int danceid;
  1474. if (int.TryParse(Value, out danceid))
  1475. {
  1476. if (danceid < 0 || danceid > 4)
  1477. danceid = 0;
  1478. if (danceid > 0 && User.CarryItemID > 0)
  1479. User.CarryItem(0);
  1480. User.DanceId = danceid;
  1481. ServerPacket Message = new ServerPacket(ServerPacketHeader.DanceMessageComposer);
  1482. Message.WriteInteger(User.VirtualId);
  1483. Message.WriteInteger(danceid);
  1484. User.mRoom.SendPacket(Message);
  1485. }
  1486. break;
  1487. }
  1488. case "handitem":
  1489. {
  1490. int carryid;
  1491. if (int.TryParse(Value, out carryid))
  1492. User.CarryItem(carryid, true);
  1493. break;
  1494. }
  1495. case "sit":
  1496. {
  1497. if (User.RotBody % 2 == 0)
  1498. {
  1499. if (User.transformation)
  1500. User.SetStatus("sit", "");
  1501. else
  1502. User.SetStatus("sit", "0.5");
  1503.  
  1504. User.IsSit = true;
  1505. User.UpdateNeeded = true;
  1506. }
  1507. break;
  1508. }
  1509.  
  1510. case "lay":
  1511. {
  1512. if (User.RotBody % 2 == 0)
  1513. {
  1514. if (User.transformation)
  1515. User.SetStatus("lay", "");
  1516. else
  1517. User.SetStatus("lay", "0.7");
  1518.  
  1519. User.IsLay = true;
  1520. User.UpdateNeeded = true;
  1521. }
  1522. break;
  1523. }
  1524. case "transf":
  1525. {
  1526. int raceId = 0;
  1527. string petName = Value;
  1528. if (Value.Contains(" "))
  1529. {
  1530. if (int.TryParse(Value.Split(' ')[1], out raceId))
  1531. {
  1532. if (raceId < 1 || raceId > 50)
  1533. {
  1534. raceId = 0;
  1535. }
  1536. }
  1537.  
  1538. petName = Value.Split(' ')[0];
  1539. }
  1540.  
  1541. if (User.SetPetTransformation(petName, raceId))
  1542. {
  1543. User.transformation = true;
  1544.  
  1545. User.mRoom.SendPacket(new UserRemoveComposer(User.VirtualId));
  1546. User.mRoom.SendPacket(new UsersComposer(User));
  1547. }
  1548. break;
  1549. }
  1550. case "transfstop":
  1551. {
  1552. User.transformation = false;
  1553.  
  1554. User.mRoom.SendPacket(new UserRemoveComposer(User.VirtualId));
  1555. User.mRoom.SendPacket(new UsersComposer(User));
  1556. break;
  1557. }
  1558. case "badge":
  1559. {
  1560. User.GetClient().GetHabbo().GetBadgeComponent().GiveBadge(Value, true);
  1561. User.GetClient().SendPacket(new ReceiveBadgeComposer(Value));
  1562. break;
  1563. }
  1564. case "send":
  1565. {
  1566. int RoomId;
  1567. if (int.TryParse(Value, out RoomId))
  1568. {
  1569. User.GetClient().GetHabbo().IsTeleporting = true;
  1570. User.GetClient().GetHabbo().TeleportingRoomID = RoomId;
  1571. User.GetClient().GetHabbo().PrepareRoom(RoomId, "");
  1572. }
  1573. break;
  1574. }
  1575. case "alert":
  1576. {
  1577. User.GetClient().SendNotification(Value);
  1578. break;
  1579. }
  1580. case "achievement":
  1581. {
  1582. ButterflyEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), Value, 1);
  1583. break;
  1584. }
  1585. case "givelot":
  1586. {
  1587. if (User.IsBot || User.GetClient() == null || User.GetClient().GetHabbo() == null || User.GetClient().GetHabbo().Rank > 4)
  1588. return;
  1589. if (User.WiredGivelot)
  1590. return;
  1591.  
  1592. User.WiredGivelot = true;
  1593.  
  1594. ItemData ItemData = null;
  1595. if (!ButterflyEnvironment.GetGame().GetItemManager().GetItem(4156455, out ItemData))
  1596. return;
  1597.  
  1598. int NbLot = ButterflyEnvironment.GetRandomNumber(1, 3);
  1599.  
  1600. if (User.GetClient().GetHabbo().Rank > 1)
  1601. NbLot = ButterflyEnvironment.GetRandomNumber(3, 5);
  1602.  
  1603. int NbBadge = ButterflyEnvironment.GetRandomNumber(1, 2);
  1604. if (User.GetClient().GetHabbo().Rank > 1)
  1605. NbBadge = ButterflyEnvironment.GetRandomNumber(2, 3);
  1606.  
  1607. ItemData ItemDataBadge = null;
  1608. if (!ButterflyEnvironment.GetGame().GetItemManager().GetItem(91947063, out ItemDataBadge))
  1609. return;
  1610.  
  1611. List<Item> Items = ItemFactory.CreateMultipleItems(ItemData, User.GetClient().GetHabbo(), "", NbLot);
  1612. Items.AddRange(ItemFactory.CreateMultipleItems(ItemDataBadge, User.GetClient().GetHabbo(), "", NbBadge));
  1613.  
  1614. foreach (Item PurchasedItem in Items)
  1615. {
  1616. if (User.GetClient().GetHabbo().GetInventoryComponent().TryAddItem(PurchasedItem))
  1617. {
  1618. User.GetClient().SendPacket(new FurniListNotificationComposer(PurchasedItem.Id, 1));
  1619. }
  1620. }
  1621. User.GetClient().SendNotification(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.givelot.sucess", User.GetClient().Langue), NbLot, NbBadge));
  1622.  
  1623. using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
  1624. queryreactor.RunQuery("UPDATE users SET game_points = game_points + 1, game_points_month = game_points_month + 1 WHERE id = '" + User.GetClient().GetHabbo().Id + "';");
  1625.  
  1626. ButterflyEnvironment.GetGame().GetModerationTool().LogStaffEntry(1953042, User.mRoom.RoomData.OwnerName, User.RoomId, string.Empty, "givelot", "SuperWired givelot: " + User.GetUsername());
  1627. break;
  1628. }
  1629. }
  1630. }
  1631.  
  1632. public void Dispose()
  1633. {
  1634. this.message = (string)null;
  1635. this.disposed = true;
  1636. }
  1637.  
  1638. public void SaveToDatabase(IQueryAdapter dbClient)
  1639. {
  1640. WiredUtillity.SaveTriggerItem(dbClient, this.itemID, this.Delay.ToString(), this.message, false, null);
  1641. }
  1642.  
  1643. public void LoadFromDatabase(IQueryAdapter dbClient, Room insideRoom)
  1644. {
  1645. dbClient.SetQuery("SELECT trigger_data, trigger_data_2 FROM wired_items WHERE trigger_id = @id ");
  1646. dbClient.AddParameter("id", this.itemID);
  1647. DataRow row = dbClient.GetRow();
  1648. if (row == null)
  1649. return;
  1650. this.message = row["trigger_data"].ToString();
  1651.  
  1652. int result;
  1653. this.Delay = (int.TryParse(row["trigger_data_2"].ToString(), out result)) ? result : 0;
  1654. }
  1655.  
  1656. public void OnTrigger(GameClient Session, int SpriteId)
  1657. {
  1658. ServerPacket Message15 = new ServerPacket(ServerPacketHeader.WiredEffectConfigMessageComposer);
  1659. Message15.WriteBoolean(false);
  1660. Message15.WriteInteger(0);
  1661. Message15.WriteInteger(0);
  1662. Message15.WriteInteger(SpriteId);
  1663. Message15.WriteInteger(this.itemID);
  1664. Message15.WriteString(this.message);
  1665. Message15.WriteInteger(0);
  1666.  
  1667. Message15.WriteInteger(0);
  1668. Message15.WriteInteger(7); //7
  1669. Message15.WriteInteger(this.Delay);
  1670.  
  1671. Message15.WriteInteger(0);
  1672. Session.SendPacket(Message15);
  1673. }
  1674.  
  1675. public void DeleteFromDatabase(IQueryAdapter dbClient)
  1676. {
  1677. dbClient.RunQuery("DELETE FROM wired_items WHERE trigger_id = '" + this.itemID + "'");
  1678. }
  1679. }
  1680. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement