Advertisement
Guest User

Untitled

a guest
May 27th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.66 KB | None | 0 0
  1. // * Created by ElmistRo
  2. // * Copyright © 2010-2014
  3. // * ElmistRo - Project
  4.  
  5. using System;
  6.  
  7. namespace COServer.Network.GamePackets
  8. {
  9. public class StatusIconData : Writer
  10. {
  11. private byte[] mData;
  12.  
  13. public uint AuraLevel
  14. {
  15. get
  16. {
  17. return COServer.BitConverter.ToUInt32(this.mData, 20);
  18. }
  19. set
  20. {
  21. Writer.WriteUInt32(value, 20, this.mData);
  22. }
  23. }
  24. public uint AuraPower
  25. {
  26. get
  27. {
  28. return COServer.BitConverter.ToUInt32(this.mData, 28);
  29. }
  30. set
  31. {
  32. Writer.WriteUInt32(value, 28, this.mData);
  33. }
  34. }
  35. public StatusIconData.AuraType AuraType2
  36. {
  37. get
  38. {
  39. return (StatusIconData.AuraType)COServer.BitConverter.ToUInt32(this.mData, 16);
  40. }
  41. set
  42. {
  43. Writer.WriteUInt32((uint)value, 16, this.mData);
  44. }
  45. }
  46. public uint Identifier
  47. {
  48. get
  49. {
  50. return COServer.BitConverter.ToUInt32(this.mData, 12);
  51. }
  52. set
  53. {
  54. Writer.WriteUInt32(value, 12, this.mData);
  55. }
  56. }
  57. public StatusIconData.AuraDataTypes Type
  58. {
  59. get
  60. {
  61. return (StatusIconData.AuraDataTypes)COServer.BitConverter.ToUInt32(this.mData, 8);
  62. }
  63. set
  64. {
  65. Writer.WriteUInt32((uint)value, 8, this.mData);
  66. }
  67. }
  68. public uint U20
  69. {
  70. get
  71. {
  72. return COServer.BitConverter.ToUInt32(this.mData, 24);
  73. }
  74. set
  75. {
  76. Writer.WriteUInt32(value, 24, this.mData);
  77. }
  78. }
  79. public StatusIconData()
  80. {
  81. this.mData = new byte[40];
  82. Writer.WriteUInt16((ushort)32, 0, this.mData);
  83. Writer.WriteUInt16((ushort)2410, 2, this.mData);
  84. Writer.WriteUInt32((uint)Time32.Now.GetHashCode(), 4, this.mData);
  85. }
  86. public StatusIconData(byte[] d)
  87. {
  88. this.mData = new byte[d.Length];
  89. d.CopyTo((Array)this.mData, 0);
  90. }
  91. public static implicit operator byte[](StatusIconData d)
  92. {
  93. return d.mData;
  94. }
  95. public byte[] ToArray()
  96. {
  97. return this.mData;
  98. }
  99. public enum AuraDataTypes
  100. {
  101. Remove = 2,
  102. Add = 3,
  103. }
  104. public enum AuraType
  105. {
  106. TyrantAura = 1,
  107. FendAura = 2,
  108. MetalAura = 3,
  109. WoodAura = 4,
  110. WaterAura = 5,
  111. FireAura = 6,
  112. EarthAura = 7,
  113. MagicDefender = 8,
  114. }
  115. }
  116. public unsafe class Data : Writer, Interfaces.IPacket
  117. {
  118. public class CustomCommands
  119. {
  120. public const ushort
  121. ExitQuestion = 1,
  122. Minimize = 2,
  123. ShowReviveButton = 1053,
  124. FlowerPointer = 1067,
  125. Enchant = 1091,
  126. LoginScreen = 1153,
  127. SelectRecipiet = 30,
  128. JoinGuild = 34,
  129. MakeFriend = 38,
  130. ChatWhisper = 40,
  131. CloseClient = 43,
  132. HotKey = 53,
  133. Furniture1 = 54,
  134. TQForum = 79,
  135. PathFind = 97,
  136. LockItem = 102,
  137. Day = 104,
  138. MapStatus = 105,
  139. ShowRevive = 1053,
  140. HideRevive = 1054,
  141. StatueMaker = 1066,
  142. Furniture = 1070,
  143. GambleOpen = 1077,
  144. GambleClose = 1078,
  145. Compose = 1086,
  146. Craft1 = 1088,
  147. Craft2 = 1089,
  148. Warehouse = 1090,
  149. ShoppingMallShow = 1100,
  150. ShoppingMallHide = 1101,
  151. NoOfflineTraining = 1117,
  152. CenterClient = 1155,
  153. ClaimCP = 1197,
  154. ClaimAmount = 1198,
  155. NewPatch = 1085,
  156. SendTC = 1140,
  157. MerchantApply = 1201,
  158. MerchantDone = 1202,
  159. RedeemEquipment = 1233,
  160. ClaimPrize = 1234,
  161. RepairAll = 1239,
  162. FlowerIcon = 1244,
  163. SendFlower = 1246,
  164. ReciveFlower = 1248,
  165. WarehouseVIP = 1272,
  166. UseExpBall = 1288,
  167. HackProtection = 1298,
  168. HideGUI = 1307,
  169. Inscribe = 3059,
  170. BuyPrayStone = 3069,
  171. itemsgui = 3112,
  172. HonorStore = 3104,
  173. Opponent = 3107,
  174. CountDownQualifier = 3109,
  175. QualifierStart = 3111,
  176. ItemsReturnedShow = 3117,
  177. ItemsReturnedWindow = 3118,
  178. ItemsReturnedHide = 3119,
  179. QuestFinished = 3147,
  180. QuestPoint = 3148,
  181. QuestPointSparkle = 3164,
  182. StudyPointsUp = 3192,
  183. PKTeamName = 3209,
  184. CTFFlag = 3211,
  185. Updates = 3218,
  186. IncreaseLineage = 3227,
  187. HorseRacingStore = 3245,
  188. GuildPKTourny = 3249,
  189. QuitPK = 3251,
  190. Spectators = 3252,
  191. CardPlayOpen = 3270,
  192. CardPlayClost = 3271,
  193. ArtifactPurification = 3344,
  194. SafeguardConvoyShow = 3389,
  195. SafeguardConvoyHide = 3390,
  196. RefineryStabilization = 3392,
  197. ArtifactStabilization = 3398,
  198. SmallChat = 3406,
  199. NormalChat = 3407,
  200. Reincarnation = 3439,
  201. GuiHeavenBlessing = 3064,
  202. DoneEffect = 3130,
  203. Market = 3300,
  204. Advertise = 3274,
  205. CTFEnd = 3549,
  206. CTFScores = 3359;
  207. }
  208. public class WindowCommands
  209. {
  210. public const ushort
  211. Compose = 1,
  212. Craft = 2,
  213. Warehouse = 4,
  214. DetainRedeem = 336,
  215. DetainClaim = 337,
  216. VIPWarehouse = 341,
  217. Breeding = 368,
  218. PurificationWindow = 455,
  219. StabilizationWindow = 459,
  220. TalismanUpgrade = 347,
  221. GemComposing = 422,
  222. OpenSockets = 425,
  223. Blessing = 426,
  224. TortoiseGemComposing = 438,
  225. RefineryStabilization = 448,
  226. HorseRacingStore = 464,
  227. Reincarnation = 485;
  228. }
  229. public const ushort
  230. RemoveTrap = 434,
  231. ObserveKnownPerson = 54,
  232. SetLocation = 74,
  233. Hotkeys = 75,
  234. ConfirmFriends = 76,
  235. ConfirmProficiencies = 77,
  236. ConfirmSpells = 78,
  237. ChangeDirection = 79,
  238. ChangeAction = 81,
  239. UsePortal = 85,
  240. Teleport = 86,
  241. Leveled = 92,
  242. XPListEnd = 93,
  243. Revive = 94,
  244. DeleteCharacter = 95,
  245. ChangePKMode = 96,
  246. ConfirmGuild = 97,
  247. SwingPickaxe = 99,
  248. UnknownEntity = 102,
  249. TeamSearchForMember = 106,
  250. NewCoordonates = 108,
  251. DropMagic = 109,
  252. DropSkill = 110,
  253. OwnBooth = 111,
  254. GetSurroundings = 114,
  255. OpenCustom = 116,
  256. ObserveEquipment = 117,
  257. EndTransformation = 118,
  258. EndFly = 120,
  259. ViewEnemyInfo = 123,
  260. OpenWindow = 126,
  261. CompleteLogin = 251,
  262. RemoveEntity = 135,
  263. Jump = 137,
  264. Die = 145,
  265. EndTeleport = 146,
  266. ViewFriendInfo = 148,
  267. ChangeFace = 151,
  268. ViewPartnerInfo = 152,
  269. Confiscator = 153,
  270. FlashStep = 156,
  271. CountDown = 159,
  272. Away = 161,
  273. Bulletin = 166,
  274. ClaimableItem = 408,
  275. AppearanceType = 178,
  276. LevelUpSpell = 252,
  277. SpawnEffect = 134,
  278. GuardJump = 130,
  279. LevelUpProficiency = 253,
  280. ConquerItemSash = 256,
  281. ObserveEquipment2 = 310,
  282. BeginSteedRace = 401,
  283. FinishSteedRace = 402,
  284. JiangHu = 126,
  285. TeamMemberPos = 101,
  286. Shop = 160,
  287. PathFinding = 162,
  288. Disconnect = 132,
  289. ItemDetained = 154,
  290. DetainItem = 155,
  291. HideGui = 158,
  292. SendTC = 177,
  293. FirstCredit = 255,
  294. GetMoney = 121,
  295. DragonBallDropped = 165,
  296. DetainWindowRequest = 153;
  297.  
  298. byte[] Buffer;
  299. public Data(bool Create)
  300. {
  301. if (Create)
  302. {
  303. Buffer = new byte[50];
  304. WriteUInt16(42, 0, Buffer);
  305. WriteUInt16(10010, 2, Buffer);
  306. WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, Buffer);
  307. }
  308. }
  309. public static Data Custom(uint customType, uint uid, ushort wParam1 = 0, ushort wParam2 = 0)
  310. {
  311. Data data = new Data(true);
  312. data.ID = Data.OpenCustom;
  313. data.UID = uid;
  314. data.TimeStamp = Time32.Now;
  315. data.dwParam = customType;
  316. data.wParam1 = wParam1;
  317. data.wParam2 = wParam2;
  318. return data;
  319. }
  320. public uint UID
  321. {
  322. get { return BitConverter.ToUInt32(Buffer, 8); }
  323. set { Writer.WriteUInt32(value, 8, Buffer); }
  324. }
  325. public uint dwParam//CustomType
  326. {
  327. get { return BitConverter.ToUInt32(Buffer, 12); }
  328. set { WriteUInt32(value, 12, Buffer); }
  329. }
  330. public ushort X//For TwilightDance
  331. {
  332. get { return BitConverter.ToUInt16(Buffer, 12); }
  333. set { WriteUInt16(value, 12, Buffer); }
  334. }
  335. public ushort Y//For TwilightDance
  336. {
  337. get { return BitConverter.ToUInt16(Buffer, 14); }
  338. set { WriteUInt16(value, 14, Buffer); }
  339. }
  340. public Time32 TimeStamp
  341. {
  342. get { return new Time32(BitConverter.ToUInt32(Buffer, 20)); }
  343. set { WriteUInt32((uint)value.GetHashCode(), 20, Buffer); }
  344. }
  345. public uint TimeStamp2//For Npc Shop
  346. {
  347. get { return BitConverter.ToUInt32(Buffer, 20); }
  348. set { WriteUInt32(value, 20, Buffer); }
  349. }
  350. public uint ID
  351. {
  352. get { return BitConverter.ToUInt16(Buffer, 24); }
  353. set { WriteUInt32(value, 24, Buffer); }
  354. }
  355. public Game.Enums.ConquerAngle Facing
  356. {
  357. get { return (Game.Enums.ConquerAngle)Buffer[26]; }
  358. }
  359. public ushort wParam1//X
  360. {
  361. get { return BitConverter.ToUInt16(Buffer, 28); }
  362. set { WriteUInt16(value, 28, Buffer); }
  363. }
  364. public uint Data28_Uint//For Poker
  365. {
  366. get { return BitConverter.ToUInt32(Buffer, 28); }
  367. set { WriteUInt32(value, 28, Buffer); }
  368. }
  369. public ushort wParam2//Y
  370. {
  371. get { return BitConverter.ToUInt16(Buffer, 30); }
  372. set { WriteUInt16(value, 30, Buffer); }
  373. }
  374. public void Deserialize(byte[] buffer)
  375. {
  376. this.Buffer = buffer;
  377. }
  378. public byte[] ToArray()
  379. {
  380. return Buffer;
  381. }
  382. public void Send(Client.GameState client)
  383. {
  384. client.Send(Buffer);
  385. }
  386. public static void Process(byte[] packet, Client.GameState client)
  387. {
  388. if (client.Action != 2) return;
  389. Data gData = new Data(false);
  390. gData.Deserialize(packet);
  391. switch (gData.ID)
  392. {
  393. case Data.ConquerItemSash:
  394. {
  395. if (client.Entity.ExtraInventory < 200)
  396. {
  397. if (client.Entity.ConquerPoints >= 90)
  398. {
  399. client.Entity.ExtraInventory += 1;
  400. client.Entity.ConquerPoints -= 90;
  401. }
  402. else
  403. {
  404. client.Entity.SendSysMesage("make sure you gotte 90 CPs");
  405. }
  406. }
  407. else
  408. {
  409. client.Entity.SendSysMesage("you already opend max number of slots");
  410. }
  411. break;
  412. }
  413. case Data.DetainWindowRequest:
  414. {
  415. if (!client.JustOpenedDetain)
  416. {
  417. if (client.DeatinedItem.Count != 0)
  418. {
  419. client.Send(new Data(true)
  420. {
  421. ID = Data.OpenWindow,
  422. dwParam = Data.WindowCommands.DetainRedeem,
  423. UID = client.Entity.UID
  424. });
  425. }
  426. if (client.ClaimableItem.Count != 0)
  427. {
  428. client.Send(new Data(true)
  429. {
  430. ID = Data.OpenWindow,
  431. dwParam = Data.WindowCommands.DetainClaim,
  432. UID = client.Entity.UID
  433. });
  434. }
  435. }
  436. client.JustOpenedDetain = !client.JustOpenedDetain;
  437. break;
  438. }
  439. case Data.SendTC:
  440. {
  441. client.Entity.Teleport(1002, 301, 288);
  442. break;
  443. }
  444. case Data.Bulletin:
  445. {
  446. if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday && DateTime.Now.Hour ==
  447. 19 && DateTime.Now.Minute == 45 && DateTime.Now.Minute <= 50)//skill team pk
  448. {
  449. client.Entity.Teleport(1002, 313, 143);//Teleport
  450. }
  451. else if (DateTime.Now.DayOfWeek == DayOfWeek.Friday && DateTime.Now.Hour == 19
  452. && DateTime.Now.Minute == 55 && DateTime.Now.Minute <= 59)//elite pk
  453. {
  454. client.Entity.Teleport(1002, 302, 144);//Teleport
  455. }
  456. else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday && DateTime.Now.Hour ==
  457. 18 && DateTime.Now.Minute == 45 && DateTime.Now.Minute <= 50)//team pk
  458. {
  459. client.Entity.Teleport(1002, 292, 146);//Teleport
  460. }
  461. else if (DateTime.Now.Day <= 7 && DateTime.Now.DayOfWeek == DayOfWeek.Sunday &&
  462. DateTime.Now.Hour == 22 && DateTime.Now.Minute >= 01 && DateTime.Now.Minute <= 14)//Monthly PK
  463. {
  464. client.Entity.Teleport(1002, 324, 194);//Teleport
  465. }
  466. else if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday &&
  467. DateTime.Now.Hour == 20 && DateTime.Now.Minute >= 05 && DateTime.Now.Minute <= 15)// Weekly PK
  468. {
  469. client.Entity.Teleport(1002, 324, 194);//Teleport
  470. }
  471. if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday && DateTime.Now.Hour ==
  472. 21 && DateTime.Now.Minute == 36 && DateTime.Now.Minute <= 59)//CaptureTheFlag
  473. {
  474. client.Entity.Teleport(1002, 225, 237);//Teleport
  475. }
  476. else if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday || DateTime.Now.DayOfWeek ==
  477. DayOfWeek.Friday) if ((DateTime.Now.Hour == 12 || DateTime.Now.Hour == 19) && DateTime.Now.Minute ==
  478. 01 && DateTime.Now.Minute <= 05)//Dis City
  479. {
  480. client.Entity.Teleport(1002, 297, 149);//Teleport
  481. }
  482. break;
  483. }
  484. case Data.ClaimableItem:
  485. {
  486. if (!client.JustOpenedDetain)
  487. if (client.ClaimableItem.Count != 0)
  488. client.Send(new Data(true)
  489. {
  490. ID = Data.OpenWindow,
  491. dwParam = Data.WindowCommands.DetainClaim,
  492. UID = client.Entity.UID
  493. });
  494. client.JustOpenedDetain = !client.JustOpenedDetain;
  495. break;
  496. }
  497. case Data.FinishSteedRace:
  498. {
  499. if (client.Entity.MapID == Game.SteedRace.MAPID)
  500. Server.Thread.SteedRace.FinishRace(client);
  501. break;
  502. }
  503. case Data.Disconnect:
  504. {
  505. client.Disconnect();
  506. break;
  507. }
  508. case Data.AppearanceType:
  509. {
  510. GeneralData.ChangeAppearance(gData, client);
  511. break;
  512. }
  513. case Data.LevelUpSpell:
  514. {
  515. GeneralData.LevelUpSpell(gData, client);
  516. break;
  517. }
  518. case Data.LevelUpProficiency:
  519. {
  520. GeneralData.LevelUpProficiency(gData, client);
  521. break;
  522. }
  523. case Data.SwingPickaxe:
  524. {
  525. client.Mining = true;
  526. break;
  527. }
  528. case Data.Revive:
  529. {
  530. GeneralData.Revive(gData, client);
  531. break;
  532. }
  533. case Data.UsePortal:
  534. {
  535. GeneralData.UsePortal(gData, client);
  536. break;
  537. }
  538. case Data.ChangePKMode:
  539. {
  540. GeneralData.ChangePKMode(gData, client);
  541. break;
  542. }
  543. case Data.ChangeAction:
  544. {
  545. GeneralData.ChangeAction(gData, client);
  546. break;
  547. }
  548. case Data.ChangeDirection:
  549. {
  550. GeneralData.ChangeDirection(gData, client);
  551. break;
  552. }
  553. case Data.Hotkeys:
  554. {
  555. client.Send(packet);
  556. break;
  557. }
  558. case Data.ConfirmSpells:
  559. {
  560. if (client.Spells != null)
  561. foreach (Interfaces.ISkill spell in client.Spells.Values)
  562. if (spell.ID != 3060)
  563. spell.Send(client);
  564. client.Send(packet);
  565. break;
  566. }
  567. case Data.ConfirmProficiencies:
  568. {
  569. if (client.Proficiencies != null)
  570. foreach (Interfaces.IProf proficiency in client.Proficiencies.Values)
  571. proficiency.Send(client);
  572. client.Send(packet);
  573. break;
  574. }
  575. case Data.ConfirmGuild:
  576. {
  577. client.Send(packet);
  578. break;
  579. }
  580. case Data.ConfirmFriends:
  581. {
  582. #region Friends/Enemy/TradePartners/Apprentices
  583. Message msg2 = new Message("Your friend, " + client.Entity.Name + ", has come to the game!.", System.Drawing.Color.Red, Message.TopLeft);
  584.  
  585. foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
  586. {
  587. if (friend.IsOnline)
  588. {
  589. var pckt = new KnownPersons(true)
  590. {
  591. UID = client.Entity.UID,
  592. Type = KnownPersons.RemovePerson,
  593. Name = client.Entity.Name,
  594. NobilityRank = client.Entity.NobilityRank,
  595. IsBoy = Game.Features.Flowers.IsBoy(client.Entity.Body),
  596. Online = true
  597. };
  598. friend.Client.Send(pckt);
  599. pckt.Type = KnownPersons.GetInfo;
  600. friend.Client.Send(pckt);
  601. friend.Client.Send(msg2);
  602. }
  603. client.Send(new KnownPersons(true)
  604. {
  605. UID = friend.ID,
  606. Type = KnownPersons.GetInfo,
  607. Name = friend.Name,
  608. NobilityRank = friend.NobilityRank,
  609. IsBoy = friend.IsBoy,
  610. Online = friend.IsOnline
  611. });
  612. if (friend.Message != "")
  613. {
  614. client.Send(new Message(friend.Message, client.Entity.Name, friend.Name, System.Drawing.Color.Red, Message.Whisper));
  615. Database.KnownPersons.UpdateMessageOnFriend(friend.ID, client.Entity.UID, "");
  616. }
  617. }
  618. foreach (Game.ConquerStructures.Society.Enemy enemy in client.Enemy.Values)
  619. {
  620. if (enemy.IsOnline)
  621. {
  622. var pckt = new KnownPersons(true)
  623. {
  624. UID = client.Entity.UID,
  625. Type = KnownPersons.EnemyOnline,
  626. Name = client.Entity.Name,
  627. NobilityRank = client.Entity.NobilityRank,
  628. IsBoy = Game.Features.Flowers.IsBoy(client.Entity.Body),
  629. Online = true
  630. };
  631. enemy.Client.Send(pckt);
  632. pckt.Type = KnownPersons.AddEnemy;
  633. enemy.Client.Send(pckt);
  634. }
  635. client.Send(new KnownPersons(true)
  636. {
  637. UID = enemy.ID,
  638. Type = KnownPersons.AddEnemy,
  639. Name = enemy.Name,
  640. NobilityRank = enemy.NobilityRank,
  641. IsBoy = enemy.IsBoy,
  642. Online = enemy.IsOnline
  643. });
  644. }
  645. Message msg3 = new Message("Your partner, " + client.Entity.Name + ", has logged in.", System.Drawing.Color.Red, Message.TopLeft);
  646. foreach (Game.ConquerStructures.Society.TradePartner partner in client.Partners.Values)
  647. {
  648. if (partner.IsOnline)
  649. {
  650. var packet3 = new TradePartner(true)
  651. {
  652. UID = client.Entity.UID,
  653. Type = TradePartner.BreakPartnership,
  654. Name = client.Entity.Name,
  655. HoursLeft = (int)(new TimeSpan(partner.ProbationStartedOn.AddDays(3).Ticks).TotalHours - new TimeSpan(DateTime.Now.Ticks).TotalHours),
  656. Online = true
  657. };
  658. partner.Client.Send(packet3);
  659. packet3.Type = TradePartner.AddPartner;
  660. partner.Client.Send(packet3);
  661. partner.Client.Send(msg3);
  662. }
  663. var packet4 = new TradePartner(true)
  664. {
  665. UID = partner.ID,
  666. Type = TradePartner.AddPartner,
  667. Name = partner.Name,
  668. HoursLeft = (int)(new TimeSpan(partner.ProbationStartedOn.AddDays(3).Ticks).TotalHours - new TimeSpan(DateTime.Now.Ticks).TotalHours),
  669. Online = partner.IsOnline
  670. };
  671. client.Send(packet4);
  672. }
  673. foreach (Game.ConquerStructures.Society.Apprentice appr in client.Apprentices.Values)
  674. {
  675. if (appr.IsOnline)
  676. {
  677. ApprenticeInformation AppInfo = new ApprenticeInformation();
  678. AppInfo.Apprentice_ID = appr.ID;
  679. AppInfo.Apprentice_Level = appr.Client.Entity.Level;
  680. AppInfo.Apprentice_Class = appr.Client.Entity.Class;
  681. AppInfo.Apprentice_PkPoints = appr.Client.Entity.PKPoints;
  682. AppInfo.Apprentice_Experience = appr.Actual_Experience;
  683. AppInfo.Apprentice_Composing = appr.Actual_Plus;
  684. AppInfo.Apprentice_Blessing = appr.Actual_HeavenBlessing;
  685. AppInfo.Apprentice_Name = appr.Name;
  686. AppInfo.Apprentice_Online = true;
  687. AppInfo.Apprentice_Spouse_Name = appr.Client.Entity.Spouse;
  688. AppInfo.Enrole_date = appr.EnroleDate;
  689. AppInfo.Mentor_ID = client.Entity.UID;
  690. AppInfo.Mentor_Mesh = client.Entity.Mesh;
  691. AppInfo.Mentor_Name = client.Entity.Name;
  692. AppInfo.Type = 2;
  693. client.Send(AppInfo);
  694.  
  695. MentorInformation Information = new MentorInformation(true);
  696. Information.Mentor_Type = 1;
  697. Information.Mentor_ID = client.Entity.UID;
  698. Information.Apprentice_ID = appr.ID;
  699. Information.Enrole_Date = appr.EnroleDate;
  700. Information.Mentor_Level = client.Entity.Level;
  701. Information.Mentor_Class = client.Entity.Class;
  702. Information.Mentor_PkPoints = client.Entity.PKPoints;
  703. Information.Mentor_Mesh = client.Entity.Mesh;
  704. Information.Mentor_Online = true;
  705. Information.Shared_Battle_Power = appr.Client.Entity.BattlePowerFrom(client.Entity);
  706. Information.String_Count = 3;
  707. Information.Mentor_Name = client.Entity.Name;
  708. Information.Apprentice_Name = appr.Name;
  709. Information.Mentor_Spouse_Name = client.Entity.Spouse;
  710. appr.Client.ReviewMentor();
  711. appr.Client.Send(Information);
  712. }
  713. else
  714. {
  715. ApprenticeInformation AppInfo = new ApprenticeInformation();
  716. AppInfo.Apprentice_ID = appr.ID;
  717. AppInfo.Apprentice_Name = appr.Name;
  718. AppInfo.Apprentice_Online = false;
  719. AppInfo.Enrole_date = appr.EnroleDate;
  720. AppInfo.Mentor_ID = client.Entity.UID;
  721. AppInfo.Mentor_Mesh = client.Entity.Mesh;
  722. AppInfo.Mentor_Name = client.Entity.Name;
  723. AppInfo.Type = 2;
  724. client.Send(AppInfo);
  725. }
  726. }
  727. #endregion
  728. client.Send(packet);
  729. break;
  730. }
  731. case Data.EndTeleport:
  732. {
  733. break;
  734. }
  735. case Data.GetSurroundings:
  736. {
  737. if (client.Booth != null)
  738. {
  739. client.Entity.TransformationID = 0;
  740. client.Booth.Remove();
  741. client.Booth = null;
  742. }
  743. GeneralData.GetSurroundings(client);
  744. if (client.ChampionGroup != null)
  745. {
  746. byte[] p5442 = new byte[]
  747. {
  748. 20, 0, 86, 4, 40, 128, 14, 0,
  749. 160, 187, 13, 0, 103, 0, 21,
  750. 64, 12, 49, 0, 0, 84, 81, 83,
  751. 101, 114, 118, 101, 114
  752. };
  753. client.Send(p5442);
  754. }
  755. else
  756. client.Send(new MapStatus()
  757. {
  758. BaseID = client.Map.BaseID,
  759. ID = client.Map.ID,
  760. Status = Database.MapsTable.MapInformations[client.Map.ID].Status,
  761. Weather = Database.MapsTable.MapInformations[client.Map.ID].Weather
  762. });
  763. Game.WeatherStruct.CurrentWeatherBase.Send(client);
  764. client.Send(gData);
  765. break;
  766. }
  767. case Data.FirstCredit:
  768. {
  769. if (client.Entity.FirstCreditPoints >= 5000)
  770. {
  771. client.Entity.FirstCreditPoints -= 5000;
  772. client.Inventory.AddBoundItem(3001266, 0, 1);//FortunePack
  773. client.Inventory.AddBoundItem(3001268, 0, 1);//EXPPotionPack
  774. client.Inventory.AddBoundItem(3001270, 0, 1);//MeteorPack
  775. client.Inventory.AddBoundItem(3001271, 0, 1);//BigEXPBallPack
  776. client.Inventory.AddBoundItem(3001275, 0, 1);//SuperWeapon
  777. client.Inventory.AddBoundItem(3001280, 0, 1);//SuperArmor
  778. client.Inventory.AddBoundItem(3001267, 0, 1);//+3WhiteSteed
  779. client.Inventory.AddBoundItem(3001282, 0, 1);//PrayingStone(L)
  780. client.Inventory.AddBoundItem(3001289, 0, 1);//PromotionGift
  781. FlagsUpdate upgrade = new FlagsUpdate(true);
  782. upgrade.UID = client.Entity.UID;
  783. upgrade.Append((byte)FlagsUpdate.DataType.FirstCreditGift, 21, 0, 0, 0);
  784. client.Send(upgrade.ToArray());
  785. client.Entity.ClaimedFirstCredit = true;
  786. }
  787. else
  788. {
  789. client.Send(new Message("Sorry not have CreditPoints you can donate to get CreditPoints", Message.System));
  790. }
  791. break;
  792. }
  793. case Data.SetLocation:
  794. {
  795. GeneralData.SetLocation(gData, client);
  796. break;
  797. }
  798. case Data.Jump:
  799. {
  800. client.Entity.SetAway(false);
  801. client.LastMove = Time32.Now;
  802. GeneralData.PlayerJump(gData, client);
  803. #region Remove MagicDefender
  804. if (Time32.Now <= client.Entity.MagicDefenderStamp.AddSeconds(client.Entity.MagicDefender))
  805. {
  806. if (client.Entity.ContainsFlag3((ulong)FlagsUpdate.Flags3.MagicDefender))
  807. {
  808. if (client.Spells.ContainsKey(11160) && Database.SpellTable.SpellInformations.ContainsKey(11160))
  809. {
  810. client.Entity.AddFlag3((ulong)FlagsUpdate.Flags3.MagicDefender);
  811. client.Entity.MagicDefender = 0;
  812. }
  813. }
  814. }
  815. #endregion
  816. client.Entity.SpellStamp = Time32.Now.AddSeconds(-1);
  817. break;
  818. }
  819. case Data.UnknownEntity:
  820. {
  821. #region UnknownEntity
  822. Client.GameState pClient = null;
  823. if (Kernel.GamePool.TryGetValue(gData.dwParam, out pClient))
  824. {
  825. if (Kernel.GetDistance(pClient.Entity.X, pClient.Entity.Y, client.Entity.X, client.Entity.Y) <= Constants.pScreenDistance && client.Map.ID == pClient.Map.ID)
  826. {
  827. if (pClient.Guild != null)
  828. pClient.Guild.SendName(client);
  829. if (client.Guild != null)
  830. client.Guild.SendName(pClient);
  831. if (pClient.Entity.UID != client.Entity.UID)
  832. {
  833. if (pClient.Map.ID == client.Map.ID)
  834. {
  835. if (pClient.Map.BaseID == 700 && pClient.Map.ID != 700)
  836. {
  837. if (client.InQualifier())
  838. {
  839. if (pClient.InQualifier())
  840. {
  841. client.Entity.SendSpawn(pClient);
  842. pClient.Entity.SendSpawn(client);
  843. if (pClient.Guild != null)
  844. client.Entity.SendSpawn(pClient, false);
  845. if (client.Guild != null)
  846. pClient.Entity.SendSpawn(client, false);
  847. }
  848. else
  849. {
  850. client.Entity.SendSpawn(pClient);
  851. if (pClient.Guild != null)
  852. client.Entity.SendSpawn(pClient, false);
  853. client.Screen.Add(pClient.Entity);
  854. }
  855. }
  856. else
  857. {
  858. if (pClient.InQualifier())
  859. {
  860. pClient.Entity.SendSpawn(client);
  861. if (client.Guild != null)
  862. pClient.Entity.SendSpawn(client, false);
  863. pClient.Screen.Add(client.Entity);
  864. }
  865. else
  866. {
  867. client.Entity.SendSpawn(pClient, false);
  868. pClient.Entity.SendSpawn(client, false);
  869. }
  870. }
  871. }
  872. else
  873. {
  874. client.Entity.SendSpawn(pClient, false);
  875. pClient.Entity.SendSpawn(client, false);
  876. }
  877. }
  878. }
  879. }
  880. }
  881. else
  882. {
  883. Game.Entity monster = null;
  884. if (client.Map.Entities.TryGetValue(gData.dwParam, out monster))
  885. {
  886. if (Kernel.GetDistance(monster.X, monster.Y, client.Entity.X, client.Entity.Y) <= Constants.pScreenDistance)
  887. {
  888. monster.SendSpawn(client, false);
  889. }
  890. }
  891. if (client.Map.Companions.TryGetValue(gData.dwParam, out monster))
  892. {
  893. if (Kernel.GetDistance(monster.X, monster.Y, client.Entity.X, client.Entity.Y) <= Constants.pScreenDistance)
  894. {
  895. monster.SendSpawn(client, false);
  896. }
  897. }
  898. }
  899. #endregion
  900. break;
  901. }
  902. case Data.CompleteLogin:
  903. {
  904. GeneralData.LoginMessages(client);
  905. client.Entity.AddFlag((ulong)FlagsUpdate.Flags.Stigma);
  906. ClientEquip equips = new ClientEquip();
  907. equips.DoEquips(client);
  908. client.Send(equips);
  909. client.Send(packet);
  910. client.LoadItemStats();
  911. break;
  912. }
  913. case Data.ChangeFace:
  914. {
  915. GeneralData.ChangeFace(gData, client);
  916. break;
  917. }
  918. case Data.ObserveEquipment:
  919. case Data.ObserveEquipment2:
  920. case Data.ObserveKnownPerson:
  921. {
  922. GeneralData.ObserveEquipment(gData, client);
  923. break;
  924. }
  925. case Data.ViewEnemyInfo:
  926. {
  927. if (client.Enemy.ContainsKey(gData.dwParam))
  928. {
  929. if (client.Enemy[gData.dwParam].IsOnline)
  930. {
  931. KnownPersonInfo info = new KnownPersonInfo(true);
  932. info.Fill(client.Enemy[gData.dwParam], true, false);
  933. if (client.Enemy[gData.dwParam].Client.Guild != null)
  934. client.Enemy[gData.dwParam].Client.Guild.SendName(client);
  935. client.Send(info);
  936. }
  937. }
  938. break;
  939. }
  940. case Data.ViewFriendInfo:
  941. {
  942. if (client.Friends.ContainsKey(gData.dwParam))
  943. {
  944. if (client.Friends[gData.dwParam].IsOnline)
  945. {
  946. KnownPersonInfo info = new KnownPersonInfo(true);
  947. info.Fill(client.Friends[gData.dwParam], false, false);
  948. if (client.Friends[gData.dwParam].Client.Guild != null)
  949. client.Friends[gData.dwParam].Client.Guild.SendName(client);
  950. client.Send(info);
  951. }
  952. }
  953. break;
  954. }
  955. case Data.ViewPartnerInfo:
  956. {
  957. if (client.Partners.ContainsKey(gData.dwParam))
  958. {
  959. if (client.Partners[gData.dwParam].IsOnline)
  960. {
  961. TradePartnerInfo info = new TradePartnerInfo(true);
  962. info.Fill(client.Partners[gData.dwParam]);
  963. if (client.Partners[gData.dwParam].Client.Guild != null)
  964. client.Partners[gData.dwParam].Client.Guild.SendName(client);
  965. client.Send(info);
  966. }
  967. }
  968. break;
  969. }
  970. case Data.EndFly:
  971. {
  972. if (client.Entity.ContainsFlag((ulong)FlagsUpdate.Flags.Freeze))
  973. {
  974. client.Send(new Message("Sorry can't EndFly now just wait", Message.System));
  975. return;
  976. }
  977. client.Entity.RemoveFlag((ulong)FlagsUpdate.Flags.Fly);
  978. break;
  979. }
  980. case Data.EndTransformation:
  981. {
  982. client.Entity.Untransform();
  983. break;
  984. }
  985. case Data.XPListEnd:
  986. {
  987. break;
  988. }
  989. case Data.Die:
  990. {
  991. break;
  992. }
  993. case Data.OwnBooth:
  994. {
  995. if (!client.Entity.TradeOn) return;
  996. client.Booth = new Game.ConquerStructures.Booth(client, gData);
  997. client.Send(new Data(true) { ID = Data.ChangeAction, UID = client.Entity.UID, dwParam = 0 });
  998. break;
  999. }
  1000. case Data.Away:
  1001. {
  1002. client.Entity.SetAway(packet[12] == 1);
  1003. client.SendScreen(gData, true);
  1004.  
  1005. break;
  1006. }
  1007. case Data.DeleteCharacter:
  1008. {
  1009. if ((client.WarehousePW == 0 || gData.dwParam == 0) || (client.WarehousePW == gData.dwParam))
  1010. {
  1011. if (client.Entity.MapID != 1098)
  1012. {
  1013.  
  1014. using (var cmd = new Database.MySqlCommand(Database.MySqlCommandType.UPDATE))
  1015. cmd.Update("accounts").Set("EntityID", 0).Where("EntityID", client.Account.EntityID)
  1016. .Execute();
  1017. client.Disconnect();
  1018.  
  1019. }
  1020. }
  1021. break;
  1022. }
  1023. case Data.TeamSearchForMember:
  1024. {
  1025. if (client.Team != null)
  1026. {
  1027. Client.GameState Client = null;
  1028. if (!client.Team.IsTeammate(gData.UID)) return;
  1029. if (Kernel.GamePool.TryGetValue(gData.UID, out Client))
  1030. {
  1031. gData.wParam1 = Client.Entity.X;
  1032. gData.wParam2 = Client.Entity.Y;
  1033. gData.Send(client);
  1034. }
  1035. }
  1036. break;
  1037. }
  1038. default: if (client.Account.State == Database.AccountTable.AccountState.Administrator)
  1039. client.Send(new Message("[Data] Unknown Action: " + gData.ID, Message.System)); break;
  1040. }
  1041. }
  1042. }
  1043. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement