Advertisement
Guest User

Untitled

a guest
May 30th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.37 KB | None | 0 0
  1. #include <YSI\y_hooks>
  2.  
  3.  
  4. new
  5. ItemType:item_Backpack = INVALID_ITEM_TYPE,
  6. ItemType:item_Satchel = INVALID_ITEM_TYPE,
  7. gPlayerBackpack[MAX_PLAYERS],
  8. pack_InventoryOptionID[MAX_PLAYERS],
  9. bool:gTakingOffBag[MAX_PLAYERS];
  10.  
  11.  
  12. stock GivePlayerBackpack(playerid, itemid)
  13. {
  14. if(GetItemType(itemid) == item_Backpack)
  15. {
  16. gPlayerBackpack[playerid] = itemid;
  17. SetPlayerAttachedObject(playerid, 1, 3026, 1, -0.110900, -0.073500, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000);
  18. RemoveItemFromWorld(itemid);
  19. }
  20. else if(GetItemType(itemid) == item_Satchel)
  21. {
  22. gPlayerBackpack[playerid] = itemid;
  23. SetPlayerAttachedObject(playerid, 1, 363, 1, 0.241894, -0.160918, 0.181463, 0.000000, 90.000000, 0.000000, 1.000000, 1.000000, 1.000000);
  24. RemoveItemFromWorld(itemid);
  25. }
  26. else
  27. {
  28. return 0;
  29. }
  30.  
  31. return 1;
  32. }
  33.  
  34. stock RemovePlayerBackpack(playerid)
  35. {
  36. RemovePlayerAttachedObject(playerid, 1);
  37. CreateItemInWorld(gPlayerBackpack[playerid], 0.0, 0.0, 0.0, .world = GetPlayerVirtualWorld(playerid), .interior = GetPlayerInterior(playerid));
  38. gPlayerBackpack[playerid] = INVALID_ITEM_ID;
  39. }
  40.  
  41. stock GetPlayerBackpackItem(playerid)
  42. {
  43. if(!(0 <= playerid < MAX_PLAYERS))
  44. return INVALID_ITEM_ID;
  45.  
  46. return gPlayerBackpack[playerid];
  47. }
  48.  
  49. stock IsItemTypeBag(ItemType:itemtype)
  50. {
  51. if(!IsValidItemType(itemtype))
  52. return 0;
  53.  
  54. if(itemtype == item_Satchel || itemtype == item_Backpack)
  55. return 1;
  56.  
  57. return 0;
  58. }
  59.  
  60. hook OnPlayerConnect(playerid)
  61. {
  62. gPlayerBackpack[playerid] = INVALID_ITEM_ID;
  63. }
  64.  
  65. public OnItemCreate(itemid)
  66. {
  67. if(GetItemType(itemid) == item_Backpack)
  68. {
  69. SetItemExtraData(itemid, CreateContainer("Backpack", 8, .virtual = 1, .max_med = 4, .max_large = 2, .max_carry = 0));
  70. }
  71. if(GetItemType(itemid) == item_Satchel)
  72. {
  73. SetItemExtraData(itemid, CreateContainer("Patrol Pack", 4, .virtual = 1, .max_med = 2, .max_large = 1, .max_carry = 0));
  74. }
  75.  
  76. return CallLocalFunction("pack_OnItemCreate", "d", itemid);
  77. }
  78. #if defined _ALS_OnItemCreate
  79. #undef OnItemCreate
  80. #else
  81. #define _ALS_OnItemCreate
  82. #endif
  83. #define OnItemCreate pack_OnItemCreate
  84. forward pack_OnItemCreate(itemid);
  85.  
  86.  
  87. public OnPlayerUseItem(playerid, itemid)
  88. {
  89. if(GetItemType(itemid) == item_Backpack || GetItemType(itemid) == item_Satchel)
  90. {
  91. CancelPlayerMovement(playerid);
  92. DisplayContainerInventory(playerid, GetItemExtraData(itemid));
  93. }
  94. return CallLocalFunction("pack_OnPlayerUseItem", "dd", playerid, itemid);
  95. }
  96. #if defined _ALS_OnPlayerUseItem
  97. #undef OnPlayerUseItem
  98. #else
  99. #define _ALS_OnPlayerUseItem
  100. #endif
  101. #define OnPlayerUseItem pack_OnPlayerUseItem
  102. forward pack_OnPlayerUseItem(playerid, itemid);
  103.  
  104. hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  105. {
  106. if(IsPlayerInAnyVehicle(playerid))
  107. return 1;
  108.  
  109. if(IsValidItem(gPlayerBackpack[playerid]))
  110. {
  111. if(newkeys & KEY_NO)
  112. {
  113. if(!IsValidItem(GetPlayerItem(playerid)) && GetPlayerWeapon(playerid) == 0)
  114. {
  115. RemovePlayerAttachedObject(playerid, 1);
  116. CreateItemInWorld(gPlayerBackpack[playerid], 0.0, 0.0, 0.0, .world = GetPlayerVirtualWorld(playerid), .interior = GetPlayerInterior(playerid));
  117. GiveWorldItemToPlayer(playerid, gPlayerBackpack[playerid], 1);
  118. gPlayerBackpack[playerid] = INVALID_ITEM_ID;
  119. gTakingOffBag[playerid] = true;
  120. }
  121. }
  122. if(newkeys & KEY_YES)
  123. {
  124. if(IsPlayerInventoryFull(playerid))
  125. {
  126. new
  127. itemid = GetPlayerItem(playerid),
  128. containerid = GetItemExtraData(gPlayerBackpack[playerid]);
  129.  
  130. if(IsValidContainer(containerid) && IsValidItem(itemid))
  131. {
  132. new containername[CNT_MAX_NAME];
  133.  
  134. GetContainerName(containerid, containername);
  135.  
  136. if(AddItemToContainer(containerid, itemid, playerid))
  137. {
  138. new str[32];
  139. format(str, 32, "Item added to %s", containername);
  140. ShowActionText(playerid, str, 3000, 150);
  141. return 1;
  142. }
  143. else
  144. {
  145. new str[32];
  146. format(str, 32, "%s full", containername);
  147. ShowActionText(playerid, str, 3000, 100);
  148. return 1;
  149. }
  150. }
  151. }
  152. }
  153. }
  154. else
  155. {
  156. if(newkeys & KEY_YES)
  157. {
  158. new itemid = GetPlayerItem(playerid);
  159.  
  160. if(GetItemType(itemid) == item_Satchel || GetItemType(itemid) == item_Backpack)
  161. GivePlayerBackpack(playerid, itemid);
  162. }
  163. }
  164.  
  165. return 1;
  166. }
  167.  
  168. public OnPlayerDropItem(playerid, itemid)
  169. {
  170. if(GetItemType(itemid) == item_Backpack || GetItemType(itemid) == item_Satchel)
  171. {
  172. if(gTakingOffBag[playerid])
  173. {
  174. gTakingOffBag[playerid] = false;
  175. return 1;
  176. }
  177. }
  178.  
  179. return CallLocalFunction("pack_OnPlayerDropItem", "dd", playerid, itemid);
  180. }
  181. #if defined _ALS_OnPlayerDropItem
  182. #undef OnPlayerDropItem
  183. #else
  184. #define _ALS_OnPlayerDropItem
  185. #endif
  186. #define OnPlayerDropItem pack_OnPlayerDropItem
  187. forward pack_OnPlayerDropItem(playerid, itemid);
  188.  
  189. public OnPlayerGiveItem(playerid, targetid, itemid)
  190. {
  191. if(GetItemType(itemid) == item_Backpack || GetItemType(itemid) == item_Satchel)
  192. {
  193. if(gTakingOffBag[playerid])
  194. {
  195. gTakingOffBag[playerid] = false;
  196. return 1;
  197. }
  198. }
  199.  
  200. return CallLocalFunction("pack_OnPlayerGiveItem", "ddd", playerid, targetid, itemid);
  201. }
  202. #if defined _ALS_OnPlayerGiveItem
  203. #undef OnPlayerGiveItem
  204. #else
  205. #define _ALS_OnPlayerGiveItem
  206. #endif
  207. #define OnPlayerGiveItem pack_OnPlayerGiveItem
  208. forward pack_OnPlayerGiveItem(playerid, targetid, itemid);
  209.  
  210. public OnPlayerViewInventoryOpt(playerid)
  211. {
  212. print("OnPlayerViewInventoryOpt");
  213. if(IsValidItem(gPlayerBackpack[playerid]) && !IsValidContainer(GetPlayerCurrentContainer(playerid)))
  214. {
  215. pack_InventoryOptionID[playerid] = AddInventoryOption(playerid, "Move to bag");
  216. }
  217.  
  218. return CallLocalFunction("pack_PlayerViewInventoryOpt", "d", playerid);
  219. }
  220. #if defined _ALS_OnPlayerViewInventoryOpt
  221. #undef OnPlayerViewInventoryOpt
  222. #else
  223. #define _ALS_OnPlayerViewInventoryOpt
  224. #endif
  225. #define OnPlayerViewInventoryOpt pack_PlayerViewInventoryOpt
  226. forward pack_PlayerViewInventoryOpt(playerid);
  227.  
  228. public OnPlayerSelectInventoryOpt(playerid, option)
  229. {
  230. print("OnPlayerSelectInventoryOpt");
  231. if(IsValidItem(gPlayerBackpack[playerid]))
  232. {
  233. if(option == pack_InventoryOptionID[playerid])
  234. {
  235. new
  236. containerid,
  237. slot,
  238. itemid;
  239.  
  240. containerid = GetItemExtraData(gPlayerBackpack[playerid]);
  241. slot = GetPlayerSelectedInventorySlot(playerid);
  242. itemid = GetInventorySlotItem(playerid, slot);
  243.  
  244. if(!IsValidItem(itemid))
  245. {
  246. DisplayPlayerInventory(playerid);
  247. return 0;
  248. }
  249.  
  250. if(IsContainerFull(containerid))
  251. {
  252. new
  253. str[CNT_MAX_NAME + 6],
  254. name[CNT_MAX_NAME];
  255.  
  256. GetContainerName(containerid, name);
  257. format(str, sizeof(str), "%s full", name);
  258. ShowActionText(playerid, str, 3000, 100);
  259. DisplayPlayerInventory(playerid);
  260. return 0;
  261. }
  262.  
  263. RemoveItemFromInventory(playerid, slot);
  264. AddItemToContainer(containerid, itemid, playerid);
  265. DisplayPlayerInventory(playerid);
  266. }
  267. }
  268.  
  269. return CallLocalFunction("pack_PlayerSelectInventoryOption", "dd", playerid, option);
  270. }
  271. #if defined _ALS_OnPlayerSelectInventoryOpt
  272. #undef OnPlayerSelectInventoryOpt
  273. #else
  274. #define _ALS_OnPlayerSelectInventoryOpt
  275. #endif
  276. #define OnPlayerSelectInventoryOpt pack_PlayerSelectInventoryOpt
  277. forward pack_PlayerSelectInventoryOpt(playerid, option);
  278.  
  279. public OnPlayerViewContainerOpt(playerid, containerid)
  280. {
  281. print("OnPlayerViewContainerOpt");
  282. if(IsValidItem(gPlayerBackpack[playerid]) && containerid != GetItemExtraData(gPlayerBackpack[playerid]))
  283. {
  284. pack_InventoryOptionID[playerid] = AddContainerOption(playerid, "Move to bag");
  285. }
  286.  
  287. return CallLocalFunction("pack_OnPlayerViewContainerOpt", "dd", playerid, containerid);
  288. }
  289. #if defined _ALS_OnPlayerViewContainerOpt
  290. #undef OnPlayerViewContainerOpt
  291. #else
  292. #define _ALS_OnPlayerViewContainerOpt
  293. #endif
  294. #define OnPlayerViewContainerOpt pack_OnPlayerViewContainerOpt
  295. forward pack_OnPlayerViewContainerOpt(playerid, containerid);
  296.  
  297. public OnPlayerSelectContainerOpt(playerid, containerid, option)
  298. {
  299. if(IsValidItem(gPlayerBackpack[playerid]))
  300. {
  301. if(option == pack_InventoryOptionID[playerid])
  302. {
  303. new
  304. bagcontainerid,
  305. slot,
  306. itemid;
  307.  
  308. bagcontainerid = GetItemExtraData(gPlayerBackpack[playerid]);
  309. slot = GetPlayerContainerSlot(playerid);
  310. itemid = GetContainerSlotItem(containerid, slot);
  311.  
  312. if(!IsValidItem(itemid))
  313. {
  314. DisplayContainerInventory(playerid, containerid);
  315. return 0;
  316. }
  317.  
  318. if(IsContainerFull(bagcontainerid))
  319. {
  320. new
  321. str[CNT_MAX_NAME + 6],
  322. name[CNT_MAX_NAME];
  323.  
  324. GetContainerName(bagcontainerid, name);
  325. format(str, sizeof(str), "%s full", name);
  326. ShowActionText(playerid, str, 3000, 100);
  327. DisplayContainerInventory(playerid, containerid);
  328. return 0;
  329. }
  330.  
  331. if(!WillItemTypeFitInContainer(bagcontainerid, GetItemType(itemid)))
  332. {
  333. ShowActionText(playerid, "Item won't fit", 3000, 140);
  334. DisplayContainerInventory(playerid, containerid);
  335. return 0;
  336. }
  337.  
  338. RemoveItemFromContainer(containerid, slot);
  339. AddItemToContainer(bagcontainerid, itemid, playerid);
  340. DisplayContainerInventory(playerid, containerid);
  341. }
  342. }
  343.  
  344. return CallLocalFunction("pack_OnPlayerSelectContainerOpt", "ddd", playerid, containerid, option);
  345. }
  346. #if defined _ALS_OnPlayerSelectContainerOpt
  347. #undef OnPlayerSelectContainerOpt
  348. #else
  349. #define _ALS_OnPlayerSelectContainerOpt
  350. #endif
  351. #define OnPlayerSelectContainerOpt pack_OnPlayerSelectContainerOpt
  352. forward pack_OnPlayerSelectContainerOpt(playerid, containerid, option);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement