hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 16:28



Jelenlévő felhasználók

Jelenleg 314 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 314 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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: ReAPI - Weapons Float Effect
HozzászólásElküldve: 2020.12.15. 19:29 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2012.07.02. 17:41
Hozzászólások: 1641
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 247 alkalommal
ReAPI - Weapons Float Effect
Leírás:
  • Lebegő fegyverek effekt, akárcsak a GTA: San Andreas játékban, mind az eldobott fegyverek, mind a pályákon már alapból elhelyezett fegyverek esetében működik.
Használat:
  • new const Float:WEAPON_HEIGHT = 44.0 - A fegyver magassága a földtől.
Verzió:
  • v1.0.0
Követelmények:
  • Amx Mod X 1.9.0
  • ReGameDll
  • ReAPI
Eredeti link:
Készítő:
  • fl0wer
Kép:
Kép
Kép
Plugin:
  1. #pragma semicolon 1
  2.  
  3. #include <amxmodx>
  4. #include <hamsandwich>
  5. #include <fakemeta>
  6. #include <reapi>
  7.  
  8. new const Float:WEAPON_HEIGHT = 44.0;
  9. new const Float:WEAPON_MINS[3] = { -8.0, -8.0, -8.0 };
  10. new const Float:WEAPON_MAXS[3] = { 8.0, 8.0, 8.0 };
  11.  
  12. new const BAD_MODEL_ANGLE = (1<<CSW_MP5NAVY) | (1<<CSW_MAC10) | (1<<CSW_XM1014);
  13. new const HORIZONTAL_ANGLE[MAX_WEAPONS + 1] =
  14. {
  15.     0, // WEAPON_NONE
  16.     -61, // WEAPON_P228
  17.     0, // WEAPON_GLOCK
  18.     -68, // WEAPON_SCOUT
  19.     0, // WEAPON_HEGRENADE
  20.     -187, // WEAPON_XM1014
  21.     90, // WEAPON_C4
  22.     90, // WEAPON_MAC10
  23.     -119, // WEAPON_AUG
  24.     0, // WEAPON_SMOKEGRENADE
  25.     -87, // WEAPON_ELITE
  26.     -51, // WEAPON_FIVESEVEN
  27.     -67, // WEAPON_UMP45
  28.     -115, // WEAPON_SG550
  29.     16, // WEAPON_GALIL
  30.     -28, // WEAPON_FAMAS
  31.     -63, // WEAPON_USP
  32.     -107, // WEAPON_GLOCK18
  33.     -107, // WEAPON_AWP
  34.     -172, // WEAPON_MP5N
  35.     -95, // WEAPON_M249
  36.     -123, // WEAPON_M3
  37.     -58, // WEAPON_M4A1
  38.     -132, // WEAPON_TMP
  39.     -107, // WEAPON_G3SG1
  40.     0, // WEAPON_FLASHBANG
  41.     -107, // WEAPON_DEAGLE
  42.     -129, // WEAPON_SG552
  43.     -103, // WEAPON_AK47
  44.     0, // WEAPON_KNIFE
  45.     -124, // WEAPON_P90
  46. };
  47.  
  48. new const ARMOURY_MAPPER[MAX_WEAPONS + 1] = { CSW_MP5NAVY, CSW_TMP, CSW_P90,
  49.     CSW_MAC10, CSW_AK47, CSW_SG552, CSW_M4A1, CSW_AUG, CSW_SCOUT, CSW_G3SG1, CSW_AWP,
  50.     CSW_M3, CSW_XM1014, CSW_M249, CSW_FLASHBANG, CSW_HEGRENADE, CSW_VEST, CSW_VESTHELM,
  51.     CSW_SMOKEGRENADE, CSW_SHIELDGUN, CSW_FAMAS, CSW_SG550, CSW_GALIL, CSW_UMP45,
  52.     CSW_GLOCK18, CSW_USP, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE, };
  53.  
  54. enum
  55. {
  56.     WEAPONSTATE_DEFAULT,
  57.     WEAPONSTATE_CALCULATIONS,
  58.     WEAPONSTATE_FADEIN,
  59. }
  60.  
  61. public plugin_precache()
  62. {
  63.     register_plugin("Weapons Float Effect (Like in GTA: SA)", "1.0.0", "fl0wer");
  64.  
  65.     RegisterHam(Ham_Spawn, "armoury_entity", "@CArmoury_Spawn_Post", true);
  66.     RegisterHam(Ham_CS_Restart, "armoury_entity", "@CArmoury_Restart_Post", true);
  67.     RegisterHam(Ham_SetObjectCollisionBox, "armoury_entity", "@CArmoury_SetObjectCollisionBox_Pre", false);
  68. }
  69.  
  70. public plugin_init()
  71. {
  72.     RegisterHookChain(RG_CWeaponBox_SetModel, "@CWeaponBox_SetModel_Post", true);
  73.  
  74.     RegisterHam(Ham_Think, "weaponbox", "@CWeaponBox_Think_Pre", false);
  75.     RegisterHam(Ham_Touch, "weaponbox", "@CWeaponBox_Touch_Pre", false);
  76.     RegisterHam(Ham_SetObjectCollisionBox, "weaponbox", "@CWeaponBox_SetObjectCollisionBox_Pre", false);
  77. }
  78.  
  79. @CWeaponBox_SetModel_Post(id, model[])
  80. {
  81.     if (rg_get_weaponbox_id(id) == WEAPON_NONE)
  82.         return;
  83.  
  84.     set_entvar(id, var_iuser1, WEAPONSTATE_CALCULATIONS);
  85.     set_entvar(id, var_gravity, 2.0);
  86.     set_entvar(id, var_effects, get_entvar(id, var_effects) | EF_NODRAW);
  87.     set_entvar(id, var_fuser1, Float:get_entvar(id, var_nextthink));
  88.     set_entvar(id, var_nextthink, get_gametime() + 0.3);
  89. }
  90.  
  91. @CWeaponBox_Think_Pre(id)
  92. {
  93.     switch (get_entvar(id, var_iuser1))
  94.     {
  95.         case WEAPONSTATE_CALCULATIONS:
  96.         {
  97.             set_entvar(id, var_nextthink, get_gametime() + 0.1);
  98.  
  99.             if (~get_entvar(id, var_flags) & FL_ONGROUND)
  100.                 return HAM_SUPERCEDE;
  101.  
  102.             new weaponId = any:rg_get_weaponbox_id(id);
  103.             new Float:vecOrigin[3];
  104.             new Float:vecAngles[3];
  105.  
  106.             get_entvar(id, var_origin, vecOrigin);
  107.             get_entvar(id, var_angles, vecAngles);
  108.  
  109.             vecOrigin[2] += WEAPON_HEIGHT;
  110.  
  111.             vecAngles[0] = float(HORIZONTAL_ANGLE[weaponId]);
  112.             vecAngles[1] += 90.0;
  113.             vecAngles[2] = 90.0;
  114.  
  115.             // Flip Models with Wrong Angle
  116.             if ((1<<weaponId) & BAD_MODEL_ANGLE)
  117.                 vecAngles[1] += 180.0;
  118.  
  119.             set_entvar(id, var_iuser1, WEAPONSTATE_FADEIN);
  120.             set_entvar(id, var_effects, get_entvar(id, var_effects) & ~EF_NODRAW);
  121.             set_entvar(id, var_rendermode, kRenderTransTexture);
  122.  
  123.             SetFloatEffect(id, vecOrigin, vecAngles);
  124.             return HAM_SUPERCEDE;
  125.         }
  126.         case WEAPONSTATE_FADEIN: // Fade in
  127.         {
  128.             new Float:renderamt = Float:get_entvar(id, var_renderamt);
  129.  
  130.             if (renderamt >= 255.0)
  131.             {
  132.                 set_entvar(id, var_iuser1, WEAPONSTATE_DEFAULT);
  133.                 set_entvar(id, var_nextthink, get_entvar(id, var_fuser1));
  134.             }
  135.             else
  136.             {
  137.                 set_entvar(id, var_renderamt, floatmin(renderamt + 64.0, 255.0));
  138.                 set_entvar(id, var_nextthink, get_gametime() + 0.1);
  139.             }
  140.  
  141.             return HAM_SUPERCEDE;
  142.         }
  143.     }
  144.  
  145.     // Allow to call Think to destroy items
  146.     return HAM_IGNORED;
  147. }
  148.  
  149. @CWeaponBox_Touch_Pre(id, other)
  150. {
  151.     if (get_entvar(id, var_iuser1) != WEAPONSTATE_DEFAULT)
  152.         return;
  153.  
  154.     // Allow weapon boxes to pick up
  155.     set_entvar(id, var_flags, get_entvar(id, var_flags) | FL_ONGROUND);
  156. }
  157.  
  158. @CWeaponBox_SetObjectCollisionBox_Pre(id)
  159. {
  160.     SetObjectCollisionBox(id);
  161.     return HAM_SUPERCEDE;
  162. }
  163.  
  164. @CArmoury_Spawn_Post(id)
  165. {
  166.     new weaponId = ARMOURY_MAPPER[get_member(id, m_Armoury_iItem)];
  167.     new Float:vecOrigin[3];
  168.     new Float:vecAngles[3];
  169.  
  170.     engfunc(EngFunc_DropToFloor, id);
  171.  
  172.     get_entvar(id, var_origin, vecOrigin);
  173.     get_entvar(id, var_angles, vecAngles);
  174.  
  175.     vecOrigin[2] += WEAPON_HEIGHT;
  176.  
  177.     if ((1<<weaponId) & ((1<<CSW_VEST) | (1<<CSW_VESTHELM)))
  178.         vecAngles[0] = -90.0;
  179.     else
  180.     {
  181.         vecAngles[0] = float(HORIZONTAL_ANGLE[weaponId]);
  182.  
  183.         // Flip Models with Wrong Angle
  184.         if ((1<<weaponId) & BAD_MODEL_ANGLE)
  185.             vecAngles[1] += 180.0;
  186.     }
  187.  
  188.     vecAngles[1] += 90.0;
  189.     vecAngles[2] = 90.0;
  190.  
  191.     SetFloatEffect(id, vecOrigin, vecAngles);
  192. }
  193.  
  194. @CArmoury_Restart_Post(id)
  195. {
  196.     if (get_entvar(id, var_effects) & EF_NODRAW)
  197.         return;
  198.  
  199.     new Float:vecOrigin[3];
  200.     get_entvar(id, var_origin, vecOrigin);
  201.  
  202.     vecOrigin[2] += WEAPON_HEIGHT;
  203.  
  204.     engfunc(EngFunc_SetOrigin, id, vecOrigin);
  205. }
  206.  
  207. @CArmoury_SetObjectCollisionBox_Pre(id)
  208. {
  209.     SetObjectCollisionBox(id);
  210.     return HAM_SUPERCEDE;
  211. }
  212.  
  213. SetObjectCollisionBox(id)
  214. {
  215.     new Float:vecOrigin[3];
  216.     new Float:vecAbsMin[3];
  217.     new Float:vecAbsMax[3];
  218.  
  219.     get_entvar(id, var_origin, vecOrigin);
  220.  
  221.     for (new i = 0; i < 3; i++)
  222.     {
  223.         vecAbsMin[i] = vecOrigin[i] + WEAPON_MINS[i];
  224.         vecAbsMax[i] = vecOrigin[i] + WEAPON_MAXS[i];
  225.     }
  226.  
  227.     set_entvar(id, var_absmin, vecAbsMin);
  228.     set_entvar(id, var_absmax, vecAbsMax);
  229. }
  230.  
  231. SetFloatEffect(id, Float:vecOrigin[3], Float:vecAngles[3])
  232. {
  233.     set_entvar(id, var_angles, vecAngles);
  234.     set_entvar(id, var_avelocity, Float:{ 0.0, -90.0, 0.0 });
  235.  
  236.     // Allow rotation by physics calls
  237.     set_entvar(id, var_gravity, 0.000000001);
  238.     set_entvar(id, var_velocity, Float:{ 0.0, 0.0, 0.000000001 });
  239.  
  240.     engfunc(EngFunc_SetOrigin, id, vecOrigin);
  241. }

_________________
Kép


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  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 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