HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <fun>
  4. #include <fakemeta>
  5.  
  6. #define PLUGIN "DeRoiD's Knife Menu"
  7. #define VERSION "2.0"
  8. #define AUTHOR "DeRoiD"
  9.  
  10. new FajlUt[] = "addons/amxmodx/configs/kesmenu/kesek.ini"
  11.  
  12. new KesNeve[128], Kes[33], Float:KesDmg[33], KesRegeneracio[33], Float:RegeneracioIdo[33]
  13. new KesNeveValaszt[20][64]
  14. new cvar_KesReg, cvar_KesRegIdo, cvar_KesGomb
  15.  
  16. public plugin_precache() {
  17. new Fajl[256]
  18. format(Fajl, charsmax(Fajl), FajlUt)
  19. if(file_exists(Fajl))
  20. {
  21. new KesBuff[256], Sor, SorBuff[32]
  22. new vKesMdlOlvas[64], vKesMdl[64]
  23. new pKesMdlOlvas[64], pKesMdl[64]
  24. for(new i; i < file_size(Fajl, 1) ; i++)
  25. {
  26. read_file(Fajl, i, KesBuff, 63, Sor)
  27. format(SorBuff, 1, "%s", KesBuff)
  28. if(equal(SorBuff, ";"))
  29. continue
  30. parse(KesBuff, vKesMdlOlvas, 63, pKesMdlOlvas, 63)
  31. remove_quotes(vKesMdlOlvas)
  32. remove_quotes(pKesMdlOlvas)
  33. format(vKesMdl, charsmax(vKesMdl), "models/%s.mdl", vKesMdlOlvas)
  34. format(pKesMdl, charsmax(pKesMdl), "models/%s.mdl", pKesMdlOlvas)
  35. if(!equal(vKesMdl, "models/.mdl") && !equal(pKesMdl, "models/.mdl"))
  36. {
  37. precache_model(vKesMdl)
  38. precache_model(pKesMdl)
  39. }
  40. else if(!equal(vKesMdl, "models/.mdl"))
  41. {
  42. precache_model(vKesMdl)
  43. }
  44. else if(!equal(pKesMdl, "models/.mdl"))
  45. {
  46. precache_model(pKesMdl)
  47. }
  48. }
  49. }
  50. }
  51. public plugin_init() {
  52. register_plugin(PLUGIN, VERSION, AUTHOR)
  53. register_dictionary("kesmenu.txt")
  54. register_clcmd("say /knife", "KesMenu")
  55. register_clcmd("say /kes", "KesMenu")
  56. register_clcmd("drop", "KesMenuGomb")
  57.  
  58. set_task(120.0, "KesMenuUzenet", 0, _, _, "b")
  59. register_event("CurWeapon","KesModel","be","1=1")
  60.  
  61. RegisterHam(Ham_Player_PreThink, "player", "RegThink")
  62. RegisterHam(Ham_TakeDamage, "player", "KesSebzes", 0)
  63.  
  64. cvar_KesReg = register_cvar("KesReg", "5")
  65. cvar_KesGomb = register_cvar("KesGomb", "0")
  66. cvar_KesRegIdo = register_cvar("KesRegIdo", "5.0")
  67. }
  68. public KesMenuUzenet() {
  69. client_print(0, print_chat, "%L", LANG_PLAYER, "UZENET", KesNeve)
  70. }
  71. public KesSebzes(victim, inflictor, attacker, Float:damage)
  72. {
  73. if(is_user_alive(attacker) && is_user_alive(victim))
  74. {
  75. new Fegyver = get_user_weapon(attacker)
  76. if(Fegyver == CSW_KNIFE)
  77. SetHamParamFloat(4, damage * KesDmg[attacker])
  78. }
  79. }
  80. public KesMenuGomb(id) {
  81. if(get_pcvar_num(cvar_KesGomb) == 1){
  82. KesMenu(id)
  83. return PLUGIN_HANDLED
  84. }
  85. else
  86. {
  87. return PLUGIN_CONTINUE
  88. }
  89. return PLUGIN_HANDLED
  90. }
  91. public RegThink(id)
  92. {
  93. new Fegyver = get_user_weapon(id)
  94. if(get_gametime() > RegeneracioIdo[id] && Fegyver == CSW_KNIFE
  95. && KesRegeneracio[id] == 1 && get_user_health(id) < 100)
  96. {
  97. RegeneracioIdo[id] = get_gametime() + get_pcvar_float(cvar_KesRegIdo)
  98. if(get_user_health(id) > 100-get_pcvar_num(cvar_KesReg))
  99. set_user_health(id, 100)
  100. else
  101. set_user_health(id, get_user_health(id)+get_pcvar_num(cvar_KesReg))
  102. message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  103. write_short(1<<10)
  104. write_short(1<<10)
  105. write_short(0x0000)
  106. write_byte(10)
  107. write_byte(200)
  108. write_byte(10)
  109. write_byte(75)
  110. message_end()
  111. }
  112. }
  113. public KesKepessegNullazas(id) {
  114. KesRegeneracio[id] = 0
  115. set_user_maxspeed(id, 250.0)
  116. set_user_gravity(id, 1.0)
  117. KesDmg[id] = 1.0
  118. set_user_footsteps(id, 0)
  119. }
  120. public KesModel(id) {
  121. new Fegyver = get_user_weapon(id)
  122.  
  123. if(!is_user_alive(id) || !is_user_connected(id) || Fegyver != CSW_KNIFE)
  124. {
  125. KesKepessegNullazas(id)
  126. return
  127. }
  128.  
  129. new Fajl[256]
  130. format(Fajl, charsmax(Fajl), FajlUt)
  131. if(file_exists(Fajl))
  132. {
  133. new KesBuff[256], Sor, Szam
  134. new vKesMdlOlvas[256], vKesMdl[256]
  135. new pKesMdlOlvas[256], pKesMdl[256]
  136. new StringKesMod[256], KesMod, StringKesFloat[64], Float:KesFloat
  137. for(new i; i < file_size(Fajl, 1) ; i++)
  138. {
  139. Szam++
  140. read_file(Fajl, i, KesBuff, 256, Sor)
  141. parse(KesBuff, vKesMdlOlvas, 256, pKesMdlOlvas, 256, KesNeve, 256, StringKesMod,
  142. 256, StringKesFloat, 256)
  143. KesMod = str_to_num(StringKesMod)
  144. if(!equal(StringKesFloat, ""))
  145. KesFloat = str_to_float(StringKesFloat)
  146. log_amx("dmg: %3.2f", KesFloat)
  147. remove_quotes(vKesMdlOlvas)
  148. remove_quotes(pKesMdlOlvas)
  149. format(vKesMdl, charsmax(vKesMdl), "models/%s.mdl", vKesMdlOlvas)
  150. if(!equal(pKesMdlOlvas, ""))
  151. format(pKesMdl, charsmax(pKesMdl), "models/%s.mdl", pKesMdlOlvas)
  152. if(Kes[id] == Szam){
  153. if(KesMod == 1){
  154. set_user_gravity(id, KesFloat)
  155. KesRegeneracio[id] = 0
  156. set_user_maxspeed(id, 250.0)
  157. KesDmg[id] = 1.0
  158. set_user_footsteps(id, 0)
  159. }
  160. else if(KesMod == 2){
  161. set_user_maxspeed(id, KesFloat)
  162. KesRegeneracio[id] = 0
  163. set_user_gravity(id, 1.0)
  164. KesDmg[id] = 1.0
  165. set_user_footsteps(id, 0)
  166. }
  167. else if(KesMod == 3){
  168. KesDmg[id] = KesFloat
  169. KesRegeneracio[id] = 0
  170. set_user_maxspeed(id, 250.0)
  171. set_user_gravity(id, 1.0)
  172. set_user_footsteps(id, 0)
  173. }
  174. else if(KesMod == 4){
  175. set_user_footsteps(id, 1)
  176. KesRegeneracio[id] = 0
  177. set_user_maxspeed(id, 250.0)
  178. set_user_gravity(id, 1.0)
  179. KesDmg[id] = 1.0
  180. }
  181. else if(KesMod == 5){
  182. KesRegeneracio[id] = 1
  183. set_user_maxspeed(id, 250.0)
  184. set_user_gravity(id, 1.0)
  185. KesDmg[id] = 1.0
  186. set_user_footsteps(id, 0)
  187. }
  188. else
  189. {
  190. KesKepessegNullazas(id)
  191. }
  192. set_pev(id, pev_viewmodel2, vKesMdl)
  193. if(!equal(pKesMdlOlvas, ""))
  194. set_pev(id, pev_weaponmodel2, pKesMdl)
  195. }
  196. }
  197. }
  198. }
  199. public KesMenu(id) {
  200. new Fajl[256]
  201. format(Fajl, charsmax(Fajl), FajlUt)
  202. if(file_exists(Fajl))
  203. {
  204. new KesString[256]
  205. format(KesString, 255, "DeRoiD's Knife Menu")
  206. new menu = menu_create(KesString, "KesMenuValasztas")
  207. new KesBuff[256], Sor, Szam, SorBuff[32]
  208. new KesMenuPont, StringKesMenuPont[32]
  209. for(new i; i < file_size(Fajl, 1) ; i++)
  210. {
  211. KesMenuPont++
  212. Szam++
  213. new vKesMdl[64], pKesMdl[64]
  214. read_file(Fajl, i, KesBuff, 255, Sor)
  215. format(SorBuff, 1, "%s", KesBuff)
  216. if(equal(SorBuff, ";"))
  217. continue
  218. parse(KesBuff, vKesMdl, 63, pKesMdl, 63, KesNeve, 63)
  219. format(KesString, sizeof(KesString) - 1, KesNeve)
  220. replace_all(KesNeve, 127, "[f]", "\w")
  221. replace_all(KesNeve, 127, "[s]", "\y")
  222. replace_all(KesNeve, 127, "[sz]", "\d")
  223. replace_all(KesNeve, 127, "[p]", "\r")
  224. format(StringKesMenuPont, charsmax(StringKesMenuPont), "%d", KesMenuPont)
  225. menu_additem(menu, KesNeve, StringKesMenuPont)
  226. format(KesNeveValaszt[Szam], 63, "%s", KesNeve)
  227. }
  228. menu_display(id, menu)
  229. }
  230. }
  231. public KesMenuValasztas(id, menu, item){
  232. if(item == MENU_EXIT)
  233. {
  234. menu_destroy(menu)
  235. return
  236. }
  237. new data[9], name[64], eKes = Kes[id]
  238. new access, callback
  239. menu_item_getinfo(menu, item, access, data,charsmax(data),
  240. name, charsmax(name), callback)
  241.  
  242. Kes[id] = str_to_num(data)
  243.  
  244. if(eKes != Kes[id])
  245. KesModel(id)
  246.  
  247. replace_all(KesNeveValaszt[Kes[id]], 63, "\w", " ")
  248. replace_all(KesNeveValaszt[Kes[id]], 63, "\y", " ")
  249. replace_all(KesNeveValaszt[Kes[id]], 63, "\d", " ")
  250. replace_all(KesNeveValaszt[Kes[id]], 63, "\r", " ")
  251.  
  252. client_print(id, print_chat, "%L", LANG_PLAYER, "VALASZTAS", KesNeveValaszt[Kes[id]])
  253. }
  254. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  255. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  256. */
  257.