Advertisement
Guest User

Untitled

a guest
Mar 6th, 2017
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.24 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <cstrike>
  6. #include <hamsandwich>
  7. #include <fun>
  8.  
  9. #define PLUGIN "OOE Shop"
  10. #define VERSION "1.1.2"
  11. #define AUTHOR "Kia"
  12.  
  13. #define get_player_cash(%1) get_pdata_int(%1, 115)
  14.  
  15. // ===============================================================================
  16. //     Variables
  17. // ===============================================================================
  18.  
  19. /* Booleans */
  20.  
  21. new bool:g_bHasGrenade[33]
  22. new bool:g_bHasFlashbang[33]
  23. new bool:g_bHasFrostNade[33]
  24. new bool:g_bHasHealth[33]
  25. new bool:g_bHasRespawn[33]
  26. new bool:g_bHasGravity[33]         // Vec imamo registrovan bool za gravity tako da nema potrebe da pravimo novi. Znaci samo cemo mu malo izmeniti ulogu
  27. new bool:g_bHasNoFlash[33]
  28. new bool:g_bHasNoFrost[33]
  29.  
  30.  
  31. /* Misc */
  32.  
  33. new g_msgScreenFade
  34.  
  35.  
  36. // ===============================================================================
  37. //     plugin_init
  38. // ===============================================================================
  39.  
  40. public plugin_init()
  41. {
  42.     register_plugin(PLUGIN, VERSION, AUTHOR)
  43.  
  44.     RegisterHam(Ham_Spawn, "player", "SpawnedEvent", 1)      // Registrujemo spawn event da bismo mogli da mu damo gravity ako nije umro u prosloj rundi
  45.    
  46.     /* Events */
  47.    
  48.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  49.     register_event("DeathMsg", "DeathMsg", "a")              // Registrujemo death event da bismo mogli da mu sklonimo gravity kad umre..
  50.    
  51.     /* Logevents */
  52.    
  53.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  54.        
  55.     /* Commands */
  56.    
  57.     register_clcmd("say /shop",         "cmd_Shop")
  58.     register_clcmd("say_team /shop",     "cmd_Shop")
  59.     register_clcmd("say /store",         "cmd_Shop")
  60.     register_clcmd("say_team /store",     "cmd_Shop")
  61.     register_clcmd("say /prodavnica",         "cmd_Shop")
  62.     register_clcmd("say_team /prodavnica",     "cmd_Shop")
  63.     register_clcmd("say /kupi",         "cmd_Shop")
  64.     register_clcmd("say_team /kupi",     "cmd_Shop")
  65.     register_clcmd("shop",            "cmd_Shop")
  66.    
  67.     /* Misc */
  68.    
  69.     g_msgScreenFade = get_user_msgid("ScreenFade")
  70. }
  71.  
  72. // ===============================================================================
  73. //     Event_Flashed - Called when a player gets flashed
  74. // ===============================================================================
  75.  
  76. public Event_Flashed(id)
  77. {
  78.     if(g_bHasNoFlash[id])
  79.     {
  80.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  81.         write_short(1)
  82.         write_short(1)
  83.         write_short(1)
  84.         write_byte(0)
  85.         write_byte(0)
  86.         write_byte(0)
  87.         write_byte(255)
  88.         message_end()
  89.     }
  90. }
  91.  
  92. // ===============================================================================
  93. //     LogEvent_RoundEnd - Called when a Round ends
  94. // ===============================================================================
  95.  
  96. public LogEvent_RoundEnd()
  97. {
  98.      arrayset(g_bHasGrenade, 0, sizeof(g_bHasNoFlash))
  99.      arrayset(g_bHasFlashbang, 0, sizeof(g_bHasFlashbang))
  100.      arrayset(g_bHasFrostNade, 0, sizeof(g_bHasFrostNade))
  101.      arrayset(g_bHasHealth, 0, sizeof(g_bHasHealth))
  102.      arrayset(g_bHasRespawn, 0, sizeof(g_bHasRespawn))
  103.      arrayset(g_bHasNoFlash, 0, sizeof(g_bHasNoFlash))
  104.      arrayset(g_bHasNoFrost, 0, sizeof(g_bHasNoFrost))
  105. }
  106.  
  107. public SpawnedEvent(id)                                  // Na spawnu, ako igrac ima gravity, tj. ako je bool hasgravity == true, stavljamo mu gravitaciju. Posto se gravity inace gubi na pocetku runde...
  108.     if(g_bHasGravity[id])
  109.         func_giveitem_gravity(id)
  110.  
  111. public DeathMsg(id)                                      // Kada igrac umre, prebacujemo bool na false, da igrac nebi vise dobijao gravity na spawnu...
  112.     if(g_bHasGravity[id])
  113.         g_bHasGravity[id] = false
  114.  
  115.  
  116. // ===============================================================================
  117. //     cmd_Shop - Called when someone is typing (say(_team)) (/)shop
  118. // ===============================================================================
  119.  
  120. public cmd_Shop(id)
  121. {
  122.     switch(cs_get_user_team(id))
  123.     {
  124.         case CS_TEAM_T : func_OpenTShop(id)
  125.         case CS_TEAM_CT : func_OpenCTShop(id)
  126.     }
  127. }
  128.  
  129. // ===============================================================================
  130. //     func_OpenTShop - Opened when a Terrorist opens the Shop
  131. // ===============================================================================
  132.  
  133. public func_OpenTShop(id)
  134. {    
  135.     new szMenuTitle[64]
  136.     formatex(szMenuTitle, charsmax(szMenuTitle), "[TriP KNIFE] - TT Shop")
  137.    
  138.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  139.    
  140.     menu_additem(menu, "HE Grenade [14000$]",     "0",         g_bHasGrenade[id] || !is_user_alive(id) ? 1<<31 : 0)
  141.     menu_additem(menu, "FlashBang [4000$]",     "1",         g_bHasFlashbang[id] || !is_user_alive(id) ? 1<<31 : 0)
  142.     menu_additem(menu, "SmokeNade [2000$]",     "2",         g_bHasFrostNade[id] || !is_user_alive(id) ? 1<<31 : 0)
  143.     menu_additem(menu, "+40 HP [15000$]",     "3",         g_bHasHealth[id] || !is_user_alive(id) ? 1<<31 : 0)
  144.     menu_additem(menu, "Respawn [10000$]",         "4",         is_user_alive(id) || g_bHasRespawn[id] ? 1<<31 : 0)
  145.     menu_additem(menu, "Gravitacija [5000$]",     "5",     g_bHasGravity[id] || !is_user_alive(id) ? 1<<31 :0)
  146.    
  147.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  148.     menu_display( id, menu, 0 )
  149.     return PLUGIN_HANDLED
  150. }
  151.  
  152. public func_OpenTShop_handler(id, menu, item)
  153. {
  154.     if( item == MENU_EXIT )
  155.     {
  156.         return PLUGIN_HANDLED;
  157.     }
  158.  
  159.     new money = cs_get_user_money(id)
  160.    
  161.     switch(item)
  162.     {
  163.         case 0:
  164.         {
  165.             if(money >= 14000)
  166.             {
  167.                 Reduce(id, 14000)
  168.                 func_giveitem_he(id)
  169.             }
  170.             else
  171.                 client_print(id, print_chat, "Nemas dovoljno para da kupis HE Grenade treba ti 14000$.")
  172.         }
  173.         case 1:
  174.         {
  175.             if(money >= 4000)
  176.             {
  177.                 Reduce(id, 4000)
  178.                 func_giveitem_flash(id)
  179.             }
  180.             else
  181.                 client_print(id, print_chat, "Nemas dovoljno para da kupis FlashBang treba ti 4000$.")
  182.         }
  183.         case 2:
  184.         {
  185.             if(money >= 2000)
  186.             {
  187.                 Reduce(id, 2000)
  188.                 func_giveitem_frost(id)
  189.             }
  190.             else
  191.                 client_print(id, print_chat, "Nemas dovoljno para da kupis SmokeNade treba ti 2000$.")
  192.         }
  193.         case 3:
  194.         {
  195.             if(money >= 15000)
  196.             {
  197.                 Reduce(id, 15000)
  198.                 func_giveitem_health(id)
  199.             }
  200.             else
  201.                 client_print(id, print_chat, "Nemas dovoljno para da kupis +40 HP treba ti 15000$.")
  202.         }
  203.         case 4:
  204.         {
  205.             if(money >= 10000)
  206.             {
  207.                 Reduce(id, 10000)
  208.                 func_giveitem_respawn(id)
  209.             }
  210.             else
  211.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Resapwn treba ti 10000$.")
  212.         }
  213.     case 5:
  214.         {
  215.             if(money >= 5000)
  216.             {
  217.                 Reduce(id, 5000)
  218.                 func_giveitem_gravity(id)          
  219.                 g_bHasGravity[id] = true // Postavljanje boola na true sam prebacio ovde umesto dole u funkciji, da bismo mogli da pozivamo func_giveitem_gravity na spawnu i da ne postavljamo ponovo bool na true posto vec znamo da je postavljen cim pozivamo funkciju... U principu skroz nebitna stvar, ali eto malo stedimo memoriju servera
  220.             }
  221.             else
  222.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Gravitaciju treba ti 5000$.")
  223.         }
  224.     }
  225.     return PLUGIN_CONTINUE
  226. }
  227.  
  228. // ===============================================================================
  229. //     func_OpenTShop - Opened when a CT opens the Shop
  230. // ===============================================================================
  231.  
  232. public func_OpenCTShop(id)
  233. {    
  234.     new szMenuTitle[64]
  235.     formatex(szMenuTitle, charsmax(szMenuTitle), "[TriP KNIFE] - CT Shop")
  236.    
  237.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  238.    
  239.     menu_additem(menu, "HE Grenade [14000$]",     "0",         g_bHasGrenade[id] || !is_user_alive(id) ? 1<<31 : 0)
  240.     menu_additem(menu, "+40 HP [15000$]",     "1",         g_bHasHealth[id] || !is_user_alive(id) ? 1<<31 : 0)
  241.     menu_additem(menu, "Respawn [10000$]",         "2",         is_user_alive(id) || g_bHasRespawn[id] ? 1<<31 : 0)
  242.     menu_additem(menu, "Anti-Flash [4000$]",    "3",         g_bHasNoFlash[id] || !is_user_alive(id) ? 1<<31 : 0)
  243.     menu_additem(menu, "Anti-Smoke [2000$]",     "4",         g_bHasNoFrost[id] || !is_user_alive(id) ? 1<<31 : 0)
  244.     menu_additem(menu, "Gravitacija [5000$]",     "5",     g_bHasGravity[id] || !is_user_alive(id) ? 1<<31 : 0)
  245.    
  246.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  247.     menu_display( id, menu, 0 )
  248.     return PLUGIN_HANDLED
  249. }
  250.  
  251. public func_OpenCTShop_handler(id, menu, item)
  252. {
  253.     if( item == MENU_EXIT )
  254.     {
  255.         return PLUGIN_HANDLED;
  256.     }
  257.  
  258.     new money = cs_get_user_money(id)
  259.    
  260.     switch(item)
  261.     {
  262.         case 0:
  263.         {
  264.             if(money >= 14000)
  265.             {
  266.                 Reduce(id, 14000)
  267.                 func_giveitem_he(id)
  268.             }
  269.             else
  270.                 client_print(id, print_chat, "Nemas dovoljno para da kupis HE Grenade treba ti 14000$.")
  271.         }
  272.         case 1:
  273.         {
  274.             if(money >= 15000)
  275.             {
  276.                 Reduce(id, 15000)
  277.                 func_giveitem_health(id)
  278.             }
  279.             else
  280.                 client_print(id, print_chat, "Nemas dovoljno para da kupis +40 HP treba ti 15000$.")
  281.         }
  282.         case 2:
  283.         {
  284.             if(money >= 10000)
  285.             {
  286.                 Reduce(id, 10000)
  287.                 func_giveitem_respawn(id)
  288.             }
  289.             else
  290.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Respawn treba ti 10000$.")
  291.         }
  292.         case 3:
  293.         {
  294.             if(money >= 4000)
  295.             {
  296.                 Reduce(id, 4000)
  297.                 func_giveitem_aflash(id)
  298.             }
  299.             else
  300.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Anti-Flash treba ti 4000$.")
  301.         }
  302.         case 4:
  303.         {
  304.             if(money >= 2000)
  305.             {
  306.                 Reduce(id, 2000)
  307.                 func_giveitem_afrost(id)
  308.             }
  309.             else
  310.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Anti-Smoke treba ti 2000$.")
  311.         }
  312.     case 5:
  313.         {
  314.             if(money >= 5000)
  315.             {
  316.                 Reduce(id, 5000)
  317.                 func_giveitem_gravity(id)
  318.                 g_bHasGravity[id] = true          // Postavljanje boola na true sam prebacio ovde umesto dole u funkciji, da bismo mogli da pozivamo func_giveitem_gravity na spawnu i da ne postavljamo ponovo bool na true posto vec znamo da je postavljen cim pozivamo funkciju... U principu skroz nebitna stvar, ali eto malo stedimo memoriju servera
  319.             }
  320.             else
  321.                 client_print(id, print_chat, "Nemas dovoljno para da kupis Gravitaciju treba ti 5000$.")
  322.         }
  323.     }
  324.     return PLUGIN_CONTINUE
  325. }
  326.  
  327.  
  328.  
  329. // ===============================================================================
  330. //     Item Handlers
  331. // ===============================================================================
  332.  
  333. public func_giveitem_he(id)
  334. {
  335.     give_item(id, "weapon_hegrenade")
  336.     g_bHasGrenade[id] = true
  337. }
  338.  
  339. public func_giveitem_flash(id)
  340. {
  341.     give_item(id, "weapon_flashbang")
  342.     g_bHasFlashbang[id] = true
  343. }
  344.  
  345. public func_giveitem_gravity(id)
  346. {
  347.     set_user_gravity(id, 0.5)
  348. }
  349.  
  350. public func_giveitem_frost(id)
  351. {
  352.     give_item(id, "weapon_smokegrenade")
  353.     g_bHasFrostNade[id] = true
  354. }
  355.    
  356. public func_giveitem_health(id)
  357. {
  358.     set_user_health(id, get_user_health(id) + 40)
  359.     g_bHasHealth[id] = true
  360. }
  361.    
  362. public func_giveitem_respawn(id)
  363. {
  364.     ExecuteHamB(Ham_CS_RoundRespawn, id)
  365.    
  366.     new szName[33]
  367.     get_user_name(id, szName, charsmax(szName))
  368.    
  369.     client_print(0, print_chat, "%s je kupio RESPAWN!", szName)
  370.    
  371.     g_bHasRespawn[id] = true
  372. }
  373.    
  374. public func_giveitem_aflash(id)
  375.     g_bHasNoFlash[id] = true
  376.    
  377. public func_giveitem_afrost(id)
  378.     g_bHasNoFrost[id] = true
  379.    
  380.    
  381. // ===============================================================================
  382. //     FrostNades
  383. // ===============================================================================
  384.  
  385. public frostnades_player_chilled( victim, attacker )
  386. {
  387.     if(g_bHasNoFrost[victim])
  388.         return PLUGIN_HANDLED
  389.     return PLUGIN_CONTINUE
  390. }
  391.  
  392. public frostnades_player_frozen( victim, attacker )
  393. {
  394.     if(g_bHasNoFrost[victim])
  395.         return PLUGIN_HANDLED
  396.     return PLUGIN_CONTINUE
  397. }
  398.  
  399. // ===============================================================================
  400. //     Stocks
  401. // ===============================================================================
  402.  
  403. stock Reduce(id, amount)
  404.     cs_set_user_money(id, cs_get_user_money(id) - amount)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement