Advertisement
Guest User

Untitled

a guest
Oct 13th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  1. /* Sublime AMXX Editor v2.2 */
  2.  
  3. #include <amxmodx>
  4. #include <cstrike>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <nvault>
  8.  
  9. new const g_szVault[] = "WepPak";
  10. new g_hVault;
  11.  
  12. #define MAX_WEP_PER_PAK 5
  13. #define MAX_PAKS 3
  14.  
  15. enum (<<= 1)
  16. {
  17. PAK_NONE = 0,
  18. PAK1 = 1,
  19. PAK2,
  20. PAK3
  21. }
  22.  
  23. enum _:ddata
  24. {
  25. wepname[32],
  26. wepcode
  27. }
  28.  
  29. new const g_iPakCost[MAX_PAKS] = {
  30. 150000,
  31. 200000,
  32. 250000
  33. };
  34.  
  35. new const g_aData[MAX_WEP_PER_PAK][ddata] = {
  36. { "weapon_m4a1", CSW_M4A1 },
  37. { "weapon_ak47", CSW_AK47 },
  38. { "weapon_usp", CSW_USP },
  39. { "weapon_glock", CSW_GLOCK18 },
  40. { "weapon_fiveseven", CSW_FIVESEVEN }
  41. };
  42.  
  43. new const g_szFirstPackage[MAX_WEP_PER_PAK][] = {
  44. "models/newmodels/package1/v_m4a1.mdl",
  45. "models/newmodels/package1/v_ak47.mdl",
  46. "models/newmodels/package1/v_usp.mdl",
  47. "models/newmodels/package1/v_glock.mdl",
  48. "models/newmodels/package1/v_fiveseven.mdl"
  49. };
  50.  
  51. new const g_szSecondPackage[MAX_WEP_PER_PAK][] = {
  52. "models/newmodels/package2/v_m4a1.mdl",
  53. "models/newmodels/package2/v_ak47.mdl",
  54. "models/newmodels/package2/v_usp.mdl",
  55. "models/newmodels/package2/v_glock.mdl",
  56. "models/newmodels/package2/v_fiveseven.mdl"
  57. };
  58.  
  59. new const g_szThirdPackage[MAX_WEP_PER_PAK][] = {
  60. "models/newmodels/package3/v_m4a1.mdl",
  61. "models/newmodels/package3/v_ak47.mdl",
  62. "models/newmodels/package3/v_usp.mdl",
  63. "models/newmodels/package3/v_glock.mdl",
  64. "models/newmodels/package3/v_fiveseven.mdl"
  65. };
  66.  
  67. // from data/gamedata/common.games/entities.games/cstrike/offsets-cbaseplayeritem.txt
  68. new const m_pPlayer = 164;
  69. new const XO_LINUXOFFSETDIFF = 16;
  70. new const XO_MACOFFSETDIFF = 16;
  71.  
  72. new g_iClientCurrentPak[MAX_PLAYERS + 1];
  73. new g_iClientPaks[MAX_PLAYERS + 1];
  74.  
  75. native get_user_cash(client);
  76. native set_user_cash(client, amount);
  77.  
  78. public plugin_init() {
  79. register_plugin("Weapon skin packs","v1.0","Hyuna");
  80.  
  81. register_clcmd("say /buy","cmdBuy");
  82.  
  83. for (new i = 0; i < MAX_WEP_PER_PAK; i++)
  84. RegisterHam(Ham_Item_Deploy,g_aData[i][wepname],"fwdOnItemDeployPost",1,false);
  85.  
  86. g_hVault = nvault_open(g_szVault);
  87.  
  88. if (g_hVault == INVALID_HANDLE)
  89. set_fail_state("Failed to open nVault ^"%s^".",g_szVault);
  90. }
  91.  
  92. public plugin_precache() {
  93. for (new i = 0; i < MAX_WEP_PER_PAK; i++)
  94. {
  95. if (!file_exists(g_szFirstPackage[i],false))
  96. set_fail_state("Failed to load model ^"%s^".",g_szFirstPackage[i]);
  97.  
  98. if (!file_exists(g_szSecondPackage[i],false))
  99. set_fail_state("Failed to load model ^"%s^".",g_szSecondPackage[i]);
  100.  
  101. if (!file_exists(g_szThirdPackage[i],false))
  102. set_fail_state("Failed to load model ^"%s^".",g_szThirdPackage[i]);
  103.  
  104. precache_model(g_szFirstPackage[i]);
  105. precache_model(g_szSecondPackage[i]);
  106. precache_model(g_szThirdPackage[i]);
  107. }
  108. }
  109.  
  110. public client_putinserver(client) {
  111. static szAuthID[32],szData[4],t;
  112.  
  113. get_user_authid(client,szAuthID,charsmax(szAuthID));
  114.  
  115. if(nvault_lookup(g_hVault,szAuthID,szData,charsmax(szData),t))
  116. g_iClientPaks[client] = str_to_num(szData);
  117.  
  118. else
  119. g_iClientPaks[client] = 0;
  120.  
  121. g_iClientCurrentPak[client] = 0;
  122. }
  123.  
  124. public client_disconnected(client, bool:drop, message[], maxlen) {
  125. static szAuthID[32],szData[4];
  126.  
  127. get_user_authid(client,szAuthID,charsmax(szAuthID));
  128.  
  129. num_to_str(g_iClientPaks[client],szData,charsmax(szData));
  130.  
  131. nvault_set(g_hVault,szAuthID,szData);
  132. }
  133.  
  134. public cmdBuy(client) {
  135. static m,cb,some[128];
  136.  
  137. formatex(some,charsmax(some),"[ JailBreak ] Weapon Models Packages^nYour cash: %d",get_user_cash(client));
  138. m = menu_create(some,"mHandler");
  139. cb = menu_makecallback("mCallback");
  140.  
  141. if (g_iClientPaks[client] & PAK1)
  142. menu_additem(m,"Weapon Package #1 \d[ \yOwned \d]",.callback=cb);
  143.  
  144. else if (g_iClientCurrentPak[client] == 1)
  145. menu_additem(m,"Weapon Package #1 \d[ \yCurrent Package \d]",.callback=cb);
  146.  
  147. else
  148. {
  149. formatex(some,charsmax(some),"Weapon Package #1 \d[ \yCost: %d \d]",g_iPakCost[0]);
  150. menu_additem(m,some,.callback=cb);
  151. }
  152.  
  153. if (g_iClientPaks[client] & PAK2)
  154. menu_additem(m,"Weapon Package #2 \d[ \yOwned \d]",.callback=cb);
  155.  
  156. else if (g_iClientCurrentPak[client] == 2)
  157. menu_additem(m,"Weapon Package #2\d[ \yCurrent Package \d]",.callback=cb);
  158.  
  159. else
  160. {
  161. formatex(some,charsmax(some),"Weapon Package #2 \d[ \yCost: %d \d]",g_iPakCost[1]);
  162. menu_additem(m,some,.callback=cb);
  163. }
  164.  
  165. if (g_iClientPaks[client] & PAK3)
  166. menu_additem(m,"Weapon Package #3 \d[ \yOwned \d]");
  167.  
  168. else if (g_iClientCurrentPak[client] == 3)
  169. menu_additem(m,"Weapon Package #3 \d[ \yCurrent Package \d]",.callback=cb);
  170.  
  171. else
  172. {
  173. formatex(some,charsmax(some),"Weapon Package #3 \d[ \yCost: %d \d]",g_iPakCost[2]);
  174. menu_additem(m,some,.callback=cb);
  175. }
  176.  
  177. menu_display(client,m);
  178.  
  179. return PLUGIN_HANDLED;
  180. }
  181.  
  182. public mCallback(client, menu, item) {
  183. return ((get_user_cash(client) < g_iPakCost[item]) || (g_iClientCurrentPak[client] == (item+1)) ? ITEM_DISABLED:ITEM_ENABLED);
  184. }
  185.  
  186. public mHandler(client, menu, item) {
  187. if (item == MENU_EXIT)
  188. {
  189. menu_destroy(menu);
  190. return PLUGIN_HANDLED;
  191. }
  192.  
  193. if (g_iClientPaks[client] & (1<<item))
  194. {
  195. if (g_iClientCurrentPak[client] == (item + 1))
  196. client_print(client,print_chat,"[AMXX] You already activate that package!");
  197.  
  198. else
  199. {
  200. g_iClientCurrentPak[client] = (item + 1);
  201. change_client_model_pak(client);
  202. }
  203. }
  204.  
  205. else
  206. {
  207. if (get_user_cash(client) < g_iPakCost[item])
  208. client_print(client,print_chat,"[AMXX] You don't have enought cahs to buy that package!");
  209.  
  210. else
  211. {
  212. client_print(client,print_chat,"[AMXX] You bought yourself package %d for %d cash!",(item + 1),g_iPakCost[item]);
  213. set_user_cash(client,(get_user_cash(client) - g_iPakCost[item]));
  214.  
  215. g_iClientPaks[client] &= (1<<item);
  216. g_iClientCurrentPak[client] = (item + 1);
  217.  
  218. change_client_model_pak(client);
  219. }
  220. }
  221.  
  222. menu_destroy(menu);
  223. return cmdBuy(client);
  224. }
  225.  
  226. public fwdOnItemDeployPost(entity) {
  227. static client;
  228.  
  229. if (!pev_valid(entity))
  230. return;
  231.  
  232. client = get_pdata_cbase(entity,m_pPlayer,XO_LINUXOFFSETDIFF,XO_MACOFFSETDIFF);
  233.  
  234. if (!is_user_alive(client))
  235. return;
  236.  
  237. if(g_iClientPaks[client] > 0 && g_iClientCurrentPak[client] > 0)
  238. change_client_model_pak(client);
  239. }
  240.  
  241. change_client_model_pak(client) {
  242. static wep;
  243.  
  244. if (!is_user_alive(client))
  245. return 0;
  246.  
  247. wep = get_user_weapon(client);
  248. switch(g_iClientCurrentPak[client])
  249. {
  250. case 1:
  251. {
  252. switch(wep)
  253. {
  254. case CSW_M4A1: set_pev(client,pev_viewmodel2,g_szFirstPackage[0]);
  255. case CSW_AK47: set_pev(client,pev_viewmodel2,g_szFirstPackage[1]);
  256. case CSW_USP: set_pev(client,pev_viewmodel2,g_szFirstPackage[2]);
  257. case CSW_GLOCK18: set_pev(client,pev_viewmodel2,g_szFirstPackage[3]);
  258. case CSW_FIVESEVEN: set_pev(client,pev_viewmodel2,g_szFirstPackage[4]);
  259. default: return 0;
  260. }
  261. }
  262.  
  263. case 2:
  264. {
  265. switch(wep)
  266. {
  267. case CSW_M4A1: set_pev(client,pev_viewmodel2,g_szSecondPackage[0]);
  268. case CSW_AK47: set_pev(client,pev_viewmodel2,g_szSecondPackage[1]);
  269. case CSW_USP: set_pev(client,pev_viewmodel2,g_szSecondPackage[2]);
  270. case CSW_GLOCK18: set_pev(client,pev_viewmodel2,g_szSecondPackage[3]);
  271. case CSW_FIVESEVEN: set_pev(client,pev_viewmodel2,g_szSecondPackage[4]);
  272. default: return 0;
  273. }
  274. }
  275.  
  276. case 3:
  277. {
  278. switch(wep)
  279. {
  280. case CSW_M4A1: set_pev(client,pev_viewmodel2,g_szThirdPackage[0]);
  281. case CSW_AK47: set_pev(client,pev_viewmodel2,g_szThirdPackage[1]);
  282. case CSW_USP: set_pev(client,pev_viewmodel2,g_szThirdPackage[2]);
  283. case CSW_GLOCK18: set_pev(client,pev_viewmodel2,g_szThirdPackage[3]);
  284. case CSW_FIVESEVEN: set_pev(client,pev_viewmodel2,g_szThirdPackage[4]);
  285. default: return 0;
  286. }
  287. }
  288.  
  289. default: return 0;
  290. }
  291.  
  292. return 1;
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement