Hyuna

Some crappy plugin

Oct 13th, 2018
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 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. }
Add Comment
Please, Sign In to add comment