Advertisement
botters

Untitled

Sep 12th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.56 KB | None | 0 0
  1. public static Positions GetPositionFromID(UInt32 itemid)
  2. {
  3. UInt32 iType = itemid / 1000;
  4. if (iType == 617)
  5. return Positions.Right;
  6. if (iType == 148)
  7. return Positions.Head;
  8. if (iType == 614)
  9. return Positions.Right;
  10. if (iType == 615 || iType == 616)
  11. return Positions.Right;
  12. if (iType == 619)
  13. return Positions.Left;
  14. if (iType == 622)
  15. return Positions.Right;
  16. if (iType >= 111 && iType <= 118 || iType == 123 || iType >= 141 && iType <= 148)
  17. return Positions.Head;
  18. else if (iType >= 120 && iType <= 121)
  19. return Positions.Necklace;
  20. else if (iType >= 130 && iType <= 139)
  21. return Positions.Armor;
  22. else if (iType >= 150 && iType <= 152)
  23. return Positions.Ring;
  24. else if (iType == 160)
  25. return Positions.Boots;
  26. else if (iType >= 181 && iType <= 194)
  27. return Positions.Garment;
  28. else if (iType == 201)
  29. return Positions.AttackTalisman;
  30. else if (iType == 202)
  31. return Positions.DefenceTalisman;
  32. else if (iType == 203)
  33. return Positions.SteedTalisman;
  34. else if (iType == 200)
  35. return Positions.SteedArmor;
  36. else if (iType == 300)
  37. return Positions.Steed;
  38. else if (iType == 2100)
  39. return Positions.Bottle;
  40. else if (iType == 1050 || iType == 900 || iType == 619)
  41. return Positions.Left;
  42. else if ((iType >= 410 && iType <= 490) || (iType >= 500 && iType <= 580) || (iType >= 601 && iType <= 613) || (iType >= 616 && iType <= 617 || (iType >= 619 && iType <= 620)) || (iType == 622) || (iType == 624))
  43. return Positions.Right;
  44. else if (iType >= 350 && iType <= 370)
  45. return Positions.RightAccessory;
  46. else if (iType == 380)
  47. return Positions.LeftAccessory;
  48. else if (iType >= 204 && iType <= 205)
  49. return Positions.Wing;
  50.  
  51. else return (Positions)0;
  52.  
  53. }
  54. public static ushort ItemPosition(uint ID)
  55. {
  56. UInt32 iType = ID / 1000;
  57. if (iType == 617)
  58. return ConquerItem.RightWeapon;
  59. if (iType == 148)
  60. return ConquerItem.Head;
  61. if (iType == 619)
  62. return ConquerItem.LeftWeapon;
  63. if (iType == 614)
  64. return ConquerItem.RightWeapon;
  65. if (iType == 620)
  66. return ConquerItem.RightWeapon;
  67. if (iType == 622)
  68. return ConquerItem.RightWeapon;
  69. if (iType == 615 || iType == 616)
  70. return ConquerItem.RightWeapon;
  71. else if ((ID >= 111003 && ID <= 118309) || (ID >= 123000 && ID <= 123309) || (ID >= 141003 && ID <= 144309 || ID >= 145000 && ID <= 145309))
  72. return ConquerItem.Head;
  73. else if (ID >= 120001 && ID <= 121269)
  74. return ConquerItem.Necklace;
  75. else if (ID >= 130003 && ID <= 139309)
  76. return ConquerItem.Armor;
  77. else if (ID >= 150000 && ID <= 152279)
  78. return ConquerItem.Ring;
  79. else if (ID >= 160013 && ID <= 160249)
  80. return ConquerItem.Boots;
  81. else if (ID >= 181305 && ID <= 194300)
  82. return ConquerItem.Garment;
  83. else if (ID >= 201003 && ID <= 201009)
  84. return ConquerItem.Fan;
  85. else if (ID >= 202003 && ID <= 202009)
  86. return ConquerItem.Tower;
  87. else if (ID >= 203003 && ID <= 203009)
  88. return ConquerItem.SteedCrop;
  89. else if (ID == 300000)
  90. return ConquerItem.Steed;
  91. else if (ID >= 204005 && ID <= 204009)
  92. return ConquerItem.SteedWing;
  93. else if ((ID >= 0x64193) && (ID <= 613429) || (ID >= 614000) && (ID <= 614439) || (ID >= 614000) && (ID <= 614439) || (ID >= 616000) && (ID <= 616439) || (ID >= 617000) && (ID <= 617439) || (ID >= 620000) && (ID <= 620439) || (ID >= 622000) && (ID <= 622439) || (ID >= 624000) && (ID <= 624439))
  94. return ConquerItem.RightWeapon;
  95. else if ((ID >= 900000 && ID <= 900309) || (ID >= 1050000 && ID <= 1051000) || (ID >= 619000 && ID <= 619439))
  96. return ConquerItem.LeftWeapon;
  97. else if (ID >= 2100005 && ID <= 2100125)
  98. return ConquerItem.Bottle;
  99. else if (ID >= 350001 && ID <= 380015)
  100. return ConquerItem.LeftWeaponAccessory;
  101. else if (ID >= 350001 && ID <= 380015)
  102. return ConquerItem.RightWeaponAccessory;
  103. else if (iType == 200)
  104. return ConquerItem.SteedArmor;
  105. return 0;
  106. }
  107. public static Positions ItemPositionFromID(uint itemid)
  108. {
  109. UInt32 iType = itemid / 1000;
  110. if (iType >= 111 && iType <= 118 || iType == 123 || iType >= 141 && iType <= 143 || iType == 145)
  111. return Positions.Head;
  112. else if (iType >= 120 && iType <= 121)
  113. return Positions.Necklace;
  114. else if (iType >= 130 && iType <= 137)
  115. return Positions.Armor;
  116. else if (iType >= 150 && iType <= 152)
  117. return Positions.Ring;
  118. else if (iType == 160)
  119. return Positions.Boots;
  120. else if (iType >= 181 && iType <= 194)
  121. return Positions.Garment;
  122. else if (iType == 201)
  123. return Positions.AttackTalisman;
  124. else if (iType == 202)
  125. return Positions.DefenceTalisman;
  126. else if (iType == 203)
  127. return Positions.SteedTalisman;
  128. else if (iType == 200)
  129. return Positions.SteedArmor;
  130. else if (iType == 204)
  131. return Positions.Wing;
  132. else if (iType == 300)
  133. return Positions.Steed;
  134. else if (iType == 2100)
  135. return Positions.Bottle;
  136. else if (iType == 1050 || iType == 900)
  137. return Positions.Left;
  138. else if ((iType >= 410 && iType <= 490) || (iType >= 500 && iType <= 580) || (iType >= 601 && iType <= 613) || (iType >= 616 && iType <= 617 || (iType >= 619 && iType <= 620)) || (iType == 622) || (iType == 624))
  139. return Positions.Right;
  140. else if (iType >= 350 && iType <= 370)
  141. return Positions.RightAccessory;
  142. else if (iType == 380)
  143. return Positions.LeftAccessory;
  144. else return (Positions)0;
  145. }
  146. public static void EquipItem(ItemUsage itemUsage, GameState client)
  147. {
  148. ConquerItem item = null;
  149. client.Player.AttackPacket = null;
  150. if (client.Inventory.TryGetItem(itemUsage.UID, out item) && client.Booth == null)
  151. {
  152. if (item.ID / 1000 >= 600)
  153. {
  154. if (itemUsage.dwParam == 4)
  155. {
  156. if (!client.Equipment.Free(5))
  157. {
  158. if (item.ID / 1000 != client.Equipment.TryGetItem(5).ID / 1000)
  159. {
  160. return;
  161. }
  162. }
  163. }
  164. }
  165. if (item.Suspicious) return;
  166. Positions pos = GetPositionFromID(item.ID);
  167.  
  168. if (pos == Positions.Inventory)
  169. {
  170. UseItem(item, client); return;
  171. }
  172. if (ItemPosition(item.ID) == ConquerItem.Garment)
  173. if (client.Player.Tournament_Signed) return;
  174. #region Sanity checks
  175. bool can2hand = false;
  176. bool can2wpn = false;
  177. if (client.Player.Class >= 20 && client.Player.Class <= 25)
  178. {
  179. if (WarriorEpic(item.ID))
  180. can2hand = true;
  181. can2wpn = true;
  182. }
  183. uint dwExtra = 0;
  184. if (itemUsage.dwParam > 20)
  185. dwExtra = 20;
  186. if (client.Player.Class >= 11 && client.Player.Class <= 75)
  187. can2hand = true;
  188. if (client.Player.Class >= 11 && client.Player.Class <= 15 || client.Player.Class >= 51 && client.Player.Class <= 55 || client.Player.Class >= 61 && client.Player.Class <= 65 || client.Player.Class >= 71 && client.Player.Class <= 75)
  189. can2wpn = true;
  190. if (client.Player.Class >= 71 && client.Player.Class <= 75 || client.Player.Class >= 41 && client.Player.Class <= 45)
  191. can2wpn = true;
  192. if (client.Player.Class >= 50 && client.Player.Class <= 55)
  193. {
  194. can2hand = true;
  195. can2wpn = true;
  196. }
  197. if (client.Player.Class >= 130 && client.Player.Class <= 135 || client.Player.Class >= 140 && client.Player.Class <= 145)
  198. {
  199. can2hand = true;
  200. can2wpn = true;
  201. }
  202. if (client.Player.Class >= 80 && client.Player.Class <= 85)
  203. {
  204. can2hand = true;
  205. can2wpn = true;
  206. }
  207. if (!Equipable(item, client))
  208. return;
  209. if (ItemPosition(item.ID) == 5)
  210. {
  211. itemUsage.dwParam = 5 + dwExtra;
  212. if (!can2hand && !can2wpn)
  213. return;
  214. if (client.Equipment.Free(4 + dwExtra) || (client.Equipment.TryGetItem(4 + dwExtra).ID / 1000 != 500 && IsArrow(item.ID)))
  215. return;
  216. }
  217. if (ItemPosition(item.ID) == 4)
  218. {
  219. if (itemUsage.dwParam == 5 + dwExtra)
  220. if (!can2hand || !can2wpn)
  221. return;
  222. }
  223. if (!((itemUsage.dwParam == 4 + dwExtra || itemUsage.dwParam == 5 + dwExtra) && (ItemPosition(item.ID) == 4 || ItemPosition(item.ID) == 5)))
  224. {
  225. if (!IsAccessory(item.ID))
  226. itemUsage.dwParam = ItemPosition(item.ID) + dwExtra;
  227. }
  228. #region Hossu
  229. if (client.Player.Class >= 130 && client.Player.Class <= 135 || client.Player.Class >= 140 && client.Player.Class <= 145)
  230. {
  231. if ((itemUsage.dwParam - dwExtra) == 5)
  232. {
  233. if ((item.ID / 1000) == 421 || (item.ID / 1000) == 620) return;
  234. var rItem = client.Equipment.TryGetItem((byte)(4 + dwExtra));
  235. if (rItem != null)
  236. {
  237. if (item.ID / 1000 == 619)
  238. {
  239. if ((rItem.ID / 1000) != 421 && (rItem.ID / 1000) != 620)
  240. return;
  241. }
  242. else return;
  243. }
  244. }
  245. if ((itemUsage.dwParam - dwExtra) == 4)
  246. {
  247. var rItem = client.Equipment.TryGetItem((byte)(5 + dwExtra));
  248. if (rItem != null)
  249. {
  250. if (rItem.ID / 1000 == 619)
  251. {
  252. if ((item.ID / 1000) != 421 && (item.ID / 1000) != 620) return;
  253. }
  254. }
  255. }
  256. }
  257. #endregion
  258. bool twohand = IsTwoHand(item.ID);
  259. if (!twohand && itemUsage.dwParam == 4 + dwExtra)
  260. {
  261. if (!client.Equipment.Free((byte)(5 + dwExtra)))
  262. {
  263. if (client.Inventory.Count < 40)
  264. {
  265. if (IsArrow(client.Equipment.TryGetItem((byte)(5 + dwExtra)).ID))
  266. client.Equipment.Remove((byte)(5 + dwExtra));
  267. else
  268. {
  269. if (client.Equipment.TryGetItem((byte)(4 + dwExtra)) != null)
  270. {
  271. if (IsTwoHand(client.Equipment.TryGetItem((byte)(4 + dwExtra)).ID))
  272. client.Equipment.Remove((byte)(4 + dwExtra));
  273. }
  274. }
  275. }
  276. }
  277. }
  278.  
  279. if ((itemUsage.dwParam - dwExtra) == 5)
  280. {
  281. if ((item.ID / 1000) == 421 || IsTwoHand(item.ID))
  282. return;
  283. var rItem = client.Equipment.TryGetItem((byte)(4 + dwExtra));
  284. if (rItem != null)
  285. {
  286. if (rItem.IsTwoHander())
  287. {
  288. if (IsArrow(item.ID))
  289. {
  290. if (rItem.ID / 1000 != 500) return;
  291. }
  292. else
  293. {
  294. if (IsShield(item.ID))
  295. {
  296. if ((rItem.ID / 1000) == 421) return;
  297. if (!client.Spells.ContainsKey(10311) && client.Player.FirstRebornClass == 25 && client.Player.SecondRebornClass == 25)//Perseverance
  298. {
  299. client.Send("You need to know Perseverance (Warrior Pure skill) to be able to wear 2-handed weapon and shield.");
  300. return;
  301. }
  302. }
  303. else if (item.ID / 1000 == 619)
  304. {
  305. if ((rItem.ID / 1000) != 421 && (rItem.ID / 1000) != 620)
  306. return;
  307. }
  308. else
  309. itemUsage.dwParam = 4 + dwExtra;
  310. }
  311. }
  312. }
  313. }
  314. if (itemUsage.dwParam == 4 + dwExtra)
  315. if (client.Player.ContainsFlag((ulong)MsgUpdate.Flags.Fly))
  316. if (item.ID / 1000 != 500)
  317. return;
  318.  
  319. if (!((client.Player.Class >= 50 && client.Player.Class <= 55)))
  320. if ((item.ID / 1000) == 601)
  321. if ((itemUsage.dwParam - dwExtra) == 5)
  322. return;
  323. #endregion
  324. if (client.Player.ContainsFlag3((ulong)MsgUpdate.Flags3.PathOfShadow))
  325. if (item.ID / 1000 != 613) return;
  326. if (client.Map.ID == 1039)
  327. client.Player.AttackPacket = null;
  328. item.Position = (ushort)itemUsage.dwParam;
  329. if (ItemPosition(item.ID) == 5 && !IsArrow(item.ID))
  330. {
  331. if (IsTwoHand(client.Equipment.TryGetItem((byte)(4 + dwExtra)).ID))
  332. {
  333. if (!client.Spells.ContainsKey(10311))
  334. {
  335. client.Send("You need to know Perseverance (Warrior Pure skill) to be able to wear 2-handed weapon and shield.");
  336. return;
  337. }
  338. }
  339. }
  340. uint itemType = item.ID / 1000;
  341. if (itemType == 421)
  342. {
  343. if (item.Position == 5 + dwExtra)
  344. {
  345. item.Position = 0; return;
  346. }
  347. }
  348. if (itemType == 900)
  349. {
  350. if (!(client.Player.Class >= 20 && client.Player.Class <= 25))
  351. {
  352. item.Position = 0; return;
  353. }
  354. }
  355. client.Inventory.Remove(item, Enums.ItemUse.Move, true);
  356. if (client.Equipment.Free((byte)itemUsage.dwParam))
  357. {
  358. if (twohand)
  359. client.Equipment.Remove((byte)(5 + dwExtra));
  360. item.Position = (byte)itemUsage.dwParam;
  361. client.Equipment.Add(item);
  362. item.Mode = Enums.ItemMode.Update;
  363. item.Send(client);
  364. }
  365. else
  366. {
  367. if (twohand)
  368. client.Equipment.Remove((byte)(5 + dwExtra));
  369. if (IsBow(client.Equipment.TryGetItem((byte)itemUsage.dwParam).ID))
  370. {
  371. client.Player.RemoveFlag((ulong)MsgUpdate.Flags.Fly);
  372. }
  373. client.Equipment.Remove((byte)itemUsage.dwParam);
  374. item.Position = (byte)itemUsage.dwParam;
  375. client.Equipment.Add(item);
  376. }
  377. var iu = new ItemUsage(true);
  378. iu.ID = ItemUsage.Mode.Unknown5;
  379. iu.UID = itemUsage.UID;
  380. iu.dwParam = itemUsage.dwParam;
  381. client.Send(iu.ToArray());
  382.  
  383. client.CalculateStatBonus();
  384. client.CalculateHPBonus();
  385. client.LoadItemStats();
  386.  
  387. ClientEquip equips = new ClientEquip();
  388. equips.DoEquips(client);
  389. client.Send(equips.ToArray());
  390.  
  391. Database.ConquerItemTable.UpdateLocation(item, client);
  392. client.Equipment.UpdateEntityPacket();
  393.  
  394. MsgPlayerAttriInfo Stats = new MsgPlayerAttriInfo(client);
  395. client.Send(Stats.ToArray());
  396.  
  397. if (client.Team != null)
  398. {
  399. client.Team.GetClanShareBp(client);
  400. }
  401. new MsgUserTotalRefineLev().Send(client);
  402. }
  403. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement