HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <xs>
  4.  
  5. new g_feet[33]
  6. new g_infotarget_string_t
  7.  
  8. public plugin_init()
  9. {
  10. register_plugin("Showing feet", "1.0", "Fai")
  11.  
  12. // For updating the created legs
  13. register_forward(FM_AddToFullPack, "fw_AddToFullPack_Post", 1)
  14.  
  15. // Used for changing the model of the created "legs"
  16. register_forward(FM_ClientUserInfoChanged, "fw_InfoChanged_Post", 1)
  17.  
  18. register_cvar("show_feet_version", "1.0")
  19.  
  20. g_infotarget_string_t = engfunc(EngFunc_AllocString, "info_target")
  21. }
  22.  
  23. // Create new legs when a client has joined the server
  24. public client_putinserver(id)
  25. {
  26. create_feet(id)
  27. }
  28.  
  29. // Legs of a client should be deleted after the client exited the game
  30. public client_disconnect(id)
  31. {
  32. if (!g_feet[id])
  33. return;
  34.  
  35. engfunc(EngFunc_RemoveEntity, g_feet[id])
  36. g_feet[id] = 0
  37. }
  38.  
  39. public fw_AddToFullPack_Post(es, e, ent, host, host_flags, player, p_set)
  40. {
  41. if (player)
  42. return;
  43.  
  44. if (ent != g_feet[host])
  45. return;
  46.  
  47. if (!is_user_alive(host))
  48. return;
  49.  
  50. static Float:origin[3], Float:angles[3], Float:offset[3], Float:framerate
  51. pev(host, pev_origin, origin)
  52. pev(host, pev_v_angle, angles)
  53. pev(host, pev_framerate, framerate)
  54.  
  55. if (angles[0] > 60.0)
  56. {
  57. set_es(es, ES_RenderFx, kRenderFxNone)
  58. set_es(es, ES_RenderColor, {255, 255, 255})
  59. set_es(es, ES_RenderMode, kRenderNormal)
  60. set_es(es, ES_RenderAmt, 16)
  61. }
  62.  
  63. angles[0] = 0.0
  64.  
  65. angle_vector(angles, ANGLEVECTOR_FORWARD, offset)
  66. xs_vec_mul_scalar(offset, -32.0, offset)
  67. xs_vec_add(origin, offset, origin)
  68.  
  69. pev(host, pev_velocity, offset)
  70. xs_vec_mul_scalar(offset, 0.15, offset)
  71. xs_vec_add(origin, offset, origin)
  72.  
  73. angles[0] = 30.0
  74.  
  75. engfunc(EngFunc_SetOrigin, ent, origin)
  76. set_es(es, ES_Angles, angles)
  77. set_es(es, ES_FrameRate, framerate)
  78. set_es(es, ES_Sequence, pev(host, pev_gaitsequence))
  79. }
  80.  
  81. public fw_InfoChanged_Post(id)
  82. {
  83. // Prevent that the server crashes when a player set his "model" info himself and connects to the server..
  84. if (!is_user_connected(id))
  85. return;
  86.  
  87. static model[32]
  88. get_user_info(id, "model", model, charsmax(model))
  89. update_feet(id, model)
  90. }
  91.  
  92. // Reusable codes..
  93. create_feet(id)
  94. {
  95. g_feet[id] = engfunc(EngFunc_CreateNamedEntity, g_infotarget_string_t)
  96.  
  97. if (!pev_valid(g_feet[id]))
  98. {
  99. g_feet[id] = 0
  100. return;
  101. }
  102.  
  103. static Float:origin[3]
  104. pev(id, pev_origin, origin)
  105. engfunc(EngFunc_SetOrigin, g_feet[id], Float:{8192.0,8192.0,8192.0})
  106.  
  107. set_pev(g_feet[id], pev_movetype, MOVETYPE_PUSHSTEP)
  108. set_pev(g_feet[id], pev_owner, id)
  109.  
  110. set_pev(g_feet[id], pev_renderfx, kRenderFxGlowShell)
  111. set_pev(g_feet[id], pev_rendercolor, {0, 0, 0})
  112. set_pev(g_feet[id], pev_rendermode, kRenderTransAlpha)
  113. set_pev(g_feet[id], pev_renderamt, 175)
  114. }
  115.  
  116. update_feet(id, const feet_mdl[])
  117. {
  118. static model[128]
  119. format(model, charsmax(model), "models/player/%s/%s.mdl", feet_mdl, feet_mdl)
  120. engfunc(EngFunc_SetModel, g_feet[id], model)
  121. }
  122.