hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 00:49



Jelenlévő felhasználók

Jelenleg 302 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 302 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 7 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Furien mod
HozzászólásElküldve: 2018.03.23. 14:40 
Offline
Senior Tag
Avatar

Csatlakozott: 2018.02.01. 16:27
Hozzászólások: 225
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 18 alkalommal
Helló.

Valaki tudna egy normális, nem hibás Furien Modot adni ?.

Előre is köszönöm.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.03.23. 18:14 
Offline
Beavatott
Avatar

Csatlakozott: 2018.01.05. 10:30
Hozzászólások: 66
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 19 alkalommal
Szia, tessék.
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <engine>
  8.  
  9. #define PLUGIN "Furien Mod"
  10. #define VERSION "64.2.6b"
  11. #define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27
  12.  
  13. // ===============================================================================
  14. //  Variables
  15. // ===============================================================================
  16.  
  17. /* Defines */
  18.  
  19. // Sets maximum of items for Furien Shop
  20. #define FURIEN_SHOP_MAX     8
  21.  
  22. // Sets maximum of items for CT Shop
  23. #define CT_SHOP_MAX         9
  24.  
  25. // Sets maximum of items for CT Gun Meun
  26. #define CT_WEAPON_MAX       5
  27.  
  28. // Delay after spawn to give stuff
  29. #define EQUIP_DELAY         0.1
  30.  
  31. // Maximum Health
  32. #define MAX_HP          200
  33.  
  34. #define TASK_ID_SWAPTEAMS 2000
  35. #define XO_WEAPON 4
  36. #define m_pPlayer 41
  37. #define XO_PLAYER   5
  38. #define m_pActiveItem   373
  39. #define DO_NOT_CHANGE   2
  40.  
  41. /* Enums */
  42.  
  43. enum _:ShopItems
  44. {
  45.     ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
  46. }
  47.  
  48. enum _:GunItems
  49. {
  50.     ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
  51. }
  52.  
  53. /* Entitys */
  54.  
  55. new TaskEnt
  56.  
  57. /* Hamsandwich */
  58.  
  59. new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
  60.  
  61. /* Booleans */
  62.  
  63. new bool:g_bHasAcceptedSettings[33]
  64. new bool:g_bHasWeapon[33]
  65. new bool:g_bWantsLowGrav[33]
  66. new bool:g_bHasSuperKnife[33]
  67. new bool:g_bHasNoFlash[33]
  68.  
  69. /* Integer */
  70.  
  71. new g_iMaxPlayers
  72.  
  73. new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
  74. new g_iItemIndex_CT[33][CT_SHOP_MAX]
  75.  
  76. new g_iHP[33]
  77.  
  78. /* CVars */
  79.  
  80. new cvar_gm, cvar_hpsave
  81.  
  82. /* CVars - Furien */
  83.  
  84. new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
  85. new cvar_t_grav, cvar_t_speed, cvar_t_fs
  86. new cvar_t_psf
  87.  
  88. /* CVars - CTs */
  89.  
  90. new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
  91. new cvar_ct_grav, cvar_ct_fs
  92. new cvar_ct_ammo_pri, cvar_ct_ammo_sec
  93.  
  94. /* Constants - Shop */
  95.  
  96. new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
  97.     {"Superknife",      16000,  "CORE",         "shop_t_givesk",    1,  DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
  98.     {"Deagle (14 Gojoval)", 10000,  "CORE",             "shop_t_givedgl",   1,  2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
  99.     {"50 HP",       4000,   "CORE",         "shop_t_givehp",    2,  1},
  100.     {"75 AP",       2000,   "CORE",         "shop_t_giveap",    2,  1},
  101.     {"1 HE Granat", 1000,   "CORE",         "shop_givehe",      2,  1},
  102.     {"1 Vakito Granat", 1000,   "CORE",         "shop_giveflash",   2,  1},
  103.     {"1 Fust Granat",   1000,   "CORE",         "shop_givesmoke",   1,  1},
  104.     {"Nincs vakulas",       500,    "CORE",         "shop_givenf",      1,  DO_NOT_CHANGE}
  105. }
  106.  
  107. new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
  108.     {"Defuse Kit",      300,    "CORE",             "shop_ct_givedefkit",       1,  2},
  109.     {"Para (200 Gojoval)",  16000,  "CORE",             "shop_ct_givepara",     1,  1},
  110.     {"50 HP",       4000,   "CORE",             "shop_ct_givehp",       2,  1},
  111.     {"75 AP",       3500,   "CORE",             "shop_ct_giveap",       1,  1},
  112.     {"1 HE Granat",     2000,   "CORE",             "shop_givehe",          1,  1},
  113.     {"1 Vakito Granat", 1000,   "CORE",             "shop_giveflash",       1,  1},
  114.     {"1 Fust Granat",   1000,   "CORE",             "shop_givesmoke",       1,  1},
  115.     {"Nincs vakulas",   4000,   "CORE",             "shop_givenf",          1,  DO_NOT_CHANGE},
  116.     {"Superdeagle",     16000,  "kfm_extra_sdgl.amxx",      "zp_extra_item_selected",   1,  1}
  117. }
  118.  
  119. /* Constants - Weapons */
  120.  
  121. new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
  122.     {"AK47 + Deagle",   "weapon_ak47",      CSW_AK47,       "weapon_deagle",    CSW_DEAGLE},
  123.     {"M4A1 + Deagle",   "weapon_m4a1",      CSW_M4A1,       "weapon_deagle",    CSW_DEAGLE},
  124.     {"Famas + Deagle",  "weapon_famas",     CSW_FAMAS,      "weapon_deagle",    CSW_DEAGLE},
  125.     {"MP5 + Deagle",    "weapon_mp5navy",   CSW_MP5NAVY,        "weapon_deagle",    CSW_DEAGLE},
  126.     {"XM1014 + Deagle",     "weapon_xm1014",    CSW_XM1014,     "weapon_deagle",    CSW_DEAGLE}
  127. }
  128.  
  129.  
  130. /* Constants */
  131.  
  132. const SWAP_PER_INTERVAL = 5
  133. const Float:SWAP_INTERVAL = 0.5
  134.  
  135. const fPainShock = 108
  136.  
  137. new const models[][] =
  138. {
  139.     "models/w_backpack.mdl",
  140.     "models/w_flashbang.mdl",
  141.     "models/w_hegrenade.mdl",
  142.     "models/w_smokegrenade.mdl"
  143. }
  144.  
  145. /* Misc */
  146.  
  147. new g_msgScreenFade
  148.  
  149. /* PreCache */
  150.  
  151. new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
  152.  
  153. // ===============================================================================
  154. //  plugin_precache - Files that will be downloaded
  155. // ===============================================================================
  156.  
  157. public plugin_precache()
  158. {
  159.     precache_model(sz_SuperKnife_V_Model)
  160. }
  161. // ===============================================================================
  162. //  plugin_init - Do not modify this unless you know what you're doing
  163. // ===============================================================================
  164.  
  165. public plugin_init()
  166. {
  167.     register_plugin(PLUGIN, VERSION, AUTHOR)
  168.  
  169.     /* CVars */
  170.  
  171.     register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
  172.     cvar_gm         = register_cvar("kfm_godend",       "1")
  173.     cvar_hpsave     = register_cvar("kfm_savehp",       "1")
  174.  
  175.     /* CVars - Furien */
  176.  
  177.     cvar_t_starthe      = register_cvar("kfm_t_starthe",    "1")
  178.     cvar_t_startflash   = register_cvar("kfm_t_startflash",     "2")
  179.     cvar_t_startsmoke   = register_cvar("kfm_t_startsmoke",     "1")
  180.  
  181.     cvar_t_grav     = register_cvar("kfm_t_grav",       "0.39")
  182.     cvar_t_speed        = register_cvar("kfm_t_speed",      "565")
  183.     cvar_t_fs       = register_cvar("kfm_t_fs",     "1")
  184.  
  185.     cvar_t_psf      = register_cvar("kfm_t_psf",        "1")
  186.  
  187.     /* CVars - CTs */
  188.  
  189.     cvar_ct_starthe     = register_cvar("kfm_ct_starthe",   "0")
  190.     cvar_ct_startflash  = register_cvar("kfm_ct_startflash",    "0")
  191.     cvar_ct_startsmoke  = register_cvar("kfm_ct_startsmoke",    "1")
  192.  
  193.     cvar_ct_grav        = register_cvar("kfm_ct_grav",      "1.0")
  194.     cvar_ct_fs      = register_cvar("kfm_ct_fs",        "0")
  195.  
  196.     cvar_ct_ammo_pri    = register_cvar("kfm_ct_ammo_primary",  "200")
  197.     cvar_ct_ammo_sec    = register_cvar("kfm_ct_ammo_secondary", "150")
  198.  
  199.     /* Commands */
  200.  
  201.     register_clcmd("say /guns",         "cmd_Guns")
  202.     register_clcmd("say_team /guns",    "cmd_Guns")
  203.     register_clcmd("say guns",      "cmd_Guns")
  204.     register_clcmd("say_team guns",     "cmd_Guns")
  205.     register_clcmd("guns",          "cmd_Guns")
  206.  
  207.     register_clcmd("say /gravity",      "cmd_Gravity")
  208.     register_clcmd("say_team /gravity",     "cmd_Gravity")
  209.     register_clcmd("say gravity",       "cmd_Gravity")
  210.     register_clcmd("say_team gravity",  "cmd_Gravity")
  211.     register_clcmd("gravity",       "cmd_Gravity")
  212.  
  213.     register_clcmd("say /shop",         "cmd_Shop")
  214.     register_clcmd("say_team /shop",    "cmd_Shop")
  215.     register_clcmd("say shop",      "cmd_Shop")
  216.     register_clcmd("say_team shop",     "cmd_Shop")
  217.     register_clcmd("shop",          "cmd_Shop")
  218.  
  219.     /* Events */
  220.  
  221.     register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
  222.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  223.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  224.     register_event("DeathMsg", "Event_DeathMsg", "a")
  225.     register_event("WeapPickup", "Event_WeaponPickup", "b")
  226.  
  227.     /* Logevents */
  228.  
  229.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  230.  
  231.     /* Hamsandwich */
  232.  
  233.     RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
  234.     RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
  235.     RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
  236.  
  237.     /* Forwards */
  238.  
  239.     register_forward(FM_Think, "fw_Think")
  240.     register_forward(FM_Touch, "fw_Touch")
  241.  
  242.     /* Misc */
  243.  
  244.     TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))  
  245.     set_pev(TaskEnt, pev_classname, "speedometer_think")
  246.     set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  247.  
  248.     g_msgScreenFade = get_user_msgid("ScreenFade")
  249.     g_iMaxPlayers = get_maxplayers()
  250. }
  251.  
  252. // ===============================================================================
  253. //  Client Connect
  254. // ===============================================================================
  255.  
  256. public client_putinserver(id)
  257. {
  258.     g_bHasAcceptedSettings[id] = false
  259.     g_bHasWeapon[id] = false
  260.     g_bHasSuperKnife[id] = false
  261.     g_bHasNoFlash[id] = false
  262.     g_bWantsLowGrav[id] = true
  263.  
  264.     g_iItemIndex_CT[id][0] = false
  265.     g_iItemIndex_T[id][0] = false
  266.     g_iHP[id] = 100
  267. }
  268.  
  269. // ===============================================================================
  270. //  Client Disconnect
  271. // ===============================================================================
  272.  
  273. public client_disconnect(id)
  274. {
  275.     g_bHasAcceptedSettings[id] = false
  276.     g_bHasWeapon[id] = false
  277.     g_bHasSuperKnife[id] = false
  278.     g_bHasNoFlash[id] = false
  279.     g_bWantsLowGrav[id] = true
  280.  
  281.     g_iItemIndex_CT[id][0] = false
  282.     g_iItemIndex_T[id][0] = false
  283.     g_iHP[id] = 100
  284. }
  285.  
  286. // ===============================================================================
  287. //  say /guns
  288. // ===============================================================================
  289.  
  290. public cmd_Guns(id)
  291. {
  292.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
  293.         func_OpenGunMenu(id)
  294. }
  295.  
  296. // ===============================================================================
  297. //  say /gravity
  298. // ===============================================================================
  299.  
  300. public cmd_Gravity(id)
  301. {
  302.     g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
  303.     client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
  304.  
  305.     if(cs_get_user_team(id) == CS_TEAM_T)
  306.         set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
  307. }
  308.  
  309. // ===============================================================================
  310. //  say /shop
  311. // ===============================================================================
  312.  
  313. public cmd_Shop(id)
  314. {
  315.     if(!is_user_alive(id))
  316.         return PLUGIN_HANDLED
  317.  
  318.     switch(cs_get_user_team(id))
  319.     {
  320.         case CS_TEAM_T  : func_OpenTShop(id)
  321.         case CS_TEAM_CT : func_OpenCTShop(id)
  322.     }
  323.  
  324.     return PLUGIN_HANDLED
  325. }
  326.  
  327. // ===============================================================================
  328. //  func_OpenTShop - Shop for Ts
  329. // ===============================================================================
  330.  
  331. public func_OpenTShop(id)
  332. {
  333.  
  334.     static szMenuTitle[128]
  335.     new szItemTitle[128]
  336.     new iAccess
  337.  
  338.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
  339.  
  340.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  341.  
  342.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  343.     {
  344.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
  345.  
  346.         if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
  347.             iAccess = 0
  348.         else
  349.             iAccess = 1<<31
  350.  
  351.         menu_additem(menu, szItemTitle, _, iAccess)
  352.     }
  353.  
  354.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  355.     menu_display( id, menu, 0 );
  356.     return PLUGIN_HANDLED;
  357. }
  358.  
  359. public func_OpenTShop_handler(id, menu, item)
  360. {
  361.     if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
  362.     {
  363.         menu_destroy(menu)
  364.         return PLUGIN_HANDLED
  365.     }
  366.  
  367.     new szPlugin[64]
  368.  
  369.     if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
  370.         formatex(szPlugin, charsmax(szPlugin), "")
  371.     else
  372.         formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
  373.  
  374.     if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
  375.     {
  376.         callfunc_push_int(id)
  377.         callfunc_end()
  378.  
  379.         Reduce(id, g_mFurienItems[item][ItemCost])        
  380.         g_iItemIndex_T[id][item]++
  381.     }
  382.  
  383.  
  384.     return PLUGIN_HANDLED
  385. }
  386.  
  387. // ===============================================================================
  388. //  Item Handlers for Furien Shop
  389. // ===============================================================================
  390.  
  391. public shop_t_givesk(id)
  392. {
  393.     g_bHasSuperKnife[id] = true
  394.     engclient_cmd(id, "weapon_knife")
  395.     ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
  396. }
  397.  
  398. public shop_t_givedgl(id)
  399. {
  400.     give_item(id, "weapon_deagle")
  401.     cs_set_user_bpammo(id, CSW_DEAGLE, 7)
  402.     engclient_cmd(id, "weapon_deagle")
  403. }
  404.  
  405. public shop_t_givehp(id)
  406. {
  407.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  408. }
  409.  
  410. public shop_t_giveap(id)
  411.     set_user_armor(id, get_user_armor(id) + 75)
  412.  
  413. // ===============================================================================
  414. //  General Item Handlers
  415. // ===============================================================================
  416.  
  417.  
  418. public shop_givehe(id)
  419. {
  420.     if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
  421.     {
  422.         give_item(id, "weapon_hegrenade")
  423.         return PLUGIN_HANDLED
  424.     }
  425.  
  426.     cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
  427.     return PLUGIN_HANDLED
  428. }
  429.  
  430. public shop_giveflash(id)
  431. {
  432.     if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
  433.     {
  434.         give_item(id, "weapon_flashbang")
  435.         return PLUGIN_HANDLED
  436.     }
  437.  
  438.     cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
  439.     return PLUGIN_HANDLED
  440. }
  441.  
  442. public shop_givesmoke(id)
  443. {
  444.     if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
  445.     {
  446.         give_item(id, "weapon_smokegrenade")
  447.         return PLUGIN_HANDLED
  448.     }
  449.  
  450.     cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)  
  451.     return PLUGIN_HANDLED
  452. }
  453.  
  454. public shop_givenf(id)
  455.     g_bHasNoFlash[id] = true
  456.  
  457. // ===============================================================================
  458. //  func_OpenCTShop - Shop for CTs
  459. // ===============================================================================
  460.  
  461. public func_OpenCTShop(id)
  462. {
  463.     if(!is_user_alive(id))
  464.         return PLUGIN_HANDLED
  465.  
  466.     static szMenuTitle[64]
  467.     new szItemTitle[64]
  468.     new iAccess
  469.  
  470.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
  471.  
  472.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  473.  
  474.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  475.     {
  476.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
  477.  
  478.         if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
  479.             iAccess = 0
  480.         else
  481.             iAccess = 1<<31
  482.  
  483.         menu_additem(menu, szItemTitle, _, iAccess)
  484.     }
  485.  
  486.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  487.     menu_display( id, menu, 0 );
  488.     return PLUGIN_HANDLED;
  489. }
  490.  
  491. public func_OpenCTShop_handler(id, menu, item)
  492. {
  493.     if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
  494.     {
  495.         menu_destroy(menu)
  496.         return PLUGIN_HANDLED
  497.     }
  498.  
  499.     new szPlugin[64]
  500.  
  501.     if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
  502.         formatex(szPlugin, charsmax(szPlugin), "")
  503.     else
  504.         formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
  505.  
  506.     if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
  507.     {
  508.         callfunc_push_int(id)
  509.         callfunc_end()
  510.  
  511.         Reduce(id, g_mCTItems[item][ItemCost])
  512.         g_iItemIndex_CT[id][item]++
  513.     }
  514.  
  515.     return PLUGIN_HANDLED
  516. }
  517.  
  518. // ===============================================================================
  519. //  Item Handlers for CT Shop
  520. // ===============================================================================
  521.  
  522. public shop_ct_givedefkit(id)
  523.     cs_set_user_defuse(id, 1)
  524.  
  525. public shop_ct_givepara(id)
  526. {
  527.     give_item(id, "weapon_m249")
  528.     cs_set_user_bpammo(id, CSW_M249, 100)
  529. }
  530.  
  531. public shop_ct_givehp(id)
  532.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  533.  
  534. public shop_ct_giveap(id)
  535.     set_user_armor(id, get_user_armor(id) + 75)
  536.  
  537.  
  538. // ===============================================================================
  539. //  func_OpenGunMenu - Gun Menu for CTs
  540. // ===============================================================================
  541.  
  542. public func_OpenGunMenu(id)
  543. {
  544.     if(!is_user_alive(id))
  545.         return PLUGIN_HANDLED
  546.  
  547.     static szMenuTitle[128]
  548.     new szItemTitle[128]
  549.  
  550.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
  551.  
  552.     new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
  553.  
  554.     for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
  555.     {
  556.         formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
  557.  
  558.         menu_additem(menu, szItemTitle, _, 0)
  559.     }
  560.  
  561.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  562.     menu_display( id, menu, 0 );
  563.     return PLUGIN_HANDLED;
  564. }
  565.  
  566. public func_OpenGunMenu_handler(id, menu, item)
  567. {
  568.     if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
  569.     {
  570.         menu_destroy(menu)
  571.         return PLUGIN_HANDLED
  572.     }
  573.  
  574.     give_item(id, g_mCTWeapons[item][ItemPri])
  575.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
  576.  
  577.     give_item(id, g_mCTWeapons[item][ItemSec])
  578.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
  579.  
  580.     g_bHasWeapon[id] = true
  581.     return PLUGIN_HANDLED
  582. }
  583.  
  584. // ===============================================================================
  585. //  Event - @ CT Win - Credits go to Exolent
  586. // ===============================================================================
  587.  
  588. public Event_CTWin()
  589. {
  590.     static iCount, client;
  591.  
  592.     iCount = 0;
  593.  
  594.     for( client = 0; client <= g_iMaxPlayers; client++ )
  595.     {
  596.         if( is_user_connected( client ) )
  597.         {
  598.             if( iCount >= SWAP_PER_INTERVAL )
  599.             {
  600.                 set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
  601.             }
  602.  
  603.             switch( cs_get_user_team( client ) )
  604.             {
  605.                 case CS_TEAM_T:
  606.                 {
  607.                     cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
  608.  
  609.                     iCount++;
  610.                 }
  611.                 case CS_TEAM_CT:
  612.                 {
  613.                     cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
  614.  
  615.                     iCount++;
  616.                 }
  617.             }
  618.         }
  619.     }
  620.  
  621.     remove_task(TASK_ID_SWAPTEAMS)
  622. }
  623.  
  624. // ===============================================================================
  625. //  Event - CurWeapon
  626. // ===============================================================================
  627.  
  628. public Event_CurWeapon(id)
  629. {
  630.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  631.         set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  632. }
  633.  
  634. // ===============================================================================
  635. //  Event - Flashed
  636. // ===============================================================================
  637.  
  638. public Event_Flashed(id)
  639. {
  640.     if(g_bHasNoFlash[id])
  641.     {
  642.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  643.         write_short(1)
  644.         write_short(1)
  645.         write_short(1)
  646.         write_byte(0)
  647.         write_byte(0)
  648.         write_byte(0)
  649.         write_byte(255)
  650.         message_end()
  651.     }
  652.  
  653. }
  654.  
  655. // ===============================================================================
  656. //  Event - DeathMsg
  657. // ===============================================================================
  658.  
  659. public Event_DeathMsg(id)
  660. {
  661.     new iVictim = read_data(2)
  662.  
  663.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  664.     {
  665.         if(g_mCTItems[i][ItemReset] == 2)
  666.             g_iItemIndex_CT[iVictim][i] = 0
  667.     }
  668.  
  669.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  670.     {
  671.         if(g_mFurienItems[i][ItemReset] == 2)
  672.         {
  673.             g_iItemIndex_T[iVictim][i] = 0
  674.         }
  675.     }
  676.  
  677.     g_bHasSuperKnife[iVictim] = false
  678.     g_bHasNoFlash[iVictim] = false
  679. }
  680.  
  681. // ===============================================================================
  682. //  Event - Weapon Pickup
  683. // ===============================================================================
  684.  
  685. public Event_WeaponPickup(id, weapon)
  686. {
  687.     if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
  688.     {
  689.         return PLUGIN_HANDLED
  690.     }
  691.     return PLUGIN_CONTINUE
  692. }
  693.  
  694. // ===============================================================================
  695. //  LogEvent - Round End
  696. // ===============================================================================
  697.  
  698. public LogEvent_RoundEnd()
  699. {
  700.     new players[32], pnum, tempid
  701.     get_players(players, pnum, "a")
  702.  
  703.     for( new i; i<pnum; i++ )
  704.     {
  705.         tempid = players[i]
  706.  
  707.         if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
  708.             g_iHP[tempid] = get_user_health(tempid)
  709.  
  710.         strip_user_weapons(tempid)
  711.         give_item(tempid, "weapon_knife")
  712.  
  713.         if(get_pcvar_num(cvar_gm))
  714.             set_user_godmode(tempid, 1)
  715.     }
  716. }      
  717.  
  718. // ===============================================================================
  719. //  Hamsandwich - Ham_Spawn
  720. // ===============================================================================
  721.  
  722. public func_HamSpawn(id)
  723. {
  724.     if(is_user_alive(id))
  725.     {
  726.         for( new i = 0; i < sizeof(g_mCTItems); i++ )
  727.         {
  728.             if(g_mCTItems[i][ItemReset] == 1)
  729.             {
  730.                 g_iItemIndex_CT[id][i] = 0
  731.             }
  732.         }
  733.  
  734.         for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  735.         {
  736.             if(g_mFurienItems[i][ItemReset] == 1)
  737.             {
  738.                 g_iItemIndex_T[id][i] = 0
  739.             }
  740.         }
  741.  
  742.         if(get_pcvar_num(cvar_hpsave))
  743.         {
  744.             if(g_iHP[id] < 100)
  745.                 g_iHP[id] = 100
  746.  
  747.             set_user_health(id, g_iHP[id])
  748.             g_iHP[id] = 100
  749.         }
  750.  
  751.         set_user_godmode(id, 0)
  752.         strip_user_weapons(id)
  753.         give_item(id, "weapon_knife")
  754.  
  755.         if(g_bHasAcceptedSettings[id])
  756.         {
  757.             func_ApplyGameplay(id)
  758.         }
  759.         else
  760.         {
  761.             func_AskForPermission(id)
  762.         }
  763.     }
  764. }
  765.  
  766. // ===============================================================================
  767. //  Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
  768. // ===============================================================================
  769.  
  770. public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  771. {
  772.     if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
  773.     {
  774.         SetHamParamFloat(4, damage * 3)
  775.     }
  776.  
  777.     if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
  778.         set_pdata_float(victim, fPainShock, 1.0, 5)
  779. }
  780.  
  781. // ===============================================================================
  782. //  Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
  783. // ===============================================================================
  784.  
  785. public func_HamTookKnife(iKnife)
  786. {
  787.     new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
  788.  
  789.     if(g_bHasSuperKnife[id])
  790.     {
  791.         entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
  792.     }
  793. }
  794.  
  795. // ===============================================================================
  796. //  Forwards - FM_Think - Credits go to ConnorMcLeod
  797. // ===============================================================================
  798.  
  799. public fw_Think(ent)
  800. {
  801.     if(ent == TaskEnt)
  802.     {
  803.         SpeedTask()
  804.         set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
  805.     }
  806. }
  807.  
  808. public SpeedTask()
  809. {
  810.     static i, target
  811.     static Float:velocity[3]
  812.     static Float:speed
  813.  
  814.     for(i = 1; i <= g_iMaxPlayers ; i++)
  815.     {
  816.         if(!is_user_connected(i)) continue
  817.  
  818.         target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  819.         pev(target, pev_velocity, velocity)
  820.  
  821.         speed = vector_length(velocity)
  822.         if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
  823.         {
  824.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
  825.         }
  826.         else if(speed > 5)
  827.         {
  828.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
  829.         }
  830.     }
  831. }
  832.  
  833. // ===============================================================================
  834. //  Forwards - FM_Touch
  835. // ===============================================================================
  836.  
  837. public fw_Touch( ent , id )
  838. {
  839.     if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
  840.         return FMRES_IGNORED;
  841.  
  842.     static szEntModel[32];
  843.     pev(ent , pev_model , szEntModel , 31);
  844.  
  845.     return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
  846. }
  847.  
  848. // ===============================================================================
  849. //  func_ApplyGameplay - Getting Players Team and selecting function
  850. // ===============================================================================
  851.  
  852. public func_ApplyGameplay(id)
  853. {
  854.     switch(cs_get_user_team(id))
  855.     {
  856.         case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
  857.         case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
  858.     }
  859. }
  860.  
  861. // ===============================================================================
  862. //  func_CTEquip - Giving Equipment for CTs
  863. // ===============================================================================
  864.  
  865. public func_CTEquip(id)
  866. {
  867.     if(get_pcvar_num(cvar_ct_starthe) > 0)
  868.     {
  869.         give_item(id, "weapon_hegrenade")
  870.         if(get_pcvar_num(cvar_ct_starthe) > 1)
  871.         {
  872.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
  873.         }
  874.     }
  875.  
  876.     if(get_pcvar_num(cvar_ct_startflash) > 0)
  877.     {
  878.         give_item(id, "weapon_flashbang")
  879.         if(get_pcvar_num(cvar_ct_startflash) > 1)
  880.         {
  881.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
  882.         }
  883.     }
  884.  
  885.     if(get_pcvar_num(cvar_ct_startsmoke) > 0)
  886.     {
  887.         give_item(id, "weapon_smokegrenade")
  888.         if(get_pcvar_num(cvar_ct_startsmoke) > 1)
  889.         {
  890.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
  891.         }
  892.     }
  893.  
  894.     set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
  895.     set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
  896.     ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
  897.     func_OpenGunMenu(id)
  898. }
  899.  
  900. // ===============================================================================
  901. //  func_TEquip - Giving Equipment for Ts
  902. // ===============================================================================
  903.  
  904. public func_TEquip(id)
  905. {
  906.     if(get_pcvar_num(cvar_t_starthe) > 0)
  907.     {
  908.         give_item(id, "weapon_hegrenade")
  909.         if(get_pcvar_num(cvar_t_starthe) > 1)
  910.         {
  911.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
  912.         }
  913.     }
  914.  
  915.     if(get_pcvar_num(cvar_t_startflash) > 0)
  916.     {
  917.         give_item(id, "weapon_flashbang")
  918.         if(get_pcvar_num(cvar_t_startflash) > 1)
  919.         {
  920.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
  921.         }
  922.     }
  923.  
  924.     if(get_pcvar_num(cvar_t_startsmoke) > 0)
  925.     {
  926.         give_item(id, "weapon_smokegrenade")
  927.         if(get_pcvar_num(cvar_t_startsmoke) > 1)
  928.         {
  929.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
  930.         }
  931.     }
  932.  
  933.     if(g_bWantsLowGrav[id])
  934.         set_user_gravity(id, get_pcvar_float(cvar_t_grav))
  935.  
  936.     set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
  937.     set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  938. }
  939.  
  940. // ===============================================================================
  941. //  func_AskForPermission - Asking player to set cl_ values.
  942. // ===============================================================================
  943.  
  944. public func_AskForPermission(id)
  945. {
  946.     new szMenuTitle[128]
  947.     formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
  948.     new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
  949.  
  950.     menu_additem(menu, "\wIgen","1",0);
  951.     menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
  952.  
  953.     menu_display(id, menu, 0);
  954.     return PLUGIN_HANDLED
  955. }
  956.  
  957. public func_AskForPermission_handler(id, menu, item)
  958. {
  959.     new data[6], szName[64];
  960.     new access, callback;
  961.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  962.     new key = str_to_num(data);
  963.  
  964.     switch(key)
  965.     {
  966.         case 1:
  967.         {
  968.             g_bHasAcceptedSettings[id] = true
  969.  
  970.             client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
  971.             client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
  972.             client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
  973.  
  974.             if(is_user_alive(id))
  975.                 func_ApplyGameplay(id)
  976.         }
  977.         case 2:
  978.         {
  979.             g_bHasAcceptedSettings[id] = false
  980.         }
  981.     }
  982. }
  983.  
  984. // ===============================================================================
  985. //  Stocks
  986. // ===============================================================================
  987.  
  988. stock Reduce(id, amount)
  989.     cs_set_user_money(id, cs_get_user_money(id) - amount)

Ők köszönték meg SidLuke nek ezt a hozzászólást (összesen 3): duvilax (2018.03.24. 12:08) • Ameri (2018.04.13. 14:59) • Fulco (2018.07.02. 12:19)
  Népszerűség: 6.82%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.03.23. 18:15 
Offline
Senior Tag
Avatar

Csatlakozott: 2018.02.01. 16:27
Hozzászólások: 225
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 18 alkalommal
SidLuke írta:
Szia, tessék.
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <engine>
  8.  
  9. #define PLUGIN "Furien Mod"
  10. #define VERSION "64.2.6b"
  11. #define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27
  12.  
  13. // ==============================================================================
  14. //  Variables
  15. // ===============================================================================
  16.  
  17. /* Defines */
  18.  
  19. // Sets maximum of items for Furien Shop
  20. #define FURIEN_SHOP_MAX     8
  21.  
  22. // Sets maximum of items for CT Shop
  23. #define CT_SHOP_MAX         9
  24.  
  25. // Sets maximum of items for CT Gun Meun
  26. #define CT_WEAPON_MAX       5
  27.  
  28. // Delay after spawn to give stuff
  29. #define EQUIP_DELAY         0.1
  30.  
  31. // Maximum Health
  32. #define MAX_HP          200
  33.  
  34. #define TASK_ID_SWAPTEAMS 2000
  35. #define XO_WEAPON 4
  36. #define m_pPlayer 41
  37. #define XO_PLAYER   5
  38. #define m_pActiveItem   373
  39. #define DO_NOT_CHANGE   2
  40.  
  41. /* Enums */
  42.  
  43. enum _:ShopItems
  44. {
  45.     ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
  46. }
  47.  
  48. enum _:GunItems
  49. {
  50.     ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
  51. }
  52.  
  53. /* Entitys */
  54.  
  55. new TaskEnt
  56.  
  57. /* Hamsandwich */
  58.  
  59. new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
  60.  
  61. /* Booleans */
  62.  
  63. new bool:g_bHasAcceptedSettings[33]
  64. new bool:g_bHasWeapon[33]
  65. new bool:g_bWantsLowGrav[33]
  66. new bool:g_bHasSuperKnife[33]
  67. new bool:g_bHasNoFlash[33]
  68.  
  69. /* Integer */
  70.  
  71. new g_iMaxPlayers
  72.  
  73. new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
  74. new g_iItemIndex_CT[33][CT_SHOP_MAX]
  75.  
  76. new g_iHP[33]
  77.  
  78. /* CVars */
  79.  
  80. new cvar_gm, cvar_hpsave
  81.  
  82. /* CVars - Furien */
  83.  
  84. new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
  85. new cvar_t_grav, cvar_t_speed, cvar_t_fs
  86. new cvar_t_psf
  87.  
  88. /* CVars - CTs */
  89.  
  90. new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
  91. new cvar_ct_grav, cvar_ct_fs
  92. new cvar_ct_ammo_pri, cvar_ct_ammo_sec
  93.  
  94. /* Constants - Shop */
  95.  
  96. new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
  97.     {"Superknife",      16000,  "CORE",         "shop_t_givesk",    1,  DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
  98.     {"Deagle (14 Gojoval)", 10000,  "CORE",             "shop_t_givedgl",   1,  2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
  99.     {"50 HP",       4000,   "CORE",         "shop_t_givehp",    2,  1},
  100.     {"75 AP",       2000,   "CORE",         "shop_t_giveap",    2,  1},
  101.     {"1 HE Granat", 1000,   "CORE",         "shop_givehe",      2,  1},
  102.     {"1 Vakito Granat", 1000,   "CORE",         "shop_giveflash",   2,  1},
  103.     {"1 Fust Granat",   1000,   "CORE",         "shop_givesmoke",   1,  1},
  104.     {"Nincs vakulas",       500,    "CORE",         "shop_givenf",      1,  DO_NOT_CHANGE}
  105. }
  106.  
  107. new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
  108.     {"Defuse Kit",      300,    "CORE",             "shop_ct_givedefkit",       1,  2},
  109.     {"Para (200 Gojoval)",  16000,  "CORE",             "shop_ct_givepara",     1,  1},
  110.     {"50 HP",       4000,   "CORE",             "shop_ct_givehp",       2,  1},
  111.     {"75 AP",       3500,   "CORE",             "shop_ct_giveap",       1,  1},
  112.     {"1 HE Granat",     2000,   "CORE",             "shop_givehe",          1,  1},
  113.     {"1 Vakito Granat", 1000,   "CORE",             "shop_giveflash",       1,  1},
  114.     {"1 Fust Granat",   1000,   "CORE",             "shop_givesmoke",       1,  1},
  115.     {"Nincs vakulas",   4000,   "CORE",             "shop_givenf",          1,  DO_NOT_CHANGE},
  116.     {"Superdeagle",     16000,  "kfm_extra_sdgl.amxx",      "zp_extra_item_selected",   1,  1}
  117. }
  118.  
  119. /* Constants - Weapons */
  120.  
  121. new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
  122.     {"AK47 + Deagle",   "weapon_ak47",      CSW_AK47,       "weapon_deagle",    CSW_DEAGLE},
  123.     {"M4A1 + Deagle",   "weapon_m4a1",      CSW_M4A1,       "weapon_deagle",    CSW_DEAGLE},
  124.     {"Famas + Deagle",  "weapon_famas",     CSW_FAMAS,      "weapon_deagle",    CSW_DEAGLE},
  125.     {"MP5 + Deagle",    "weapon_mp5navy",   CSW_MP5NAVY,        "weapon_deagle",    CSW_DEAGLE},
  126.     {"XM1014 + Deagle",     "weapon_xm1014",    CSW_XM1014,     "weapon_deagle",    CSW_DEAGLE}
  127. }
  128.  
  129.  
  130. /* Constants */
  131.  
  132. const SWAP_PER_INTERVAL = 5
  133. const Float:SWAP_INTERVAL = 0.5
  134.  
  135. const fPainShock = 108
  136.  
  137. new const models[][] =
  138. {
  139.     "models/w_backpack.mdl",
  140.     "models/w_flashbang.mdl",
  141.     "models/w_hegrenade.mdl",
  142.     "models/w_smokegrenade.mdl"
  143. }
  144.  
  145. /* Misc */
  146.  
  147. new g_msgScreenFade
  148.  
  149. /* PreCache */
  150.  
  151. new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
  152.  
  153. // ===============================================================================
  154. //  plugin_precache - Files that will be downloaded
  155. // ===============================================================================
  156.  
  157. public plugin_precache()
  158. {
  159.     precache_model(sz_SuperKnife_V_Model)
  160. }
  161. // ===============================================================================
  162. //  plugin_init - Do not modify this unless you know what you're doing
  163. // ===============================================================================
  164.  
  165. public plugin_init()
  166. {
  167.     register_plugin(PLUGIN, VERSION, AUTHOR)
  168.  
  169.     /* CVars */
  170.  
  171.     register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
  172.     cvar_gm         = register_cvar("kfm_godend",       "1")
  173.     cvar_hpsave     = register_cvar("kfm_savehp",       "1")
  174.  
  175.     /* CVars - Furien */
  176.  
  177.     cvar_t_starthe      = register_cvar("kfm_t_starthe",    "1")
  178.     cvar_t_startflash   = register_cvar("kfm_t_startflash",     "2")
  179.     cvar_t_startsmoke   = register_cvar("kfm_t_startsmoke",     "1")
  180.  
  181.     cvar_t_grav     = register_cvar("kfm_t_grav",       "0.39")
  182.     cvar_t_speed        = register_cvar("kfm_t_speed",      "565")
  183.     cvar_t_fs       = register_cvar("kfm_t_fs",     "1")
  184.  
  185.     cvar_t_psf      = register_cvar("kfm_t_psf",        "1")
  186.  
  187.     /* CVars - CTs */
  188.  
  189.     cvar_ct_starthe     = register_cvar("kfm_ct_starthe",   "0")
  190.     cvar_ct_startflash  = register_cvar("kfm_ct_startflash",    "0")
  191.     cvar_ct_startsmoke  = register_cvar("kfm_ct_startsmoke",    "1")
  192.  
  193.     cvar_ct_grav        = register_cvar("kfm_ct_grav",      "1.0")
  194.     cvar_ct_fs      = register_cvar("kfm_ct_fs",        "0")
  195.  
  196.     cvar_ct_ammo_pri    = register_cvar("kfm_ct_ammo_primary",  "200")
  197.     cvar_ct_ammo_sec    = register_cvar("kfm_ct_ammo_secondary", "150")
  198.  
  199.     /* Commands */
  200.  
  201.     register_clcmd("say /guns",         "cmd_Guns")
  202.     register_clcmd("say_team /guns",    "cmd_Guns")
  203.     register_clcmd("say guns",      "cmd_Guns")
  204.     register_clcmd("say_team guns",     "cmd_Guns")
  205.     register_clcmd("guns",          "cmd_Guns")
  206.  
  207.     register_clcmd("say /gravity",      "cmd_Gravity")
  208.     register_clcmd("say_team /gravity",     "cmd_Gravity")
  209.     register_clcmd("say gravity",       "cmd_Gravity")
  210.     register_clcmd("say_team gravity",  "cmd_Gravity")
  211.     register_clcmd("gravity",       "cmd_Gravity")
  212.  
  213.     register_clcmd("say /shop",         "cmd_Shop")
  214.     register_clcmd("say_team /shop",    "cmd_Shop")
  215.     register_clcmd("say shop",      "cmd_Shop")
  216.     register_clcmd("say_team shop",     "cmd_Shop")
  217.     register_clcmd("shop",          "cmd_Shop")
  218.  
  219.     /* Events */
  220.  
  221.     register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
  222.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  223.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  224.     register_event("DeathMsg", "Event_DeathMsg", "a")
  225.     register_event("WeapPickup", "Event_WeaponPickup", "b")
  226.  
  227.     /* Logevents */
  228.  
  229.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  230.  
  231.     /* Hamsandwich */
  232.  
  233.     RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
  234.     RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
  235.     RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
  236.  
  237.     /* Forwards */
  238.  
  239.     register_forward(FM_Think, "fw_Think")
  240.     register_forward(FM_Touch, "fw_Touch")
  241.  
  242.     /* Misc */
  243.  
  244.     TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))  
  245.     set_pev(TaskEnt, pev_classname, "speedometer_think")
  246.     set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  247.  
  248.     g_msgScreenFade = get_user_msgid("ScreenFade")
  249.     g_iMaxPlayers = get_maxplayers()
  250. }
  251.  
  252. // ===============================================================================
  253. //  Client Connect
  254. // ===============================================================================
  255.  
  256. public client_putinserver(id)
  257. {
  258.     g_bHasAcceptedSettings[id] = false
  259.     g_bHasWeapon[id] = false
  260.     g_bHasSuperKnife[id] = false
  261.     g_bHasNoFlash[id] = false
  262.     g_bWantsLowGrav[id] = true
  263.  
  264.     g_iItemIndex_CT[id][0] = false
  265.     g_iItemIndex_T[id][0] = false
  266.     g_iHP[id] = 100
  267. }
  268.  
  269. // ===============================================================================
  270. //  Client Disconnect
  271. // ===============================================================================
  272.  
  273. public client_disconnect(id)
  274. {
  275.     g_bHasAcceptedSettings[id] = false
  276.     g_bHasWeapon[id] = false
  277.     g_bHasSuperKnife[id] = false
  278.     g_bHasNoFlash[id] = false
  279.     g_bWantsLowGrav[id] = true
  280.  
  281.     g_iItemIndex_CT[id][0] = false
  282.     g_iItemIndex_T[id][0] = false
  283.     g_iHP[id] = 100
  284. }
  285.  
  286. // ===============================================================================
  287. //  say /guns
  288. // ===============================================================================
  289.  
  290. public cmd_Guns(id)
  291. {
  292.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
  293.         func_OpenGunMenu(id)
  294. }
  295.  
  296. // ===============================================================================
  297. //  say /gravity
  298. // ===============================================================================
  299.  
  300. public cmd_Gravity(id)
  301. {
  302.     g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
  303.     client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
  304.  
  305.     if(cs_get_user_team(id) == CS_TEAM_T)
  306.         set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
  307. }
  308.  
  309. // ===============================================================================
  310. //  say /shop
  311. // ===============================================================================
  312.  
  313. public cmd_Shop(id)
  314. {
  315.     if(!is_user_alive(id))
  316.         return PLUGIN_HANDLED
  317.  
  318.     switch(cs_get_user_team(id))
  319.     {
  320.         case CS_TEAM_T  : func_OpenTShop(id)
  321.         case CS_TEAM_CT : func_OpenCTShop(id)
  322.     }
  323.  
  324.     return PLUGIN_HANDLED
  325. }
  326.  
  327. // ===============================================================================
  328. //  func_OpenTShop - Shop for Ts
  329. // ===============================================================================
  330.  
  331. public func_OpenTShop(id)
  332. {
  333.  
  334.     static szMenuTitle[128]
  335.     new szItemTitle[128]
  336.     new iAccess
  337.  
  338.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
  339.  
  340.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  341.  
  342.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  343.     {
  344.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
  345.  
  346.         if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
  347.             iAccess = 0
  348.         else
  349.             iAccess = 1<<31
  350.  
  351.         menu_additem(menu, szItemTitle, _, iAccess)
  352.     }
  353.  
  354.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  355.     menu_display( id, menu, 0 );
  356.     return PLUGIN_HANDLED;
  357. }
  358.  
  359. public func_OpenTShop_handler(id, menu, item)
  360. {
  361.     if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
  362.     {
  363.         menu_destroy(menu)
  364.         return PLUGIN_HANDLED
  365.     }
  366.  
  367.     new szPlugin[64]
  368.  
  369.     if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
  370.         formatex(szPlugin, charsmax(szPlugin), "")
  371.     else
  372.         formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
  373.  
  374.     if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
  375.     {
  376.         callfunc_push_int(id)
  377.         callfunc_end()
  378.  
  379.         Reduce(id, g_mFurienItems[item][ItemCost])        
  380.         g_iItemIndex_T[id][item]++
  381.     }
  382.  
  383.  
  384.     return PLUGIN_HANDLED
  385. }
  386.  
  387. // ===============================================================================
  388. //  Item Handlers for Furien Shop
  389. // ===============================================================================
  390.  
  391. public shop_t_givesk(id)
  392. {
  393.     g_bHasSuperKnife[id] = true
  394.     engclient_cmd(id, "weapon_knife")
  395.     ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
  396. }
  397.  
  398. public shop_t_givedgl(id)
  399. {
  400.     give_item(id, "weapon_deagle")
  401.     cs_set_user_bpammo(id, CSW_DEAGLE, 7)
  402.     engclient_cmd(id, "weapon_deagle")
  403. }
  404.  
  405. public shop_t_givehp(id)
  406. {
  407.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  408. }
  409.  
  410. public shop_t_giveap(id)
  411.     set_user_armor(id, get_user_armor(id) + 75)
  412.  
  413. // ===============================================================================
  414. //  General Item Handlers
  415. // ===============================================================================
  416.  
  417.  
  418. public shop_givehe(id)
  419. {
  420.     if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
  421.     {
  422.         give_item(id, "weapon_hegrenade")
  423.         return PLUGIN_HANDLED
  424.     }
  425.  
  426.     cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
  427.     return PLUGIN_HANDLED
  428. }
  429.  
  430. public shop_giveflash(id)
  431. {
  432.     if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
  433.     {
  434.         give_item(id, "weapon_flashbang")
  435.         return PLUGIN_HANDLED
  436.     }
  437.  
  438.     cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
  439.     return PLUGIN_HANDLED
  440. }
  441.  
  442. public shop_givesmoke(id)
  443. {
  444.     if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
  445.     {
  446.         give_item(id, "weapon_smokegrenade")
  447.         return PLUGIN_HANDLED
  448.     }
  449.  
  450.     cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)  
  451.     return PLUGIN_HANDLED
  452. }
  453.  
  454. public shop_givenf(id)
  455.     g_bHasNoFlash[id] = true
  456.  
  457. // ===============================================================================
  458. //  func_OpenCTShop - Shop for CTs
  459. // ===============================================================================
  460.  
  461. public func_OpenCTShop(id)
  462. {
  463.     if(!is_user_alive(id))
  464.         return PLUGIN_HANDLED
  465.  
  466.     static szMenuTitle[64]
  467.     new szItemTitle[64]
  468.     new iAccess
  469.  
  470.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
  471.  
  472.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  473.  
  474.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  475.     {
  476.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
  477.  
  478.         if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
  479.             iAccess = 0
  480.         else
  481.             iAccess = 1<<31
  482.  
  483.         menu_additem(menu, szItemTitle, _, iAccess)
  484.     }
  485.  
  486.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  487.     menu_display( id, menu, 0 );
  488.     return PLUGIN_HANDLED;
  489. }
  490.  
  491. public func_OpenCTShop_handler(id, menu, item)
  492. {
  493.     if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
  494.     {
  495.         menu_destroy(menu)
  496.         return PLUGIN_HANDLED
  497.     }
  498.  
  499.     new szPlugin[64]
  500.  
  501.     if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
  502.         formatex(szPlugin, charsmax(szPlugin), "")
  503.     else
  504.         formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
  505.  
  506.     if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
  507.     {
  508.         callfunc_push_int(id)
  509.         callfunc_end()
  510.  
  511.         Reduce(id, g_mCTItems[item][ItemCost])
  512.         g_iItemIndex_CT[id][item]++
  513.     }
  514.  
  515.     return PLUGIN_HANDLED
  516. }
  517.  
  518. // ===============================================================================
  519. //  Item Handlers for CT Shop
  520. // ===============================================================================
  521.  
  522. public shop_ct_givedefkit(id)
  523.     cs_set_user_defuse(id, 1)
  524.  
  525. public shop_ct_givepara(id)
  526. {
  527.     give_item(id, "weapon_m249")
  528.     cs_set_user_bpammo(id, CSW_M249, 100)
  529. }
  530.  
  531. public shop_ct_givehp(id)
  532.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  533.  
  534. public shop_ct_giveap(id)
  535.     set_user_armor(id, get_user_armor(id) + 75)
  536.  
  537.  
  538. // ===============================================================================
  539. //  func_OpenGunMenu - Gun Menu for CTs
  540. // ===============================================================================
  541.  
  542. public func_OpenGunMenu(id)
  543. {
  544.     if(!is_user_alive(id))
  545.         return PLUGIN_HANDLED
  546.  
  547.     static szMenuTitle[128]
  548.     new szItemTitle[128]
  549.  
  550.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
  551.  
  552.     new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
  553.  
  554.     for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
  555.     {
  556.         formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
  557.  
  558.         menu_additem(menu, szItemTitle, _, 0)
  559.     }
  560.  
  561.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  562.     menu_display( id, menu, 0 );
  563.     return PLUGIN_HANDLED;
  564. }
  565.  
  566. public func_OpenGunMenu_handler(id, menu, item)
  567. {
  568.     if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
  569.     {
  570.         menu_destroy(menu)
  571.         return PLUGIN_HANDLED
  572.     }
  573.  
  574.     give_item(id, g_mCTWeapons[item][ItemPri])
  575.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
  576.  
  577.     give_item(id, g_mCTWeapons[item][ItemSec])
  578.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
  579.  
  580.     g_bHasWeapon[id] = true
  581.     return PLUGIN_HANDLED
  582. }
  583.  
  584. // ===============================================================================
  585. //  Event - @ CT Win - Credits go to Exolent
  586. // ===============================================================================
  587.  
  588. public Event_CTWin()
  589. {
  590.     static iCount, client;
  591.  
  592.     iCount = 0;
  593.  
  594.     for( client = 0; client <= g_iMaxPlayers; client++ )
  595.     {
  596.         if( is_user_connected( client ) )
  597.         {
  598.             if( iCount >= SWAP_PER_INTERVAL )
  599.             {
  600.                 set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
  601.             }
  602.  
  603.             switch( cs_get_user_team( client ) )
  604.             {
  605.                 case CS_TEAM_T:
  606.                 {
  607.                     cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
  608.  
  609.                     iCount++;
  610.                 }
  611.                 case CS_TEAM_CT:
  612.                 {
  613.                     cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
  614.  
  615.                     iCount++;
  616.                 }
  617.             }
  618.         }
  619.     }
  620.  
  621.     remove_task(TASK_ID_SWAPTEAMS)
  622. }
  623.  
  624. // ===============================================================================
  625. //  Event - CurWeapon
  626. // ===============================================================================
  627.  
  628. public Event_CurWeapon(id)
  629. {
  630.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  631.         set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  632. }
  633.  
  634. // ===============================================================================
  635. //  Event - Flashed
  636. // ===============================================================================
  637.  
  638. public Event_Flashed(id)
  639. {
  640.     if(g_bHasNoFlash[id])
  641.     {
  642.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  643.         write_short(1)
  644.         write_short(1)
  645.         write_short(1)
  646.         write_byte(0)
  647.         write_byte(0)
  648.         write_byte(0)
  649.         write_byte(255)
  650.         message_end()
  651.     }
  652.  
  653. }
  654.  
  655. // ===============================================================================
  656. //  Event - DeathMsg
  657. // ===============================================================================
  658.  
  659. public Event_DeathMsg(id)
  660. {
  661.     new iVictim = read_data(2)
  662.  
  663.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  664.     {
  665.         if(g_mCTItems[i][ItemReset] == 2)
  666.             g_iItemIndex_CT[iVictim][i] = 0
  667.     }
  668.  
  669.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  670.     {
  671.         if(g_mFurienItems[i][ItemReset] == 2)
  672.         {
  673.             g_iItemIndex_T[iVictim][i] = 0
  674.         }
  675.     }
  676.  
  677.     g_bHasSuperKnife[iVictim] = false
  678.     g_bHasNoFlash[iVictim] = false
  679. }
  680.  
  681. // ===============================================================================
  682. //  Event - Weapon Pickup
  683. // ===============================================================================
  684.  
  685. public Event_WeaponPickup(id, weapon)
  686. {
  687.     if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
  688.     {
  689.         return PLUGIN_HANDLED
  690.     }
  691.     return PLUGIN_CONTINUE
  692. }
  693.  
  694. // ===============================================================================
  695. //  LogEvent - Round End
  696. // ===============================================================================
  697.  
  698. public LogEvent_RoundEnd()
  699. {
  700.     new players[32], pnum, tempid
  701.     get_players(players, pnum, "a")
  702.  
  703.     for( new i; i<pnum; i++ )
  704.     {
  705.         tempid = players[i]
  706.  
  707.         if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
  708.             g_iHP[tempid] = get_user_health(tempid)
  709.  
  710.         strip_user_weapons(tempid)
  711.         give_item(tempid, "weapon_knife")
  712.  
  713.         if(get_pcvar_num(cvar_gm))
  714.             set_user_godmode(tempid, 1)
  715.     }
  716. }      
  717.  
  718. // ===============================================================================
  719. //  Hamsandwich - Ham_Spawn
  720. // ===============================================================================
  721.  
  722. public func_HamSpawn(id)
  723. {
  724.     if(is_user_alive(id))
  725.     {
  726.         for( new i = 0; i < sizeof(g_mCTItems); i++ )
  727.         {
  728.             if(g_mCTItems[i][ItemReset] == 1)
  729.             {
  730.                 g_iItemIndex_CT[id][i] = 0
  731.             }
  732.         }
  733.  
  734.         for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  735.         {
  736.             if(g_mFurienItems[i][ItemReset] == 1)
  737.             {
  738.                 g_iItemIndex_T[id][i] = 0
  739.             }
  740.         }
  741.  
  742.         if(get_pcvar_num(cvar_hpsave))
  743.         {
  744.             if(g_iHP[id] < 100)
  745.                 g_iHP[id] = 100
  746.  
  747.             set_user_health(id, g_iHP[id])
  748.             g_iHP[id] = 100
  749.         }
  750.  
  751.         set_user_godmode(id, 0)
  752.         strip_user_weapons(id)
  753.         give_item(id, "weapon_knife")
  754.  
  755.         if(g_bHasAcceptedSettings[id])
  756.         {
  757.             func_ApplyGameplay(id)
  758.         }
  759.         else
  760.         {
  761.             func_AskForPermission(id)
  762.         }
  763.     }
  764. }
  765.  
  766. // ===============================================================================
  767. //  Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
  768. // ===============================================================================
  769.  
  770. public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  771. {
  772.     if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
  773.     {
  774.         SetHamParamFloat(4, damage * 3)
  775.     }
  776.  
  777.     if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
  778.         set_pdata_float(victim, fPainShock, 1.0, 5)
  779. }
  780.  
  781. // ===============================================================================
  782. //  Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
  783. // ===============================================================================
  784.  
  785. public func_HamTookKnife(iKnife)
  786. {
  787.     new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
  788.  
  789.     if(g_bHasSuperKnife[id])
  790.     {
  791.         entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
  792.     }
  793. }
  794.  
  795. // ===============================================================================
  796. //  Forwards - FM_Think - Credits go to ConnorMcLeod
  797. // ===============================================================================
  798.  
  799. public fw_Think(ent)
  800. {
  801.     if(ent == TaskEnt)
  802.     {
  803.         SpeedTask()
  804.         set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
  805.     }
  806. }
  807.  
  808. public SpeedTask()
  809. {
  810.     static i, target
  811.     static Float:velocity[3]
  812.     static Float:speed
  813.  
  814.     for(i = 1; i <= g_iMaxPlayers ; i++)
  815.     {
  816.         if(!is_user_connected(i)) continue
  817.  
  818.         target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  819.         pev(target, pev_velocity, velocity)
  820.  
  821.         speed = vector_length(velocity)
  822.         if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
  823.         {
  824.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
  825.         }
  826.         else if(speed > 5)
  827.         {
  828.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
  829.         }
  830.     }
  831. }
  832.  
  833. // ===============================================================================
  834. //  Forwards - FM_Touch
  835. // ===============================================================================
  836.  
  837. public fw_Touch( ent , id )
  838. {
  839.     if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
  840.         return FMRES_IGNORED;
  841.  
  842.     static szEntModel[32];
  843.     pev(ent , pev_model , szEntModel , 31);
  844.  
  845.     return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
  846. }
  847.  
  848. // ===============================================================================
  849. //  func_ApplyGameplay - Getting Players Team and selecting function
  850. // ===============================================================================
  851.  
  852. public func_ApplyGameplay(id)
  853. {
  854.     switch(cs_get_user_team(id))
  855.     {
  856.         case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
  857.         case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
  858.     }
  859. }
  860.  
  861. // ===============================================================================
  862. //  func_CTEquip - Giving Equipment for CTs
  863. // ===============================================================================
  864.  
  865. public func_CTEquip(id)
  866. {
  867.     if(get_pcvar_num(cvar_ct_starthe) > 0)
  868.     {
  869.         give_item(id, "weapon_hegrenade")
  870.         if(get_pcvar_num(cvar_ct_starthe) > 1)
  871.         {
  872.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
  873.         }
  874.     }
  875.  
  876.     if(get_pcvar_num(cvar_ct_startflash) > 0)
  877.     {
  878.         give_item(id, "weapon_flashbang")
  879.         if(get_pcvar_num(cvar_ct_startflash) > 1)
  880.         {
  881.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
  882.         }
  883.     }
  884.  
  885.     if(get_pcvar_num(cvar_ct_startsmoke) > 0)
  886.     {
  887.         give_item(id, "weapon_smokegrenade")
  888.         if(get_pcvar_num(cvar_ct_startsmoke) > 1)
  889.         {
  890.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
  891.         }
  892.     }
  893.  
  894.     set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
  895.     set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
  896.     ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
  897.     func_OpenGunMenu(id)
  898. }
  899.  
  900. // ===============================================================================
  901. //  func_TEquip - Giving Equipment for Ts
  902. // ===============================================================================
  903.  
  904. public func_TEquip(id)
  905. {
  906.     if(get_pcvar_num(cvar_t_starthe) > 0)
  907.     {
  908.         give_item(id, "weapon_hegrenade")
  909.         if(get_pcvar_num(cvar_t_starthe) > 1)
  910.         {
  911.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
  912.         }
  913.     }
  914.  
  915.     if(get_pcvar_num(cvar_t_startflash) > 0)
  916.     {
  917.         give_item(id, "weapon_flashbang")
  918.         if(get_pcvar_num(cvar_t_startflash) > 1)
  919.         {
  920.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
  921.         }
  922.     }
  923.  
  924.     if(get_pcvar_num(cvar_t_startsmoke) > 0)
  925.     {
  926.         give_item(id, "weapon_smokegrenade")
  927.         if(get_pcvar_num(cvar_t_startsmoke) > 1)
  928.         {
  929.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
  930.         }
  931.     }
  932.  
  933.     if(g_bWantsLowGrav[id])
  934.         set_user_gravity(id, get_pcvar_float(cvar_t_grav))
  935.  
  936.     set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
  937.     set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  938. }
  939.  
  940. // ===============================================================================
  941. //  func_AskForPermission - Asking player to set cl_ values.
  942. // ===============================================================================
  943.  
  944. public func_AskForPermission(id)
  945. {
  946.     new szMenuTitle[128]
  947.     formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
  948.     new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
  949.  
  950.     menu_additem(menu, "\wIgen","1",0);
  951.     menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
  952.  
  953.     menu_display(id, menu, 0);
  954.     return PLUGIN_HANDLED
  955. }
  956.  
  957. public func_AskForPermission_handler(id, menu, item)
  958. {
  959.     new data[6], szName[64];
  960.     new access, callback;
  961.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  962.     new key = str_to_num(data);
  963.  
  964.     switch(key)
  965.     {
  966.         case 1:
  967.         {
  968.             g_bHasAcceptedSettings[id] = true
  969.  
  970.             client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
  971.             client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
  972.             client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
  973.  
  974.             if(is_user_alive(id))
  975.                 func_ApplyGameplay(id)
  976.         }
  977.         case 2:
  978.         {
  979.             g_bHasAcceptedSettings[id] = false
  980.         }
  981.     }
  982. }
  983.  
  984. // ===============================================================================
  985. //  Stocks
  986. // ===============================================================================
  987.  
  988. stock Reduce(id, amount)
  989.     cs_set_user_money(id, cs_get_user_money(id) - amount)


Köszöntem, skineket is kapok mellé ?.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.03.23. 18:22 
Offline
Beavatott
Avatar

Csatlakozott: 2018.01.05. 10:30
Hozzászólások: 66
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 19 alkalommal
"models/w_backpack.mdl",

rwT furien szerveren található.

Többit az benne van alapból a ftp models mappájában.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.03.24. 12:08 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
SidLuke írta:
Szia, tessék.
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <engine>
  8.  
  9. #define PLUGIN "Furien Mod"
  10. #define VERSION "64.2.6b"
  11. #define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27
  12.  
  13. // ===============================================================================
  14. //  Variables
  15. // ===============================================================================
  16.  
  17. /* Defines */
  18.  
  19. // Sets maximum of items for Furien Shop
  20. #define FURIEN_SHOP_MAX     8
  21.  
  22. // Sets maximum of items for CT Shop
  23. #define CT_SHOP_MAX         9
  24.  
  25. // Sets maximum of items for CT Gun Meun
  26. #define CT_WEAPON_MAX       5
  27.  
  28. // Delay after spawn to give stuff
  29. #define EQUIP_DELAY         0.1
  30.  
  31. // Maximum Health
  32. #define MAX_HP          200
  33.  
  34. #define TASK_ID_SWAPTEAMS 2000
  35. #define XO_WEAPON 4
  36. #define m_pPlayer 41
  37. #define XO_PLAYER   5
  38. #define m_pActiveItem   373
  39. #define DO_NOT_CHANGE   2
  40.  
  41. /* Enums */
  42.  
  43. enum _:ShopItems
  44. {
  45.     ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
  46. }
  47.  
  48. enum _:GunItems
  49. {
  50.     ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
  51. }
  52.  
  53. /* Entitys */
  54.  
  55. new TaskEnt
  56.  
  57. /* Hamsandwich */
  58.  
  59. new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
  60.  
  61. /* Booleans */
  62.  
  63. new bool:g_bHasAcceptedSettings[33]
  64. new bool:g_bHasWeapon[33]
  65. new bool:g_bWantsLowGrav[33]
  66. new bool:g_bHasSuperKnife[33]
  67. new bool:g_bHasNoFlash[33]
  68.  
  69. /* Integer */
  70.  
  71. new g_iMaxPlayers
  72.  
  73. new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
  74. new g_iItemIndex_CT[33][CT_SHOP_MAX]
  75.  
  76. new g_iHP[33]
  77.  
  78. /* CVars */
  79.  
  80. new cvar_gm, cvar_hpsave
  81.  
  82. /* CVars - Furien */
  83.  
  84. new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
  85. new cvar_t_grav, cvar_t_speed, cvar_t_fs
  86. new cvar_t_psf
  87.  
  88. /* CVars - CTs */
  89.  
  90. new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
  91. new cvar_ct_grav, cvar_ct_fs
  92. new cvar_ct_ammo_pri, cvar_ct_ammo_sec
  93.  
  94. /* Constants - Shop */
  95.  
  96. new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
  97.     {"Superknife",      16000,  "CORE",         "shop_t_givesk",    1,  DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
  98.     {"Deagle (14 Gojoval)", 10000,  "CORE",             "shop_t_givedgl",   1,  2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
  99.     {"50 HP",       4000,   "CORE",         "shop_t_givehp",    2,  1},
  100.     {"75 AP",       2000,   "CORE",         "shop_t_giveap",    2,  1},
  101.     {"1 HE Granat", 1000,   "CORE",         "shop_givehe",      2,  1},
  102.     {"1 Vakito Granat", 1000,   "CORE",         "shop_giveflash",   2,  1},
  103.     {"1 Fust Granat",   1000,   "CORE",         "shop_givesmoke",   1,  1},
  104.     {"Nincs vakulas",       500,    "CORE",         "shop_givenf",      1,  DO_NOT_CHANGE}
  105. }
  106.  
  107. new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
  108.     {"Defuse Kit",      300,    "CORE",             "shop_ct_givedefkit",       1,  2},
  109.     {"Para (200 Gojoval)",  16000,  "CORE",             "shop_ct_givepara",     1,  1},
  110.     {"50 HP",       4000,   "CORE",             "shop_ct_givehp",       2,  1},
  111.     {"75 AP",       3500,   "CORE",             "shop_ct_giveap",       1,  1},
  112.     {"1 HE Granat",     2000,   "CORE",             "shop_givehe",          1,  1},
  113.     {"1 Vakito Granat", 1000,   "CORE",             "shop_giveflash",       1,  1},
  114.     {"1 Fust Granat",   1000,   "CORE",             "shop_givesmoke",       1,  1},
  115.     {"Nincs vakulas",   4000,   "CORE",             "shop_givenf",          1,  DO_NOT_CHANGE},
  116.     {"Superdeagle",     16000,  "kfm_extra_sdgl.amxx",      "zp_extra_item_selected",   1,  1}
  117. }
  118.  
  119. /* Constants - Weapons */
  120.  
  121. new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
  122.     {"AK47 + Deagle",   "weapon_ak47",      CSW_AK47,       "weapon_deagle",    CSW_DEAGLE},
  123.     {"M4A1 + Deagle",   "weapon_m4a1",      CSW_M4A1,       "weapon_deagle",    CSW_DEAGLE},
  124.     {"Famas + Deagle",  "weapon_famas",     CSW_FAMAS,      "weapon_deagle",    CSW_DEAGLE},
  125.     {"MP5 + Deagle",    "weapon_mp5navy",   CSW_MP5NAVY,        "weapon_deagle",    CSW_DEAGLE},
  126.     {"XM1014 + Deagle",     "weapon_xm1014",    CSW_XM1014,     "weapon_deagle",    CSW_DEAGLE}
  127. }
  128.  
  129.  
  130. /* Constants */
  131.  
  132. const SWAP_PER_INTERVAL = 5
  133. const Float:SWAP_INTERVAL = 0.5
  134.  
  135. const fPainShock = 108
  136.  
  137. new const models[][] =
  138. {
  139.     "models/w_backpack.mdl",
  140.     "models/w_flashbang.mdl",
  141.     "models/w_hegrenade.mdl",
  142.     "models/w_smokegrenade.mdl"
  143. }
  144.  
  145. /* Misc */
  146.  
  147. new g_msgScreenFade
  148.  
  149. /* PreCache */
  150.  
  151. new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
  152.  
  153. // ===============================================================================
  154. //  plugin_precache - Files that will be downloaded
  155. // ===============================================================================
  156.  
  157. public plugin_precache()
  158. {
  159.     precache_model(sz_SuperKnife_V_Model)
  160. }
  161. // ===============================================================================
  162. //  plugin_init - Do not modify this unless you know what you're doing
  163. // ===============================================================================
  164.  
  165. public plugin_init()
  166. {
  167.     register_plugin(PLUGIN, VERSION, AUTHOR)
  168.  
  169.     /* CVars */
  170.  
  171.     register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
  172.     cvar_gm         = register_cvar("kfm_godend",       "1")
  173.     cvar_hpsave     = register_cvar("kfm_savehp",       "1")
  174.  
  175.     /* CVars - Furien */
  176.  
  177.     cvar_t_starthe      = register_cvar("kfm_t_starthe",    "1")
  178.     cvar_t_startflash   = register_cvar("kfm_t_startflash",     "2")
  179.     cvar_t_startsmoke   = register_cvar("kfm_t_startsmoke",     "1")
  180.  
  181.     cvar_t_grav     = register_cvar("kfm_t_grav",       "0.39")
  182.     cvar_t_speed        = register_cvar("kfm_t_speed",      "565")
  183.     cvar_t_fs       = register_cvar("kfm_t_fs",     "1")
  184.  
  185.     cvar_t_psf      = register_cvar("kfm_t_psf",        "1")
  186.  
  187.     /* CVars - CTs */
  188.  
  189.     cvar_ct_starthe     = register_cvar("kfm_ct_starthe",   "0")
  190.     cvar_ct_startflash  = register_cvar("kfm_ct_startflash",    "0")
  191.     cvar_ct_startsmoke  = register_cvar("kfm_ct_startsmoke",    "1")
  192.  
  193.     cvar_ct_grav        = register_cvar("kfm_ct_grav",      "1.0")
  194.     cvar_ct_fs      = register_cvar("kfm_ct_fs",        "0")
  195.  
  196.     cvar_ct_ammo_pri    = register_cvar("kfm_ct_ammo_primary",  "200")
  197.     cvar_ct_ammo_sec    = register_cvar("kfm_ct_ammo_secondary", "150")
  198.  
  199.     /* Commands */
  200.  
  201.     register_clcmd("say /guns",         "cmd_Guns")
  202.     register_clcmd("say_team /guns",    "cmd_Guns")
  203.     register_clcmd("say guns",      "cmd_Guns")
  204.     register_clcmd("say_team guns",     "cmd_Guns")
  205.     register_clcmd("guns",          "cmd_Guns")
  206.  
  207.     register_clcmd("say /gravity",      "cmd_Gravity")
  208.     register_clcmd("say_team /gravity",     "cmd_Gravity")
  209.     register_clcmd("say gravity",       "cmd_Gravity")
  210.     register_clcmd("say_team gravity",  "cmd_Gravity")
  211.     register_clcmd("gravity",       "cmd_Gravity")
  212.  
  213.     register_clcmd("say /shop",         "cmd_Shop")
  214.     register_clcmd("say_team /shop",    "cmd_Shop")
  215.     register_clcmd("say shop",      "cmd_Shop")
  216.     register_clcmd("say_team shop",     "cmd_Shop")
  217.     register_clcmd("shop",          "cmd_Shop")
  218.  
  219.     /* Events */
  220.  
  221.     register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
  222.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  223.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  224.     register_event("DeathMsg", "Event_DeathMsg", "a")
  225.     register_event("WeapPickup", "Event_WeaponPickup", "b")
  226.  
  227.     /* Logevents */
  228.  
  229.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  230.  
  231.     /* Hamsandwich */
  232.  
  233.     RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
  234.     RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
  235.     RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
  236.  
  237.     /* Forwards */
  238.  
  239.     register_forward(FM_Think, "fw_Think")
  240.     register_forward(FM_Touch, "fw_Touch")
  241.  
  242.     /* Misc */
  243.  
  244.     TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))  
  245.     set_pev(TaskEnt, pev_classname, "speedometer_think")
  246.     set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  247.  
  248.     g_msgScreenFade = get_user_msgid("ScreenFade")
  249.     g_iMaxPlayers = get_maxplayers()
  250. }
  251.  
  252. // ===============================================================================
  253. //  Client Connect
  254. // ===============================================================================
  255.  
  256. public client_putinserver(id)
  257. {
  258.     g_bHasAcceptedSettings[id] = false
  259.     g_bHasWeapon[id] = false
  260.     g_bHasSuperKnife[id] = false
  261.     g_bHasNoFlash[id] = false
  262.     g_bWantsLowGrav[id] = true
  263.  
  264.     g_iItemIndex_CT[id][0] = false
  265.     g_iItemIndex_T[id][0] = false
  266.     g_iHP[id] = 100
  267. }
  268.  
  269. // ===============================================================================
  270. //  Client Disconnect
  271. // ===============================================================================
  272.  
  273. public client_disconnect(id)
  274. {
  275.     g_bHasAcceptedSettings[id] = false
  276.     g_bHasWeapon[id] = false
  277.     g_bHasSuperKnife[id] = false
  278.     g_bHasNoFlash[id] = false
  279.     g_bWantsLowGrav[id] = true
  280.  
  281.     g_iItemIndex_CT[id][0] = false
  282.     g_iItemIndex_T[id][0] = false
  283.     g_iHP[id] = 100
  284. }
  285.  
  286. // ===============================================================================
  287. //  say /guns
  288. // ===============================================================================
  289.  
  290. public cmd_Guns(id)
  291. {
  292.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
  293.         func_OpenGunMenu(id)
  294. }
  295.  
  296. // ===============================================================================
  297. //  say /gravity
  298. // ===============================================================================
  299.  
  300. public cmd_Gravity(id)
  301. {
  302.     g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
  303.     client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
  304.  
  305.     if(cs_get_user_team(id) == CS_TEAM_T)
  306.         set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
  307. }
  308.  
  309. // ===============================================================================
  310. //  say /shop
  311. // ===============================================================================
  312.  
  313. public cmd_Shop(id)
  314. {
  315.     if(!is_user_alive(id))
  316.         return PLUGIN_HANDLED
  317.  
  318.     switch(cs_get_user_team(id))
  319.     {
  320.         case CS_TEAM_T  : func_OpenTShop(id)
  321.         case CS_TEAM_CT : func_OpenCTShop(id)
  322.     }
  323.  
  324.     return PLUGIN_HANDLED
  325. }
  326.  
  327. // ===============================================================================
  328. //  func_OpenTShop - Shop for Ts
  329. // ===============================================================================
  330.  
  331. public func_OpenTShop(id)
  332. {
  333.  
  334.     static szMenuTitle[128]
  335.     new szItemTitle[128]
  336.     new iAccess
  337.  
  338.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
  339.  
  340.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  341.  
  342.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  343.     {
  344.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
  345.  
  346.         if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
  347.             iAccess = 0
  348.         else
  349.             iAccess = 1<<31
  350.  
  351.         menu_additem(menu, szItemTitle, _, iAccess)
  352.     }
  353.  
  354.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  355.     menu_display( id, menu, 0 );
  356.     return PLUGIN_HANDLED;
  357. }
  358.  
  359. public func_OpenTShop_handler(id, menu, item)
  360. {
  361.     if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
  362.     {
  363.         menu_destroy(menu)
  364.         return PLUGIN_HANDLED
  365.     }
  366.  
  367.     new szPlugin[64]
  368.  
  369.     if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
  370.         formatex(szPlugin, charsmax(szPlugin), "")
  371.     else
  372.         formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
  373.  
  374.     if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
  375.     {
  376.         callfunc_push_int(id)
  377.         callfunc_end()
  378.  
  379.         Reduce(id, g_mFurienItems[item][ItemCost])        
  380.         g_iItemIndex_T[id][item]++
  381.     }
  382.  
  383.  
  384.     return PLUGIN_HANDLED
  385. }
  386.  
  387. // ===============================================================================
  388. //  Item Handlers for Furien Shop
  389. // ===============================================================================
  390.  
  391. public shop_t_givesk(id)
  392. {
  393.     g_bHasSuperKnife[id] = true
  394.     engclient_cmd(id, "weapon_knife")
  395.     ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
  396. }
  397.  
  398. public shop_t_givedgl(id)
  399. {
  400.     give_item(id, "weapon_deagle")
  401.     cs_set_user_bpammo(id, CSW_DEAGLE, 7)
  402.     engclient_cmd(id, "weapon_deagle")
  403. }
  404.  
  405. public shop_t_givehp(id)
  406. {
  407.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  408. }
  409.  
  410. public shop_t_giveap(id)
  411.     set_user_armor(id, get_user_armor(id) + 75)
  412.  
  413. // ===============================================================================
  414. //  General Item Handlers
  415. // ===============================================================================
  416.  
  417.  
  418. public shop_givehe(id)
  419. {
  420.     if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
  421.     {
  422.         give_item(id, "weapon_hegrenade")
  423.         return PLUGIN_HANDLED
  424.     }
  425.  
  426.     cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
  427.     return PLUGIN_HANDLED
  428. }
  429.  
  430. public shop_giveflash(id)
  431. {
  432.     if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
  433.     {
  434.         give_item(id, "weapon_flashbang")
  435.         return PLUGIN_HANDLED
  436.     }
  437.  
  438.     cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
  439.     return PLUGIN_HANDLED
  440. }
  441.  
  442. public shop_givesmoke(id)
  443. {
  444.     if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
  445.     {
  446.         give_item(id, "weapon_smokegrenade")
  447.         return PLUGIN_HANDLED
  448.     }
  449.  
  450.     cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)  
  451.     return PLUGIN_HANDLED
  452. }
  453.  
  454. public shop_givenf(id)
  455.     g_bHasNoFlash[id] = true
  456.  
  457. // ===============================================================================
  458. //  func_OpenCTShop - Shop for CTs
  459. // ===============================================================================
  460.  
  461. public func_OpenCTShop(id)
  462. {
  463.     if(!is_user_alive(id))
  464.         return PLUGIN_HANDLED
  465.  
  466.     static szMenuTitle[64]
  467.     new szItemTitle[64]
  468.     new iAccess
  469.  
  470.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
  471.  
  472.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  473.  
  474.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  475.     {
  476.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
  477.  
  478.         if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
  479.             iAccess = 0
  480.         else
  481.             iAccess = 1<<31
  482.  
  483.         menu_additem(menu, szItemTitle, _, iAccess)
  484.     }
  485.  
  486.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  487.     menu_display( id, menu, 0 );
  488.     return PLUGIN_HANDLED;
  489. }
  490.  
  491. public func_OpenCTShop_handler(id, menu, item)
  492. {
  493.     if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
  494.     {
  495.         menu_destroy(menu)
  496.         return PLUGIN_HANDLED
  497.     }
  498.  
  499.     new szPlugin[64]
  500.  
  501.     if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
  502.         formatex(szPlugin, charsmax(szPlugin), "")
  503.     else
  504.         formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
  505.  
  506.     if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
  507.     {
  508.         callfunc_push_int(id)
  509.         callfunc_end()
  510.  
  511.         Reduce(id, g_mCTItems[item][ItemCost])
  512.         g_iItemIndex_CT[id][item]++
  513.     }
  514.  
  515.     return PLUGIN_HANDLED
  516. }
  517.  
  518. // ===============================================================================
  519. //  Item Handlers for CT Shop
  520. // ===============================================================================
  521.  
  522. public shop_ct_givedefkit(id)
  523.     cs_set_user_defuse(id, 1)
  524.  
  525. public shop_ct_givepara(id)
  526. {
  527.     give_item(id, "weapon_m249")
  528.     cs_set_user_bpammo(id, CSW_M249, 100)
  529. }
  530.  
  531. public shop_ct_givehp(id)
  532.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  533.  
  534. public shop_ct_giveap(id)
  535.     set_user_armor(id, get_user_armor(id) + 75)
  536.  
  537.  
  538. // ===============================================================================
  539. //  func_OpenGunMenu - Gun Menu for CTs
  540. // ===============================================================================
  541.  
  542. public func_OpenGunMenu(id)
  543. {
  544.     if(!is_user_alive(id))
  545.         return PLUGIN_HANDLED
  546.  
  547.     static szMenuTitle[128]
  548.     new szItemTitle[128]
  549.  
  550.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
  551.  
  552.     new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
  553.  
  554.     for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
  555.     {
  556.         formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
  557.  
  558.         menu_additem(menu, szItemTitle, _, 0)
  559.     }
  560.  
  561.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  562.     menu_display( id, menu, 0 );
  563.     return PLUGIN_HANDLED;
  564. }
  565.  
  566. public func_OpenGunMenu_handler(id, menu, item)
  567. {
  568.     if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
  569.     {
  570.         menu_destroy(menu)
  571.         return PLUGIN_HANDLED
  572.     }
  573.  
  574.     give_item(id, g_mCTWeapons[item][ItemPri])
  575.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
  576.  
  577.     give_item(id, g_mCTWeapons[item][ItemSec])
  578.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
  579.  
  580.     g_bHasWeapon[id] = true
  581.     return PLUGIN_HANDLED
  582. }
  583.  
  584. // ===============================================================================
  585. //  Event - @ CT Win - Credits go to Exolent
  586. // ===============================================================================
  587.  
  588. public Event_CTWin()
  589. {
  590.     static iCount, client;
  591.  
  592.     iCount = 0;
  593.  
  594.     for( client = 0; client <= g_iMaxPlayers; client++ )
  595.     {
  596.         if( is_user_connected( client ) )
  597.         {
  598.             if( iCount >= SWAP_PER_INTERVAL )
  599.             {
  600.                 set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
  601.             }
  602.  
  603.             switch( cs_get_user_team( client ) )
  604.             {
  605.                 case CS_TEAM_T:
  606.                 {
  607.                     cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
  608.  
  609.                     iCount++;
  610.                 }
  611.                 case CS_TEAM_CT:
  612.                 {
  613.                     cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
  614.  
  615.                     iCount++;
  616.                 }
  617.             }
  618.         }
  619.     }
  620.  
  621.     remove_task(TASK_ID_SWAPTEAMS)
  622. }
  623.  
  624. // ===============================================================================
  625. //  Event - CurWeapon
  626. // ===============================================================================
  627.  
  628. public Event_CurWeapon(id)
  629. {
  630.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  631.         set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  632. }
  633.  
  634. // ===============================================================================
  635. //  Event - Flashed
  636. // ===============================================================================
  637.  
  638. public Event_Flashed(id)
  639. {
  640.     if(g_bHasNoFlash[id])
  641.     {
  642.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  643.         write_short(1)
  644.         write_short(1)
  645.         write_short(1)
  646.         write_byte(0)
  647.         write_byte(0)
  648.         write_byte(0)
  649.         write_byte(255)
  650.         message_end()
  651.     }
  652.  
  653. }
  654.  
  655. // ===============================================================================
  656. //  Event - DeathMsg
  657. // ===============================================================================
  658.  
  659. public Event_DeathMsg(id)
  660. {
  661.     new iVictim = read_data(2)
  662.  
  663.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  664.     {
  665.         if(g_mCTItems[i][ItemReset] == 2)
  666.             g_iItemIndex_CT[iVictim][i] = 0
  667.     }
  668.  
  669.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  670.     {
  671.         if(g_mFurienItems[i][ItemReset] == 2)
  672.         {
  673.             g_iItemIndex_T[iVictim][i] = 0
  674.         }
  675.     }
  676.  
  677.     g_bHasSuperKnife[iVictim] = false
  678.     g_bHasNoFlash[iVictim] = false
  679. }
  680.  
  681. // ===============================================================================
  682. //  Event - Weapon Pickup
  683. // ===============================================================================
  684.  
  685. public Event_WeaponPickup(id, weapon)
  686. {
  687.     if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
  688.     {
  689.         return PLUGIN_HANDLED
  690.     }
  691.     return PLUGIN_CONTINUE
  692. }
  693.  
  694. // ===============================================================================
  695. //  LogEvent - Round End
  696. // ===============================================================================
  697.  
  698. public LogEvent_RoundEnd()
  699. {
  700.     new players[32], pnum, tempid
  701.     get_players(players, pnum, "a")
  702.  
  703.     for( new i; i<pnum; i++ )
  704.     {
  705.         tempid = players[i]
  706.  
  707.         if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
  708.             g_iHP[tempid] = get_user_health(tempid)
  709.  
  710.         strip_user_weapons(tempid)
  711.         give_item(tempid, "weapon_knife")
  712.  
  713.         if(get_pcvar_num(cvar_gm))
  714.             set_user_godmode(tempid, 1)
  715.     }
  716. }      
  717.  
  718. // ===============================================================================
  719. //  Hamsandwich - Ham_Spawn
  720. // ===============================================================================
  721.  
  722. public func_HamSpawn(id)
  723. {
  724.     if(is_user_alive(id))
  725.     {
  726.         for( new i = 0; i < sizeof(g_mCTItems); i++ )
  727.         {
  728.             if(g_mCTItems[i][ItemReset] == 1)
  729.             {
  730.                 g_iItemIndex_CT[id][i] = 0
  731.             }
  732.         }
  733.  
  734.         for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  735.         {
  736.             if(g_mFurienItems[i][ItemReset] == 1)
  737.             {
  738.                 g_iItemIndex_T[id][i] = 0
  739.             }
  740.         }
  741.  
  742.         if(get_pcvar_num(cvar_hpsave))
  743.         {
  744.             if(g_iHP[id] < 100)
  745.                 g_iHP[id] = 100
  746.  
  747.             set_user_health(id, g_iHP[id])
  748.             g_iHP[id] = 100
  749.         }
  750.  
  751.         set_user_godmode(id, 0)
  752.         strip_user_weapons(id)
  753.         give_item(id, "weapon_knife")
  754.  
  755.         if(g_bHasAcceptedSettings[id])
  756.         {
  757.             func_ApplyGameplay(id)
  758.         }
  759.         else
  760.         {
  761.             func_AskForPermission(id)
  762.         }
  763.     }
  764. }
  765.  
  766. // ===============================================================================
  767. //  Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
  768. // ===============================================================================
  769.  
  770. public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  771. {
  772.     if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
  773.     {
  774.         SetHamParamFloat(4, damage * 3)
  775.     }
  776.  
  777.     if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
  778.         set_pdata_float(victim, fPainShock, 1.0, 5)
  779. }
  780.  
  781. // ===============================================================================
  782. //  Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
  783. // ===============================================================================
  784.  
  785. public func_HamTookKnife(iKnife)
  786. {
  787.     new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
  788.  
  789.     if(g_bHasSuperKnife[id])
  790.     {
  791.         entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
  792.     }
  793. }
  794.  
  795. // ===============================================================================
  796. //  Forwards - FM_Think - Credits go to ConnorMcLeod
  797. // ===============================================================================
  798.  
  799. public fw_Think(ent)
  800. {
  801.     if(ent == TaskEnt)
  802.     {
  803.         SpeedTask()
  804.         set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
  805.     }
  806. }
  807.  
  808. public SpeedTask()
  809. {
  810.     static i, target
  811.     static Float:velocity[3]
  812.     static Float:speed
  813.  
  814.     for(i = 1; i <= g_iMaxPlayers ; i++)
  815.     {
  816.         if(!is_user_connected(i)) continue
  817.  
  818.         target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  819.         pev(target, pev_velocity, velocity)
  820.  
  821.         speed = vector_length(velocity)
  822.         if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
  823.         {
  824.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
  825.         }
  826.         else if(speed > 5)
  827.         {
  828.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
  829.         }
  830.     }
  831. }
  832.  
  833. // ===============================================================================
  834. //  Forwards - FM_Touch
  835. // ===============================================================================
  836.  
  837. public fw_Touch( ent , id )
  838. {
  839.     if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
  840.         return FMRES_IGNORED;
  841.  
  842.     static szEntModel[32];
  843.     pev(ent , pev_model , szEntModel , 31);
  844.  
  845.     return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
  846. }
  847.  
  848. // ===============================================================================
  849. //  func_ApplyGameplay - Getting Players Team and selecting function
  850. // ===============================================================================
  851.  
  852. public func_ApplyGameplay(id)
  853. {
  854.     switch(cs_get_user_team(id))
  855.     {
  856.         case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
  857.         case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
  858.     }
  859. }
  860.  
  861. // ===============================================================================
  862. //  func_CTEquip - Giving Equipment for CTs
  863. // ===============================================================================
  864.  
  865. public func_CTEquip(id)
  866. {
  867.     if(get_pcvar_num(cvar_ct_starthe) > 0)
  868.     {
  869.         give_item(id, "weapon_hegrenade")
  870.         if(get_pcvar_num(cvar_ct_starthe) > 1)
  871.         {
  872.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
  873.         }
  874.     }
  875.  
  876.     if(get_pcvar_num(cvar_ct_startflash) > 0)
  877.     {
  878.         give_item(id, "weapon_flashbang")
  879.         if(get_pcvar_num(cvar_ct_startflash) > 1)
  880.         {
  881.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
  882.         }
  883.     }
  884.  
  885.     if(get_pcvar_num(cvar_ct_startsmoke) > 0)
  886.     {
  887.         give_item(id, "weapon_smokegrenade")
  888.         if(get_pcvar_num(cvar_ct_startsmoke) > 1)
  889.         {
  890.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
  891.         }
  892.     }
  893.  
  894.     set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
  895.     set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
  896.     ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
  897.     func_OpenGunMenu(id)
  898. }
  899.  
  900. // ===============================================================================
  901. //  func_TEquip - Giving Equipment for Ts
  902. // ===============================================================================
  903.  
  904. public func_TEquip(id)
  905. {
  906.     if(get_pcvar_num(cvar_t_starthe) > 0)
  907.     {
  908.         give_item(id, "weapon_hegrenade")
  909.         if(get_pcvar_num(cvar_t_starthe) > 1)
  910.         {
  911.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
  912.         }
  913.     }
  914.  
  915.     if(get_pcvar_num(cvar_t_startflash) > 0)
  916.     {
  917.         give_item(id, "weapon_flashbang")
  918.         if(get_pcvar_num(cvar_t_startflash) > 1)
  919.         {
  920.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
  921.         }
  922.     }
  923.  
  924.     if(get_pcvar_num(cvar_t_startsmoke) > 0)
  925.     {
  926.         give_item(id, "weapon_smokegrenade")
  927.         if(get_pcvar_num(cvar_t_startsmoke) > 1)
  928.         {
  929.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
  930.         }
  931.     }
  932.  
  933.     if(g_bWantsLowGrav[id])
  934.         set_user_gravity(id, get_pcvar_float(cvar_t_grav))
  935.  
  936.     set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
  937.     set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  938. }
  939.  
  940. // ===============================================================================
  941. //  func_AskForPermission - Asking player to set cl_ values.
  942. // ===============================================================================
  943.  
  944. public func_AskForPermission(id)
  945. {
  946.     new szMenuTitle[128]
  947.     formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
  948.     new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
  949.  
  950.     menu_additem(menu, "\wIgen","1",0);
  951.     menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
  952.  
  953.     menu_display(id, menu, 0);
  954.     return PLUGIN_HANDLED
  955. }
  956.  
  957. public func_AskForPermission_handler(id, menu, item)
  958. {
  959.     new data[6], szName[64];
  960.     new access, callback;
  961.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  962.     new key = str_to_num(data);
  963.  
  964.     switch(key)
  965.     {
  966.         case 1:
  967.         {
  968.             g_bHasAcceptedSettings[id] = true
  969.  
  970.             client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
  971.             client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
  972.             client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
  973.  
  974.             if(is_user_alive(id))
  975.                 func_ApplyGameplay(id)
  976.         }
  977.         case 2:
  978.         {
  979.             g_bHasAcceptedSettings[id] = false
  980.         }
  981.     }
  982. }
  983.  
  984. // ===============================================================================
  985. //  Stocks
  986. // ===============================================================================
  987.  
  988. stock Reduce(id, amount)
  989.     cs_set_user_money(id, cs_get_user_money(id) - amount)

Köszi.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.07.02. 12:20 
Offline
Lelkes
Avatar

Csatlakozott: 2018.06.07. 11:36
Hozzászólások: 19
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 4 alkalommal
SidLuke írta:
Szia, tessék.
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <engine>
  8.  
  9. #define PLUGIN "Furien Mod"
  10. #define VERSION "64.2.6b"
  11. #define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27
  12.  
  13. // ===============================================================================
  14. //  Variables
  15. // ===============================================================================
  16.  
  17. /* Defines */
  18.  
  19. // Sets maximum of items for Furien Shop
  20. #define FURIEN_SHOP_MAX     8
  21.  
  22. // Sets maximum of items for CT Shop
  23. #define CT_SHOP_MAX         9
  24.  
  25. // Sets maximum of items for CT Gun Meun
  26. #define CT_WEAPON_MAX       5
  27.  
  28. // Delay after spawn to give stuff
  29. #define EQUIP_DELAY         0.1
  30.  
  31. // Maximum Health
  32. #define MAX_HP          200
  33.  
  34. #define TASK_ID_SWAPTEAMS 2000
  35. #define XO_WEAPON 4
  36. #define m_pPlayer 41
  37. #define XO_PLAYER   5
  38. #define m_pActiveItem   373
  39. #define DO_NOT_CHANGE   2
  40.  
  41. /* Enums */
  42.  
  43. enum _:ShopItems
  44. {
  45.     ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
  46. }
  47.  
  48. enum _:GunItems
  49. {
  50.     ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
  51. }
  52.  
  53. /* Entitys */
  54.  
  55. new TaskEnt
  56.  
  57. /* Hamsandwich */
  58.  
  59. new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
  60.  
  61. /* Booleans */
  62.  
  63. new bool:g_bHasAcceptedSettings[33]
  64. new bool:g_bHasWeapon[33]
  65. new bool:g_bWantsLowGrav[33]
  66. new bool:g_bHasSuperKnife[33]
  67. new bool:g_bHasNoFlash[33]
  68.  
  69. /* Integer */
  70.  
  71. new g_iMaxPlayers
  72.  
  73. new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
  74. new g_iItemIndex_CT[33][CT_SHOP_MAX]
  75.  
  76. new g_iHP[33]
  77.  
  78. /* CVars */
  79.  
  80. new cvar_gm, cvar_hpsave
  81.  
  82. /* CVars - Furien */
  83.  
  84. new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
  85. new cvar_t_grav, cvar_t_speed, cvar_t_fs
  86. new cvar_t_psf
  87.  
  88. /* CVars - CTs */
  89.  
  90. new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
  91. new cvar_ct_grav, cvar_ct_fs
  92. new cvar_ct_ammo_pri, cvar_ct_ammo_sec
  93.  
  94. /* Constants - Shop */
  95.  
  96. new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
  97.     {"Superknife",      16000,  "CORE",         "shop_t_givesk",    1,  DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
  98.     {"Deagle (14 Gojoval)", 10000,  "CORE",             "shop_t_givedgl",   1,  2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
  99.     {"50 HP",       4000,   "CORE",         "shop_t_givehp",    2,  1},
  100.     {"75 AP",       2000,   "CORE",         "shop_t_giveap",    2,  1},
  101.     {"1 HE Granat", 1000,   "CORE",         "shop_givehe",      2,  1},
  102.     {"1 Vakito Granat", 1000,   "CORE",         "shop_giveflash",   2,  1},
  103.     {"1 Fust Granat",   1000,   "CORE",         "shop_givesmoke",   1,  1},
  104.     {"Nincs vakulas",       500,    "CORE",         "shop_givenf",      1,  DO_NOT_CHANGE}
  105. }
  106.  
  107. new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
  108.     {"Defuse Kit",      300,    "CORE",             "shop_ct_givedefkit",       1,  2},
  109.     {"Para (200 Gojoval)",  16000,  "CORE",             "shop_ct_givepara",     1,  1},
  110.     {"50 HP",       4000,   "CORE",             "shop_ct_givehp",       2,  1},
  111.     {"75 AP",       3500,   "CORE",             "shop_ct_giveap",       1,  1},
  112.     {"1 HE Granat",     2000,   "CORE",             "shop_givehe",          1,  1},
  113.     {"1 Vakito Granat", 1000,   "CORE",             "shop_giveflash",       1,  1},
  114.     {"1 Fust Granat",   1000,   "CORE",             "shop_givesmoke",       1,  1},
  115.     {"Nincs vakulas",   4000,   "CORE",             "shop_givenf",          1,  DO_NOT_CHANGE},
  116.     {"Superdeagle",     16000,  "kfm_extra_sdgl.amxx",      "zp_extra_item_selected",   1,  1}
  117. }
  118.  
  119. /* Constants - Weapons */
  120.  
  121. new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
  122.     {"AK47 + Deagle",   "weapon_ak47",      CSW_AK47,       "weapon_deagle",    CSW_DEAGLE},
  123.     {"M4A1 + Deagle",   "weapon_m4a1",      CSW_M4A1,       "weapon_deagle",    CSW_DEAGLE},
  124.     {"Famas + Deagle",  "weapon_famas",     CSW_FAMAS,      "weapon_deagle",    CSW_DEAGLE},
  125.     {"MP5 + Deagle",    "weapon_mp5navy",   CSW_MP5NAVY,        "weapon_deagle",    CSW_DEAGLE},
  126.     {"XM1014 + Deagle",     "weapon_xm1014",    CSW_XM1014,     "weapon_deagle",    CSW_DEAGLE}
  127. }
  128.  
  129.  
  130. /* Constants */
  131.  
  132. const SWAP_PER_INTERVAL = 5
  133. const Float:SWAP_INTERVAL = 0.5
  134.  
  135. const fPainShock = 108
  136.  
  137. new const models[][] =
  138. {
  139.     "models/w_backpack.mdl",
  140.     "models/w_flashbang.mdl",
  141.     "models/w_hegrenade.mdl",
  142.     "models/w_smokegrenade.mdl"
  143. }
  144.  
  145. /* Misc */
  146.  
  147. new g_msgScreenFade
  148.  
  149. /* PreCache */
  150.  
  151. new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
  152.  
  153. // ===============================================================================
  154. //  plugin_precache - Files that will be downloaded
  155. // ===============================================================================
  156.  
  157. public plugin_precache()
  158. {
  159.     precache_model(sz_SuperKnife_V_Model)
  160. }
  161. // ===============================================================================
  162. //  plugin_init - Do not modify this unless you know what you're doing
  163. // ===============================================================================
  164.  
  165. public plugin_init()
  166. {
  167.     register_plugin(PLUGIN, VERSION, AUTHOR)
  168.  
  169.     /* CVars */
  170.  
  171.     register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
  172.     cvar_gm         = register_cvar("kfm_godend",       "1")
  173.     cvar_hpsave     = register_cvar("kfm_savehp",       "1")
  174.  
  175.     /* CVars - Furien */
  176.  
  177.     cvar_t_starthe      = register_cvar("kfm_t_starthe",    "1")
  178.     cvar_t_startflash   = register_cvar("kfm_t_startflash",     "2")
  179.     cvar_t_startsmoke   = register_cvar("kfm_t_startsmoke",     "1")
  180.  
  181.     cvar_t_grav     = register_cvar("kfm_t_grav",       "0.39")
  182.     cvar_t_speed        = register_cvar("kfm_t_speed",      "565")
  183.     cvar_t_fs       = register_cvar("kfm_t_fs",     "1")
  184.  
  185.     cvar_t_psf      = register_cvar("kfm_t_psf",        "1")
  186.  
  187.     /* CVars - CTs */
  188.  
  189.     cvar_ct_starthe     = register_cvar("kfm_ct_starthe",   "0")
  190.     cvar_ct_startflash  = register_cvar("kfm_ct_startflash",    "0")
  191.     cvar_ct_startsmoke  = register_cvar("kfm_ct_startsmoke",    "1")
  192.  
  193.     cvar_ct_grav        = register_cvar("kfm_ct_grav",      "1.0")
  194.     cvar_ct_fs      = register_cvar("kfm_ct_fs",        "0")
  195.  
  196.     cvar_ct_ammo_pri    = register_cvar("kfm_ct_ammo_primary",  "200")
  197.     cvar_ct_ammo_sec    = register_cvar("kfm_ct_ammo_secondary", "150")
  198.  
  199.     /* Commands */
  200.  
  201.     register_clcmd("say /guns",         "cmd_Guns")
  202.     register_clcmd("say_team /guns",    "cmd_Guns")
  203.     register_clcmd("say guns",      "cmd_Guns")
  204.     register_clcmd("say_team guns",     "cmd_Guns")
  205.     register_clcmd("guns",          "cmd_Guns")
  206.  
  207.     register_clcmd("say /gravity",      "cmd_Gravity")
  208.     register_clcmd("say_team /gravity",     "cmd_Gravity")
  209.     register_clcmd("say gravity",       "cmd_Gravity")
  210.     register_clcmd("say_team gravity",  "cmd_Gravity")
  211.     register_clcmd("gravity",       "cmd_Gravity")
  212.  
  213.     register_clcmd("say /shop",         "cmd_Shop")
  214.     register_clcmd("say_team /shop",    "cmd_Shop")
  215.     register_clcmd("say shop",      "cmd_Shop")
  216.     register_clcmd("say_team shop",     "cmd_Shop")
  217.     register_clcmd("shop",          "cmd_Shop")
  218.  
  219.     /* Events */
  220.  
  221.     register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
  222.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  223.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  224.     register_event("DeathMsg", "Event_DeathMsg", "a")
  225.     register_event("WeapPickup", "Event_WeaponPickup", "b")
  226.  
  227.     /* Logevents */
  228.  
  229.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  230.  
  231.     /* Hamsandwich */
  232.  
  233.     RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
  234.     RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
  235.     RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
  236.  
  237.     /* Forwards */
  238.  
  239.     register_forward(FM_Think, "fw_Think")
  240.     register_forward(FM_Touch, "fw_Touch")
  241.  
  242.     /* Misc */
  243.  
  244.     TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))  
  245.     set_pev(TaskEnt, pev_classname, "speedometer_think")
  246.     set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  247.  
  248.     g_msgScreenFade = get_user_msgid("ScreenFade")
  249.     g_iMaxPlayers = get_maxplayers()
  250. }
  251.  
  252. // ===============================================================================
  253. //  Client Connect
  254. // ===============================================================================
  255.  
  256. public client_putinserver(id)
  257. {
  258.     g_bHasAcceptedSettings[id] = false
  259.     g_bHasWeapon[id] = false
  260.     g_bHasSuperKnife[id] = false
  261.     g_bHasNoFlash[id] = false
  262.     g_bWantsLowGrav[id] = true
  263.  
  264.     g_iItemIndex_CT[id][0] = false
  265.     g_iItemIndex_T[id][0] = false
  266.     g_iHP[id] = 100
  267. }
  268.  
  269. // ===============================================================================
  270. //  Client Disconnect
  271. // ===============================================================================
  272.  
  273. public client_disconnect(id)
  274. {
  275.     g_bHasAcceptedSettings[id] = false
  276.     g_bHasWeapon[id] = false
  277.     g_bHasSuperKnife[id] = false
  278.     g_bHasNoFlash[id] = false
  279.     g_bWantsLowGrav[id] = true
  280.  
  281.     g_iItemIndex_CT[id][0] = false
  282.     g_iItemIndex_T[id][0] = false
  283.     g_iHP[id] = 100
  284. }
  285.  
  286. // ===============================================================================
  287. //  say /guns
  288. // ===============================================================================
  289.  
  290. public cmd_Guns(id)
  291. {
  292.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
  293.         func_OpenGunMenu(id)
  294. }
  295.  
  296. // ===============================================================================
  297. //  say /gravity
  298. // ===============================================================================
  299.  
  300. public cmd_Gravity(id)
  301. {
  302.     g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
  303.     client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
  304.  
  305.     if(cs_get_user_team(id) == CS_TEAM_T)
  306.         set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
  307. }
  308.  
  309. // ===============================================================================
  310. //  say /shop
  311. // ===============================================================================
  312.  
  313. public cmd_Shop(id)
  314. {
  315.     if(!is_user_alive(id))
  316.         return PLUGIN_HANDLED
  317.  
  318.     switch(cs_get_user_team(id))
  319.     {
  320.         case CS_TEAM_T  : func_OpenTShop(id)
  321.         case CS_TEAM_CT : func_OpenCTShop(id)
  322.     }
  323.  
  324.     return PLUGIN_HANDLED
  325. }
  326.  
  327. // ===============================================================================
  328. //  func_OpenTShop - Shop for Ts
  329. // ===============================================================================
  330.  
  331. public func_OpenTShop(id)
  332. {
  333.  
  334.     static szMenuTitle[128]
  335.     new szItemTitle[128]
  336.     new iAccess
  337.  
  338.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
  339.  
  340.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  341.  
  342.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  343.     {
  344.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
  345.  
  346.         if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
  347.             iAccess = 0
  348.         else
  349.             iAccess = 1<<31
  350.  
  351.         menu_additem(menu, szItemTitle, _, iAccess)
  352.     }
  353.  
  354.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  355.     menu_display( id, menu, 0 );
  356.     return PLUGIN_HANDLED;
  357. }
  358.  
  359. public func_OpenTShop_handler(id, menu, item)
  360. {
  361.     if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
  362.     {
  363.         menu_destroy(menu)
  364.         return PLUGIN_HANDLED
  365.     }
  366.  
  367.     new szPlugin[64]
  368.  
  369.     if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
  370.         formatex(szPlugin, charsmax(szPlugin), "")
  371.     else
  372.         formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
  373.  
  374.     if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
  375.     {
  376.         callfunc_push_int(id)
  377.         callfunc_end()
  378.  
  379.         Reduce(id, g_mFurienItems[item][ItemCost])        
  380.         g_iItemIndex_T[id][item]++
  381.     }
  382.  
  383.  
  384.     return PLUGIN_HANDLED
  385. }
  386.  
  387. // ===============================================================================
  388. //  Item Handlers for Furien Shop
  389. // ===============================================================================
  390.  
  391. public shop_t_givesk(id)
  392. {
  393.     g_bHasSuperKnife[id] = true
  394.     engclient_cmd(id, "weapon_knife")
  395.     ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
  396. }
  397.  
  398. public shop_t_givedgl(id)
  399. {
  400.     give_item(id, "weapon_deagle")
  401.     cs_set_user_bpammo(id, CSW_DEAGLE, 7)
  402.     engclient_cmd(id, "weapon_deagle")
  403. }
  404.  
  405. public shop_t_givehp(id)
  406. {
  407.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  408. }
  409.  
  410. public shop_t_giveap(id)
  411.     set_user_armor(id, get_user_armor(id) + 75)
  412.  
  413. // ===============================================================================
  414. //  General Item Handlers
  415. // ===============================================================================
  416.  
  417.  
  418. public shop_givehe(id)
  419. {
  420.     if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
  421.     {
  422.         give_item(id, "weapon_hegrenade")
  423.         return PLUGIN_HANDLED
  424.     }
  425.  
  426.     cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
  427.     return PLUGIN_HANDLED
  428. }
  429.  
  430. public shop_giveflash(id)
  431. {
  432.     if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
  433.     {
  434.         give_item(id, "weapon_flashbang")
  435.         return PLUGIN_HANDLED
  436.     }
  437.  
  438.     cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
  439.     return PLUGIN_HANDLED
  440. }
  441.  
  442. public shop_givesmoke(id)
  443. {
  444.     if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
  445.     {
  446.         give_item(id, "weapon_smokegrenade")
  447.         return PLUGIN_HANDLED
  448.     }
  449.  
  450.     cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)  
  451.     return PLUGIN_HANDLED
  452. }
  453.  
  454. public shop_givenf(id)
  455.     g_bHasNoFlash[id] = true
  456.  
  457. // ===============================================================================
  458. //  func_OpenCTShop - Shop for CTs
  459. // ===============================================================================
  460.  
  461. public func_OpenCTShop(id)
  462. {
  463.     if(!is_user_alive(id))
  464.         return PLUGIN_HANDLED
  465.  
  466.     static szMenuTitle[64]
  467.     new szItemTitle[64]
  468.     new iAccess
  469.  
  470.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
  471.  
  472.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  473.  
  474.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  475.     {
  476.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
  477.  
  478.         if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
  479.             iAccess = 0
  480.         else
  481.             iAccess = 1<<31
  482.  
  483.         menu_additem(menu, szItemTitle, _, iAccess)
  484.     }
  485.  
  486.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  487.     menu_display( id, menu, 0 );
  488.     return PLUGIN_HANDLED;
  489. }
  490.  
  491. public func_OpenCTShop_handler(id, menu, item)
  492. {
  493.     if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
  494.     {
  495.         menu_destroy(menu)
  496.         return PLUGIN_HANDLED
  497.     }
  498.  
  499.     new szPlugin[64]
  500.  
  501.     if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
  502.         formatex(szPlugin, charsmax(szPlugin), "")
  503.     else
  504.         formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
  505.  
  506.     if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
  507.     {
  508.         callfunc_push_int(id)
  509.         callfunc_end()
  510.  
  511.         Reduce(id, g_mCTItems[item][ItemCost])
  512.         g_iItemIndex_CT[id][item]++
  513.     }
  514.  
  515.     return PLUGIN_HANDLED
  516. }
  517.  
  518. // ===============================================================================
  519. //  Item Handlers for CT Shop
  520. // ===============================================================================
  521.  
  522. public shop_ct_givedefkit(id)
  523.     cs_set_user_defuse(id, 1)
  524.  
  525. public shop_ct_givepara(id)
  526. {
  527.     give_item(id, "weapon_m249")
  528.     cs_set_user_bpammo(id, CSW_M249, 100)
  529. }
  530.  
  531. public shop_ct_givehp(id)
  532.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  533.  
  534. public shop_ct_giveap(id)
  535.     set_user_armor(id, get_user_armor(id) + 75)
  536.  
  537.  
  538. // ===============================================================================
  539. //  func_OpenGunMenu - Gun Menu for CTs
  540. // ===============================================================================
  541.  
  542. public func_OpenGunMenu(id)
  543. {
  544.     if(!is_user_alive(id))
  545.         return PLUGIN_HANDLED
  546.  
  547.     static szMenuTitle[128]
  548.     new szItemTitle[128]
  549.  
  550.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
  551.  
  552.     new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
  553.  
  554.     for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
  555.     {
  556.         formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
  557.  
  558.         menu_additem(menu, szItemTitle, _, 0)
  559.     }
  560.  
  561.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  562.     menu_display( id, menu, 0 );
  563.     return PLUGIN_HANDLED;
  564. }
  565.  
  566. public func_OpenGunMenu_handler(id, menu, item)
  567. {
  568.     if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
  569.     {
  570.         menu_destroy(menu)
  571.         return PLUGIN_HANDLED
  572.     }
  573.  
  574.     give_item(id, g_mCTWeapons[item][ItemPri])
  575.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
  576.  
  577.     give_item(id, g_mCTWeapons[item][ItemSec])
  578.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
  579.  
  580.     g_bHasWeapon[id] = true
  581.     return PLUGIN_HANDLED
  582. }
  583.  
  584. // ===============================================================================
  585. //  Event - @ CT Win - Credits go to Exolent
  586. // ===============================================================================
  587.  
  588. public Event_CTWin()
  589. {
  590.     static iCount, client;
  591.  
  592.     iCount = 0;
  593.  
  594.     for( client = 0; client <= g_iMaxPlayers; client++ )
  595.     {
  596.         if( is_user_connected( client ) )
  597.         {
  598.             if( iCount >= SWAP_PER_INTERVAL )
  599.             {
  600.                 set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
  601.             }
  602.  
  603.             switch( cs_get_user_team( client ) )
  604.             {
  605.                 case CS_TEAM_T:
  606.                 {
  607.                     cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
  608.  
  609.                     iCount++;
  610.                 }
  611.                 case CS_TEAM_CT:
  612.                 {
  613.                     cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
  614.  
  615.                     iCount++;
  616.                 }
  617.             }
  618.         }
  619.     }
  620.  
  621.     remove_task(TASK_ID_SWAPTEAMS)
  622. }
  623.  
  624. // ===============================================================================
  625. //  Event - CurWeapon
  626. // ===============================================================================
  627.  
  628. public Event_CurWeapon(id)
  629. {
  630.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  631.         set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  632. }
  633.  
  634. // ===============================================================================
  635. //  Event - Flashed
  636. // ===============================================================================
  637.  
  638. public Event_Flashed(id)
  639. {
  640.     if(g_bHasNoFlash[id])
  641.     {
  642.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  643.         write_short(1)
  644.         write_short(1)
  645.         write_short(1)
  646.         write_byte(0)
  647.         write_byte(0)
  648.         write_byte(0)
  649.         write_byte(255)
  650.         message_end()
  651.     }
  652.  
  653. }
  654.  
  655. // ===============================================================================
  656. //  Event - DeathMsg
  657. // ===============================================================================
  658.  
  659. public Event_DeathMsg(id)
  660. {
  661.     new iVictim = read_data(2)
  662.  
  663.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  664.     {
  665.         if(g_mCTItems[i][ItemReset] == 2)
  666.             g_iItemIndex_CT[iVictim][i] = 0
  667.     }
  668.  
  669.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  670.     {
  671.         if(g_mFurienItems[i][ItemReset] == 2)
  672.         {
  673.             g_iItemIndex_T[iVictim][i] = 0
  674.         }
  675.     }
  676.  
  677.     g_bHasSuperKnife[iVictim] = false
  678.     g_bHasNoFlash[iVictim] = false
  679. }
  680.  
  681. // ===============================================================================
  682. //  Event - Weapon Pickup
  683. // ===============================================================================
  684.  
  685. public Event_WeaponPickup(id, weapon)
  686. {
  687.     if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
  688.     {
  689.         return PLUGIN_HANDLED
  690.     }
  691.     return PLUGIN_CONTINUE
  692. }
  693.  
  694. // ===============================================================================
  695. //  LogEvent - Round End
  696. // ===============================================================================
  697.  
  698. public LogEvent_RoundEnd()
  699. {
  700.     new players[32], pnum, tempid
  701.     get_players(players, pnum, "a")
  702.  
  703.     for( new i; i<pnum; i++ )
  704.     {
  705.         tempid = players[i]
  706.  
  707.         if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
  708.             g_iHP[tempid] = get_user_health(tempid)
  709.  
  710.         strip_user_weapons(tempid)
  711.         give_item(tempid, "weapon_knife")
  712.  
  713.         if(get_pcvar_num(cvar_gm))
  714.             set_user_godmode(tempid, 1)
  715.     }
  716. }      
  717.  
  718. // ===============================================================================
  719. //  Hamsandwich - Ham_Spawn
  720. // ===============================================================================
  721.  
  722. public func_HamSpawn(id)
  723. {
  724.     if(is_user_alive(id))
  725.     {
  726.         for( new i = 0; i < sizeof(g_mCTItems); i++ )
  727.         {
  728.             if(g_mCTItems[i][ItemReset] == 1)
  729.             {
  730.                 g_iItemIndex_CT[id][i] = 0
  731.             }
  732.         }
  733.  
  734.         for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  735.         {
  736.             if(g_mFurienItems[i][ItemReset] == 1)
  737.             {
  738.                 g_iItemIndex_T[id][i] = 0
  739.             }
  740.         }
  741.  
  742.         if(get_pcvar_num(cvar_hpsave))
  743.         {
  744.             if(g_iHP[id] < 100)
  745.                 g_iHP[id] = 100
  746.  
  747.             set_user_health(id, g_iHP[id])
  748.             g_iHP[id] = 100
  749.         }
  750.  
  751.         set_user_godmode(id, 0)
  752.         strip_user_weapons(id)
  753.         give_item(id, "weapon_knife")
  754.  
  755.         if(g_bHasAcceptedSettings[id])
  756.         {
  757.             func_ApplyGameplay(id)
  758.         }
  759.         else
  760.         {
  761.             func_AskForPermission(id)
  762.         }
  763.     }
  764. }
  765.  
  766. // ===============================================================================
  767. //  Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
  768. // ===============================================================================
  769.  
  770. public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  771. {
  772.     if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
  773.     {
  774.         SetHamParamFloat(4, damage * 3)
  775.     }
  776.  
  777.     if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
  778.         set_pdata_float(victim, fPainShock, 1.0, 5)
  779. }
  780.  
  781. // ===============================================================================
  782. //  Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
  783. // ===============================================================================
  784.  
  785. public func_HamTookKnife(iKnife)
  786. {
  787.     new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
  788.  
  789.     if(g_bHasSuperKnife[id])
  790.     {
  791.         entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
  792.     }
  793. }
  794.  
  795. // ===============================================================================
  796. //  Forwards - FM_Think - Credits go to ConnorMcLeod
  797. // ===============================================================================
  798.  
  799. public fw_Think(ent)
  800. {
  801.     if(ent == TaskEnt)
  802.     {
  803.         SpeedTask()
  804.         set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
  805.     }
  806. }
  807.  
  808. public SpeedTask()
  809. {
  810.     static i, target
  811.     static Float:velocity[3]
  812.     static Float:speed
  813.  
  814.     for(i = 1; i <= g_iMaxPlayers ; i++)
  815.     {
  816.         if(!is_user_connected(i)) continue
  817.  
  818.         target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  819.         pev(target, pev_velocity, velocity)
  820.  
  821.         speed = vector_length(velocity)
  822.         if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
  823.         {
  824.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
  825.         }
  826.         else if(speed > 5)
  827.         {
  828.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
  829.         }
  830.     }
  831. }
  832.  
  833. // ===============================================================================
  834. //  Forwards - FM_Touch
  835. // ===============================================================================
  836.  
  837. public fw_Touch( ent , id )
  838. {
  839.     if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
  840.         return FMRES_IGNORED;
  841.  
  842.     static szEntModel[32];
  843.     pev(ent , pev_model , szEntModel , 31);
  844.  
  845.     return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
  846. }
  847.  
  848. // ===============================================================================
  849. //  func_ApplyGameplay - Getting Players Team and selecting function
  850. // ===============================================================================
  851.  
  852. public func_ApplyGameplay(id)
  853. {
  854.     switch(cs_get_user_team(id))
  855.     {
  856.         case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
  857.         case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
  858.     }
  859. }
  860.  
  861. // ===============================================================================
  862. //  func_CTEquip - Giving Equipment for CTs
  863. // ===============================================================================
  864.  
  865. public func_CTEquip(id)
  866. {
  867.     if(get_pcvar_num(cvar_ct_starthe) > 0)
  868.     {
  869.         give_item(id, "weapon_hegrenade")
  870.         if(get_pcvar_num(cvar_ct_starthe) > 1)
  871.         {
  872.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
  873.         }
  874.     }
  875.  
  876.     if(get_pcvar_num(cvar_ct_startflash) > 0)
  877.     {
  878.         give_item(id, "weapon_flashbang")
  879.         if(get_pcvar_num(cvar_ct_startflash) > 1)
  880.         {
  881.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
  882.         }
  883.     }
  884.  
  885.     if(get_pcvar_num(cvar_ct_startsmoke) > 0)
  886.     {
  887.         give_item(id, "weapon_smokegrenade")
  888.         if(get_pcvar_num(cvar_ct_startsmoke) > 1)
  889.         {
  890.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
  891.         }
  892.     }
  893.  
  894.     set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
  895.     set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
  896.     ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
  897.     func_OpenGunMenu(id)
  898. }
  899.  
  900. // ===============================================================================
  901. //  func_TEquip - Giving Equipment for Ts
  902. // ===============================================================================
  903.  
  904. public func_TEquip(id)
  905. {
  906.     if(get_pcvar_num(cvar_t_starthe) > 0)
  907.     {
  908.         give_item(id, "weapon_hegrenade")
  909.         if(get_pcvar_num(cvar_t_starthe) > 1)
  910.         {
  911.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
  912.         }
  913.     }
  914.  
  915.     if(get_pcvar_num(cvar_t_startflash) > 0)
  916.     {
  917.         give_item(id, "weapon_flashbang")
  918.         if(get_pcvar_num(cvar_t_startflash) > 1)
  919.         {
  920.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
  921.         }
  922.     }
  923.  
  924.     if(get_pcvar_num(cvar_t_startsmoke) > 0)
  925.     {
  926.         give_item(id, "weapon_smokegrenade")
  927.         if(get_pcvar_num(cvar_t_startsmoke) > 1)
  928.         {
  929.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
  930.         }
  931.     }
  932.  
  933.     if(g_bWantsLowGrav[id])
  934.         set_user_gravity(id, get_pcvar_float(cvar_t_grav))
  935.  
  936.     set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
  937.     set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  938. }
  939.  
  940. // ===============================================================================
  941. //  func_AskForPermission - Asking player to set cl_ values.
  942. // ===============================================================================
  943.  
  944. public func_AskForPermission(id)
  945. {
  946.     new szMenuTitle[128]
  947.     formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
  948.     new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
  949.  
  950.     menu_additem(menu, "\wIgen","1",0);
  951.     menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
  952.  
  953.     menu_display(id, menu, 0);
  954.     return PLUGIN_HANDLED
  955. }
  956.  
  957. public func_AskForPermission_handler(id, menu, item)
  958. {
  959.     new data[6], szName[64];
  960.     new access, callback;
  961.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  962.     new key = str_to_num(data);
  963.  
  964.     switch(key)
  965.     {
  966.         case 1:
  967.         {
  968.             g_bHasAcceptedSettings[id] = true
  969.  
  970.             client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
  971.             client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
  972.             client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
  973.  
  974.             if(is_user_alive(id))
  975.                 func_ApplyGameplay(id)
  976.         }
  977.         case 2:
  978.         {
  979.             g_bHasAcceptedSettings[id] = false
  980.         }
  981.     }
  982. }
  983.  
  984. // ===============================================================================
  985. //  Stocks
  986. // ===============================================================================
  987.  
  988. stock Reduce(id, amount)
  989.     cs_set_user_money(id, cs_get_user_money(id) - amount)

Köszi szépen a skinek megvannak hozzá?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Furien mod
HozzászólásElküldve: 2018.07.02. 13:02 
Offline
Jómunkásember
Avatar

Csatlakozott: 2017.10.14. 00:48
Hozzászólások: 304
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 16 alkalommal
SidLuke írta:
Szia, tessék.
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <engine>
  8.  
  9. #define PLUGIN "Furien Mod"
  10. #define VERSION "64.2.6b"
  11. #define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27
  12.  
  13. // ===============================================================================
  14. //  Variables
  15. // ===============================================================================
  16.  
  17. /* Defines */
  18.  
  19. // Sets maximum of items for Furien Shop
  20. #define FURIEN_SHOP_MAX     8
  21.  
  22. // Sets maximum of items for CT Shop
  23. #define CT_SHOP_MAX         9
  24.  
  25. // Sets maximum of items for CT Gun Meun
  26. #define CT_WEAPON_MAX       5
  27.  
  28. // Delay after spawn to give stuff
  29. #define EQUIP_DELAY         0.1
  30.  
  31. // Maximum Health
  32. #define MAX_HP          200
  33.  
  34. #define TASK_ID_SWAPTEAMS 2000
  35. #define XO_WEAPON 4
  36. #define m_pPlayer 41
  37. #define XO_PLAYER   5
  38. #define m_pActiveItem   373
  39. #define DO_NOT_CHANGE   2
  40.  
  41. /* Enums */
  42.  
  43. enum _:ShopItems
  44. {
  45.     ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
  46. }
  47.  
  48. enum _:GunItems
  49. {
  50.     ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
  51. }
  52.  
  53. /* Entitys */
  54.  
  55. new TaskEnt
  56.  
  57. /* Hamsandwich */
  58.  
  59. new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
  60.  
  61. /* Booleans */
  62.  
  63. new bool:g_bHasAcceptedSettings[33]
  64. new bool:g_bHasWeapon[33]
  65. new bool:g_bWantsLowGrav[33]
  66. new bool:g_bHasSuperKnife[33]
  67. new bool:g_bHasNoFlash[33]
  68.  
  69. /* Integer */
  70.  
  71. new g_iMaxPlayers
  72.  
  73. new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
  74. new g_iItemIndex_CT[33][CT_SHOP_MAX]
  75.  
  76. new g_iHP[33]
  77.  
  78. /* CVars */
  79.  
  80. new cvar_gm, cvar_hpsave
  81.  
  82. /* CVars - Furien */
  83.  
  84. new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
  85. new cvar_t_grav, cvar_t_speed, cvar_t_fs
  86. new cvar_t_psf
  87.  
  88. /* CVars - CTs */
  89.  
  90. new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
  91. new cvar_ct_grav, cvar_ct_fs
  92. new cvar_ct_ammo_pri, cvar_ct_ammo_sec
  93.  
  94. /* Constants - Shop */
  95.  
  96. new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
  97.     {"Superknife",      16000,  "CORE",         "shop_t_givesk",    1,  DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
  98.     {"Deagle (14 Gojoval)", 10000,  "CORE",             "shop_t_givedgl",   1,  2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
  99.     {"50 HP",       4000,   "CORE",         "shop_t_givehp",    2,  1},
  100.     {"75 AP",       2000,   "CORE",         "shop_t_giveap",    2,  1},
  101.     {"1 HE Granat", 1000,   "CORE",         "shop_givehe",      2,  1},
  102.     {"1 Vakito Granat", 1000,   "CORE",         "shop_giveflash",   2,  1},
  103.     {"1 Fust Granat",   1000,   "CORE",         "shop_givesmoke",   1,  1},
  104.     {"Nincs vakulas",       500,    "CORE",         "shop_givenf",      1,  DO_NOT_CHANGE}
  105. }
  106.  
  107. new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
  108.     {"Defuse Kit",      300,    "CORE",             "shop_ct_givedefkit",       1,  2},
  109.     {"Para (200 Gojoval)",  16000,  "CORE",             "shop_ct_givepara",     1,  1},
  110.     {"50 HP",       4000,   "CORE",             "shop_ct_givehp",       2,  1},
  111.     {"75 AP",       3500,   "CORE",             "shop_ct_giveap",       1,  1},
  112.     {"1 HE Granat",     2000,   "CORE",             "shop_givehe",          1,  1},
  113.     {"1 Vakito Granat", 1000,   "CORE",             "shop_giveflash",       1,  1},
  114.     {"1 Fust Granat",   1000,   "CORE",             "shop_givesmoke",       1,  1},
  115.     {"Nincs vakulas",   4000,   "CORE",             "shop_givenf",          1,  DO_NOT_CHANGE},
  116.     {"Superdeagle",     16000,  "kfm_extra_sdgl.amxx",      "zp_extra_item_selected",   1,  1}
  117. }
  118.  
  119. /* Constants - Weapons */
  120.  
  121. new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
  122.     {"AK47 + Deagle",   "weapon_ak47",      CSW_AK47,       "weapon_deagle",    CSW_DEAGLE},
  123.     {"M4A1 + Deagle",   "weapon_m4a1",      CSW_M4A1,       "weapon_deagle",    CSW_DEAGLE},
  124.     {"Famas + Deagle",  "weapon_famas",     CSW_FAMAS,      "weapon_deagle",    CSW_DEAGLE},
  125.     {"MP5 + Deagle",    "weapon_mp5navy",   CSW_MP5NAVY,        "weapon_deagle",    CSW_DEAGLE},
  126.     {"XM1014 + Deagle",     "weapon_xm1014",    CSW_XM1014,     "weapon_deagle",    CSW_DEAGLE}
  127. }
  128.  
  129.  
  130. /* Constants */
  131.  
  132. const SWAP_PER_INTERVAL = 5
  133. const Float:SWAP_INTERVAL = 0.5
  134.  
  135. const fPainShock = 108
  136.  
  137. new const models[][] =
  138. {
  139.     "models/w_backpack.mdl",
  140.     "models/w_flashbang.mdl",
  141.     "models/w_hegrenade.mdl",
  142.     "models/w_smokegrenade.mdl"
  143. }
  144.  
  145. /* Misc */
  146.  
  147. new g_msgScreenFade
  148.  
  149. /* PreCache */
  150.  
  151. new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
  152.  
  153. // ===============================================================================
  154. //  plugin_precache - Files that will be downloaded
  155. // ===============================================================================
  156.  
  157. public plugin_precache()
  158. {
  159.     precache_model(sz_SuperKnife_V_Model)
  160. }
  161. // ===============================================================================
  162. //  plugin_init - Do not modify this unless you know what you're doing
  163. // ===============================================================================
  164.  
  165. public plugin_init()
  166. {
  167.     register_plugin(PLUGIN, VERSION, AUTHOR)
  168.  
  169.     /* CVars */
  170.  
  171.     register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
  172.     cvar_gm         = register_cvar("kfm_godend",       "1")
  173.     cvar_hpsave     = register_cvar("kfm_savehp",       "1")
  174.  
  175.     /* CVars - Furien */
  176.  
  177.     cvar_t_starthe      = register_cvar("kfm_t_starthe",    "1")
  178.     cvar_t_startflash   = register_cvar("kfm_t_startflash",     "2")
  179.     cvar_t_startsmoke   = register_cvar("kfm_t_startsmoke",     "1")
  180.  
  181.     cvar_t_grav     = register_cvar("kfm_t_grav",       "0.39")
  182.     cvar_t_speed        = register_cvar("kfm_t_speed",      "565")
  183.     cvar_t_fs       = register_cvar("kfm_t_fs",     "1")
  184.  
  185.     cvar_t_psf      = register_cvar("kfm_t_psf",        "1")
  186.  
  187.     /* CVars - CTs */
  188.  
  189.     cvar_ct_starthe     = register_cvar("kfm_ct_starthe",   "0")
  190.     cvar_ct_startflash  = register_cvar("kfm_ct_startflash",    "0")
  191.     cvar_ct_startsmoke  = register_cvar("kfm_ct_startsmoke",    "1")
  192.  
  193.     cvar_ct_grav        = register_cvar("kfm_ct_grav",      "1.0")
  194.     cvar_ct_fs      = register_cvar("kfm_ct_fs",        "0")
  195.  
  196.     cvar_ct_ammo_pri    = register_cvar("kfm_ct_ammo_primary",  "200")
  197.     cvar_ct_ammo_sec    = register_cvar("kfm_ct_ammo_secondary", "150")
  198.  
  199.     /* Commands */
  200.  
  201.     register_clcmd("say /guns",         "cmd_Guns")
  202.     register_clcmd("say_team /guns",    "cmd_Guns")
  203.     register_clcmd("say guns",      "cmd_Guns")
  204.     register_clcmd("say_team guns",     "cmd_Guns")
  205.     register_clcmd("guns",          "cmd_Guns")
  206.  
  207.     register_clcmd("say /gravity",      "cmd_Gravity")
  208.     register_clcmd("say_team /gravity",     "cmd_Gravity")
  209.     register_clcmd("say gravity",       "cmd_Gravity")
  210.     register_clcmd("say_team gravity",  "cmd_Gravity")
  211.     register_clcmd("gravity",       "cmd_Gravity")
  212.  
  213.     register_clcmd("say /shop",         "cmd_Shop")
  214.     register_clcmd("say_team /shop",    "cmd_Shop")
  215.     register_clcmd("say shop",      "cmd_Shop")
  216.     register_clcmd("say_team shop",     "cmd_Shop")
  217.     register_clcmd("shop",          "cmd_Shop")
  218.  
  219.     /* Events */
  220.  
  221.     register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" )
  222.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  223.     register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
  224.     register_event("DeathMsg", "Event_DeathMsg", "a")
  225.     register_event("WeapPickup", "Event_WeaponPickup", "b")
  226.  
  227.     /* Logevents */
  228.  
  229.     register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
  230.  
  231.     /* Hamsandwich */
  232.  
  233.     RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
  234.     RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
  235.     RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
  236.  
  237.     /* Forwards */
  238.  
  239.     register_forward(FM_Think, "fw_Think")
  240.     register_forward(FM_Touch, "fw_Touch")
  241.  
  242.     /* Misc */
  243.  
  244.     TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))  
  245.     set_pev(TaskEnt, pev_classname, "speedometer_think")
  246.     set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  247.  
  248.     g_msgScreenFade = get_user_msgid("ScreenFade")
  249.     g_iMaxPlayers = get_maxplayers()
  250. }
  251.  
  252. // ===============================================================================
  253. //  Client Connect
  254. // ===============================================================================
  255.  
  256. public client_putinserver(id)
  257. {
  258.     g_bHasAcceptedSettings[id] = false
  259.     g_bHasWeapon[id] = false
  260.     g_bHasSuperKnife[id] = false
  261.     g_bHasNoFlash[id] = false
  262.     g_bWantsLowGrav[id] = true
  263.  
  264.     g_iItemIndex_CT[id][0] = false
  265.     g_iItemIndex_T[id][0] = false
  266.     g_iHP[id] = 100
  267. }
  268.  
  269. // ===============================================================================
  270. //  Client Disconnect
  271. // ===============================================================================
  272.  
  273. public client_disconnect(id)
  274. {
  275.     g_bHasAcceptedSettings[id] = false
  276.     g_bHasWeapon[id] = false
  277.     g_bHasSuperKnife[id] = false
  278.     g_bHasNoFlash[id] = false
  279.     g_bWantsLowGrav[id] = true
  280.  
  281.     g_iItemIndex_CT[id][0] = false
  282.     g_iItemIndex_T[id][0] = false
  283.     g_iHP[id] = 100
  284. }
  285.  
  286. // ===============================================================================
  287. //  say /guns
  288. // ===============================================================================
  289.  
  290. public cmd_Guns(id)
  291. {
  292.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
  293.         func_OpenGunMenu(id)
  294. }
  295.  
  296. // ===============================================================================
  297. //  say /gravity
  298. // ===============================================================================
  299.  
  300. public cmd_Gravity(id)
  301. {
  302.     g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
  303.     client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
  304.  
  305.     if(cs_get_user_team(id) == CS_TEAM_T)
  306.         set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
  307. }
  308.  
  309. // ===============================================================================
  310. //  say /shop
  311. // ===============================================================================
  312.  
  313. public cmd_Shop(id)
  314. {
  315.     if(!is_user_alive(id))
  316.         return PLUGIN_HANDLED
  317.  
  318.     switch(cs_get_user_team(id))
  319.     {
  320.         case CS_TEAM_T  : func_OpenTShop(id)
  321.         case CS_TEAM_CT : func_OpenCTShop(id)
  322.     }
  323.  
  324.     return PLUGIN_HANDLED
  325. }
  326.  
  327. // ===============================================================================
  328. //  func_OpenTShop - Shop for Ts
  329. // ===============================================================================
  330.  
  331. public func_OpenTShop(id)
  332. {
  333.  
  334.     static szMenuTitle[128]
  335.     new szItemTitle[128]
  336.     new iAccess
  337.  
  338.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
  339.  
  340.     new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
  341.  
  342.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  343.     {
  344.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
  345.  
  346.         if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
  347.             iAccess = 0
  348.         else
  349.             iAccess = 1<<31
  350.  
  351.         menu_additem(menu, szItemTitle, _, iAccess)
  352.     }
  353.  
  354.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  355.     menu_display( id, menu, 0 );
  356.     return PLUGIN_HANDLED;
  357. }
  358.  
  359. public func_OpenTShop_handler(id, menu, item)
  360. {
  361.     if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id))
  362.     {
  363.         menu_destroy(menu)
  364.         return PLUGIN_HANDLED
  365.     }
  366.  
  367.     new szPlugin[64]
  368.  
  369.     if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
  370.         formatex(szPlugin, charsmax(szPlugin), "")
  371.     else
  372.         formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
  373.  
  374.     if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 )
  375.     {
  376.         callfunc_push_int(id)
  377.         callfunc_end()
  378.  
  379.         Reduce(id, g_mFurienItems[item][ItemCost])        
  380.         g_iItemIndex_T[id][item]++
  381.     }
  382.  
  383.  
  384.     return PLUGIN_HANDLED
  385. }
  386.  
  387. // ===============================================================================
  388. //  Item Handlers for Furien Shop
  389. // ===============================================================================
  390.  
  391. public shop_t_givesk(id)
  392. {
  393.     g_bHasSuperKnife[id] = true
  394.     engclient_cmd(id, "weapon_knife")
  395.     ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
  396. }
  397.  
  398. public shop_t_givedgl(id)
  399. {
  400.     give_item(id, "weapon_deagle")
  401.     cs_set_user_bpammo(id, CSW_DEAGLE, 7)
  402.     engclient_cmd(id, "weapon_deagle")
  403. }
  404.  
  405. public shop_t_givehp(id)
  406. {
  407.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  408. }
  409.  
  410. public shop_t_giveap(id)
  411.     set_user_armor(id, get_user_armor(id) + 75)
  412.  
  413. // ===============================================================================
  414. //  General Item Handlers
  415. // ===============================================================================
  416.  
  417.  
  418. public shop_givehe(id)
  419. {
  420.     if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
  421.     {
  422.         give_item(id, "weapon_hegrenade")
  423.         return PLUGIN_HANDLED
  424.     }
  425.  
  426.     cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
  427.     return PLUGIN_HANDLED
  428. }
  429.  
  430. public shop_giveflash(id)
  431. {
  432.     if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
  433.     {
  434.         give_item(id, "weapon_flashbang")
  435.         return PLUGIN_HANDLED
  436.     }
  437.  
  438.     cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)
  439.     return PLUGIN_HANDLED
  440. }
  441.  
  442. public shop_givesmoke(id)
  443. {
  444.     if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
  445.     {
  446.         give_item(id, "weapon_smokegrenade")
  447.         return PLUGIN_HANDLED
  448.     }
  449.  
  450.     cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)  
  451.     return PLUGIN_HANDLED
  452. }
  453.  
  454. public shop_givenf(id)
  455.     g_bHasNoFlash[id] = true
  456.  
  457. // ===============================================================================
  458. //  func_OpenCTShop - Shop for CTs
  459. // ===============================================================================
  460.  
  461. public func_OpenCTShop(id)
  462. {
  463.     if(!is_user_alive(id))
  464.         return PLUGIN_HANDLED
  465.  
  466.     static szMenuTitle[64]
  467.     new szItemTitle[64]
  468.     new iAccess
  469.  
  470.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
  471.  
  472.     new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
  473.  
  474.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  475.     {
  476.         formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
  477.  
  478.         if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
  479.             iAccess = 0
  480.         else
  481.             iAccess = 1<<31
  482.  
  483.         menu_additem(menu, szItemTitle, _, iAccess)
  484.     }
  485.  
  486.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  487.     menu_display( id, menu, 0 );
  488.     return PLUGIN_HANDLED;
  489. }
  490.  
  491. public func_OpenCTShop_handler(id, menu, item)
  492. {
  493.     if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) )
  494.     {
  495.         menu_destroy(menu)
  496.         return PLUGIN_HANDLED
  497.     }
  498.  
  499.     new szPlugin[64]
  500.  
  501.     if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
  502.         formatex(szPlugin, charsmax(szPlugin), "")
  503.     else
  504.         formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
  505.  
  506.     if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 )
  507.     {
  508.         callfunc_push_int(id)
  509.         callfunc_end()
  510.  
  511.         Reduce(id, g_mCTItems[item][ItemCost])
  512.         g_iItemIndex_CT[id][item]++
  513.     }
  514.  
  515.     return PLUGIN_HANDLED
  516. }
  517.  
  518. // ===============================================================================
  519. //  Item Handlers for CT Shop
  520. // ===============================================================================
  521.  
  522. public shop_ct_givedefkit(id)
  523.     cs_set_user_defuse(id, 1)
  524.  
  525. public shop_ct_givepara(id)
  526. {
  527.     give_item(id, "weapon_m249")
  528.     cs_set_user_bpammo(id, CSW_M249, 100)
  529. }
  530.  
  531. public shop_ct_givehp(id)
  532.     set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
  533.  
  534. public shop_ct_giveap(id)
  535.     set_user_armor(id, get_user_armor(id) + 75)
  536.  
  537.  
  538. // ===============================================================================
  539. //  func_OpenGunMenu - Gun Menu for CTs
  540. // ===============================================================================
  541.  
  542. public func_OpenGunMenu(id)
  543. {
  544.     if(!is_user_alive(id))
  545.         return PLUGIN_HANDLED
  546.  
  547.     static szMenuTitle[128]
  548.     new szItemTitle[128]
  549.  
  550.     formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
  551.  
  552.     new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
  553.  
  554.     for( new i = 0; i < sizeof(g_mCTWeapons); i++ )
  555.     {
  556.         formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
  557.  
  558.         menu_additem(menu, szItemTitle, _, 0)
  559.     }
  560.  
  561.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  562.     menu_display( id, menu, 0 );
  563.     return PLUGIN_HANDLED;
  564. }
  565.  
  566. public func_OpenGunMenu_handler(id, menu, item)
  567. {
  568.     if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
  569.     {
  570.         menu_destroy(menu)
  571.         return PLUGIN_HANDLED
  572.     }
  573.  
  574.     give_item(id, g_mCTWeapons[item][ItemPri])
  575.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
  576.  
  577.     give_item(id, g_mCTWeapons[item][ItemSec])
  578.     cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
  579.  
  580.     g_bHasWeapon[id] = true
  581.     return PLUGIN_HANDLED
  582. }
  583.  
  584. // ===============================================================================
  585. //  Event - @ CT Win - Credits go to Exolent
  586. // ===============================================================================
  587.  
  588. public Event_CTWin()
  589. {
  590.     static iCount, client;
  591.  
  592.     iCount = 0;
  593.  
  594.     for( client = 0; client <= g_iMaxPlayers; client++ )
  595.     {
  596.         if( is_user_connected( client ) )
  597.         {
  598.             if( iCount >= SWAP_PER_INTERVAL )
  599.             {
  600.                 set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
  601.             }
  602.  
  603.             switch( cs_get_user_team( client ) )
  604.             {
  605.                 case CS_TEAM_T:
  606.                 {
  607.                     cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
  608.  
  609.                     iCount++;
  610.                 }
  611.                 case CS_TEAM_CT:
  612.                 {
  613.                     cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
  614.  
  615.                     iCount++;
  616.                 }
  617.             }
  618.         }
  619.     }
  620.  
  621.     remove_task(TASK_ID_SWAPTEAMS)
  622. }
  623.  
  624. // ===============================================================================
  625. //  Event - CurWeapon
  626. // ===============================================================================
  627.  
  628. public Event_CurWeapon(id)
  629. {
  630.     if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  631.         set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  632. }
  633.  
  634. // ===============================================================================
  635. //  Event - Flashed
  636. // ===============================================================================
  637.  
  638. public Event_Flashed(id)
  639. {
  640.     if(g_bHasNoFlash[id])
  641.     {
  642.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
  643.         write_short(1)
  644.         write_short(1)
  645.         write_short(1)
  646.         write_byte(0)
  647.         write_byte(0)
  648.         write_byte(0)
  649.         write_byte(255)
  650.         message_end()
  651.     }
  652.  
  653. }
  654.  
  655. // ===============================================================================
  656. //  Event - DeathMsg
  657. // ===============================================================================
  658.  
  659. public Event_DeathMsg(id)
  660. {
  661.     new iVictim = read_data(2)
  662.  
  663.     for( new i = 0; i < sizeof(g_mCTItems); i++ )
  664.     {
  665.         if(g_mCTItems[i][ItemReset] == 2)
  666.             g_iItemIndex_CT[iVictim][i] = 0
  667.     }
  668.  
  669.     for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  670.     {
  671.         if(g_mFurienItems[i][ItemReset] == 2)
  672.         {
  673.             g_iItemIndex_T[iVictim][i] = 0
  674.         }
  675.     }
  676.  
  677.     g_bHasSuperKnife[iVictim] = false
  678.     g_bHasNoFlash[iVictim] = false
  679. }
  680.  
  681. // ===============================================================================
  682. //  Event - Weapon Pickup
  683. // ===============================================================================
  684.  
  685. public Event_WeaponPickup(id, weapon)
  686. {
  687.     if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
  688.     {
  689.         return PLUGIN_HANDLED
  690.     }
  691.     return PLUGIN_CONTINUE
  692. }
  693.  
  694. // ===============================================================================
  695. //  LogEvent - Round End
  696. // ===============================================================================
  697.  
  698. public LogEvent_RoundEnd()
  699. {
  700.     new players[32], pnum, tempid
  701.     get_players(players, pnum, "a")
  702.  
  703.     for( new i; i<pnum; i++ )
  704.     {
  705.         tempid = players[i]
  706.  
  707.         if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
  708.             g_iHP[tempid] = get_user_health(tempid)
  709.  
  710.         strip_user_weapons(tempid)
  711.         give_item(tempid, "weapon_knife")
  712.  
  713.         if(get_pcvar_num(cvar_gm))
  714.             set_user_godmode(tempid, 1)
  715.     }
  716. }      
  717.  
  718. // ===============================================================================
  719. //  Hamsandwich - Ham_Spawn
  720. // ===============================================================================
  721.  
  722. public func_HamSpawn(id)
  723. {
  724.     if(is_user_alive(id))
  725.     {
  726.         for( new i = 0; i < sizeof(g_mCTItems); i++ )
  727.         {
  728.             if(g_mCTItems[i][ItemReset] == 1)
  729.             {
  730.                 g_iItemIndex_CT[id][i] = 0
  731.             }
  732.         }
  733.  
  734.         for( new i = 0; i < sizeof(g_mFurienItems); i++ )
  735.         {
  736.             if(g_mFurienItems[i][ItemReset] == 1)
  737.             {
  738.                 g_iItemIndex_T[id][i] = 0
  739.             }
  740.         }
  741.  
  742.         if(get_pcvar_num(cvar_hpsave))
  743.         {
  744.             if(g_iHP[id] < 100)
  745.                 g_iHP[id] = 100
  746.  
  747.             set_user_health(id, g_iHP[id])
  748.             g_iHP[id] = 100
  749.         }
  750.  
  751.         set_user_godmode(id, 0)
  752.         strip_user_weapons(id)
  753.         give_item(id, "weapon_knife")
  754.  
  755.         if(g_bHasAcceptedSettings[id])
  756.         {
  757.             func_ApplyGameplay(id)
  758.         }
  759.         else
  760.         {
  761.             func_AskForPermission(id)
  762.         }
  763.     }
  764. }
  765.  
  766. // ===============================================================================
  767. //  Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
  768. // ===============================================================================
  769.  
  770. public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  771. {
  772.     if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
  773.     {
  774.         SetHamParamFloat(4, damage * 3)
  775.     }
  776.  
  777.     if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
  778.         set_pdata_float(victim, fPainShock, 1.0, 5)
  779. }
  780.  
  781. // ===============================================================================
  782. //  Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
  783. // ===============================================================================
  784.  
  785. public func_HamTookKnife(iKnife)
  786. {
  787.     new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
  788.  
  789.     if(g_bHasSuperKnife[id])
  790.     {
  791.         entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
  792.     }
  793. }
  794.  
  795. // ===============================================================================
  796. //  Forwards - FM_Think - Credits go to ConnorMcLeod
  797. // ===============================================================================
  798.  
  799. public fw_Think(ent)
  800. {
  801.     if(ent == TaskEnt)
  802.     {
  803.         SpeedTask()
  804.         set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
  805.     }
  806. }
  807.  
  808. public SpeedTask()
  809. {
  810.     static i, target
  811.     static Float:velocity[3]
  812.     static Float:speed
  813.  
  814.     for(i = 1; i <= g_iMaxPlayers ; i++)
  815.     {
  816.         if(!is_user_connected(i)) continue
  817.  
  818.         target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  819.         pev(target, pev_velocity, velocity)
  820.  
  821.         speed = vector_length(velocity)
  822.         if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
  823.         {
  824.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
  825.         }
  826.         else if(speed > 5)
  827.         {
  828.             set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
  829.         }
  830.     }
  831. }
  832.  
  833. // ===============================================================================
  834. //  Forwards - FM_Touch
  835. // ===============================================================================
  836.  
  837. public fw_Touch( ent , id )
  838. {
  839.     if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
  840.         return FMRES_IGNORED;
  841.  
  842.     static szEntModel[32];
  843.     pev(ent , pev_model , szEntModel , 31);
  844.  
  845.     return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
  846. }
  847.  
  848. // ===============================================================================
  849. //  func_ApplyGameplay - Getting Players Team and selecting function
  850. // ===============================================================================
  851.  
  852. public func_ApplyGameplay(id)
  853. {
  854.     switch(cs_get_user_team(id))
  855.     {
  856.         case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
  857.         case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
  858.     }
  859. }
  860.  
  861. // ===============================================================================
  862. //  func_CTEquip - Giving Equipment for CTs
  863. // ===============================================================================
  864.  
  865. public func_CTEquip(id)
  866. {
  867.     if(get_pcvar_num(cvar_ct_starthe) > 0)
  868.     {
  869.         give_item(id, "weapon_hegrenade")
  870.         if(get_pcvar_num(cvar_ct_starthe) > 1)
  871.         {
  872.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
  873.         }
  874.     }
  875.  
  876.     if(get_pcvar_num(cvar_ct_startflash) > 0)
  877.     {
  878.         give_item(id, "weapon_flashbang")
  879.         if(get_pcvar_num(cvar_ct_startflash) > 1)
  880.         {
  881.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
  882.         }
  883.     }
  884.  
  885.     if(get_pcvar_num(cvar_ct_startsmoke) > 0)
  886.     {
  887.         give_item(id, "weapon_smokegrenade")
  888.         if(get_pcvar_num(cvar_ct_startsmoke) > 1)
  889.         {
  890.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
  891.         }
  892.     }
  893.  
  894.     set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
  895.     set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
  896.     ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
  897.     func_OpenGunMenu(id)
  898. }
  899.  
  900. // ===============================================================================
  901. //  func_TEquip - Giving Equipment for Ts
  902. // ===============================================================================
  903.  
  904. public func_TEquip(id)
  905. {
  906.     if(get_pcvar_num(cvar_t_starthe) > 0)
  907.     {
  908.         give_item(id, "weapon_hegrenade")
  909.         if(get_pcvar_num(cvar_t_starthe) > 1)
  910.         {
  911.             cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
  912.         }
  913.     }
  914.  
  915.     if(get_pcvar_num(cvar_t_startflash) > 0)
  916.     {
  917.         give_item(id, "weapon_flashbang")
  918.         if(get_pcvar_num(cvar_t_startflash) > 1)
  919.         {
  920.             cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
  921.         }
  922.     }
  923.  
  924.     if(get_pcvar_num(cvar_t_startsmoke) > 0)
  925.     {
  926.         give_item(id, "weapon_smokegrenade")
  927.         if(get_pcvar_num(cvar_t_startsmoke) > 1)
  928.         {
  929.             cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
  930.         }
  931.     }
  932.  
  933.     if(g_bWantsLowGrav[id])
  934.         set_user_gravity(id, get_pcvar_float(cvar_t_grav))
  935.  
  936.     set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
  937.     set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
  938. }
  939.  
  940. // ===============================================================================
  941. //  func_AskForPermission - Asking player to set cl_ values.
  942. // ===============================================================================
  943.  
  944. public func_AskForPermission(id)
  945. {
  946.     new szMenuTitle[128]
  947.     formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
  948.     new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
  949.  
  950.     menu_additem(menu, "\wIgen","1",0);
  951.     menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
  952.  
  953.     menu_display(id, menu, 0);
  954.     return PLUGIN_HANDLED
  955. }
  956.  
  957. public func_AskForPermission_handler(id, menu, item)
  958. {
  959.     new data[6], szName[64];
  960.     new access, callback;
  961.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  962.     new key = str_to_num(data);
  963.  
  964.     switch(key)
  965.     {
  966.         case 1:
  967.         {
  968.             g_bHasAcceptedSettings[id] = true
  969.  
  970.             client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
  971.             client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
  972.             client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
  973.  
  974.             if(is_user_alive(id))
  975.                 func_ApplyGameplay(id)
  976.         }
  977.         case 2:
  978.         {
  979.             g_bHasAcceptedSettings[id] = false
  980.         }
  981.     }
  982. }
  983.  
  984. // ===============================================================================
  985. //  Stocks
  986. // ===============================================================================
  987.  
  988. stock Reduce(id, amount)
  989.     cs_set_user_money(id, cs_get_user_money(id) - amount)


Bocs hogy beleütöm az orromat, de te minden szövegbe beleírod a nevedet?
#define AUTHOR "BenT101" ///Szerkesztette SidLuke 2014.04.27

Ha már az én szerkesztett modomból is kivetted a nevemet :D

_________________
2015.07.11 Konfigolás kezdete
2017.09.27 Első nagy játékosbázissal rendelkező szerver | RtD
2018.08.24 Második nagy játékosbázissal rendelkező szerver | Black Night
2018.11.16 Konfigolás befejezése


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 7 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 27 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole