Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Wklejka uudo77ukw dodana przez Gość, 24.04.2014 19:07
semi clip
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146.
#include <amxmodx> #include <fakemeta> #pragma semicolon 1 #define DISTANCE 120 new g_iTeam[33]; new bool:g_bSolid[33]; new bool:g_bHasSemiclip[33]; new Float:g_fOrigin[33][3]; new bool:g_bSemiclipEnabled; new g_iForwardId[3]; new g_iMaxPlayers; new g_iCvar[3]; public plugin_init( ) { register_plugin( "Semiclip", "1.0", "killer." ); g_iCvar[0] = register_cvar( "semiclip_enabled", "1" ); g_iCvar[1] = register_cvar( "semiclip_teamclip", "0" ); g_iCvar[2] = register_cvar( "semiclip_transparancy", "1" ); register_forward( FM_ClientCommand, "fwdClientCommand" ); if( get_pcvar_num( g_iCvar[0] ) ) { g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" ); g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" ); g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); g_bSemiclipEnabled = true; } else g_bSemiclipEnabled = false; g_iMaxPlayers = get_maxplayers( ); } public fwdPlayerPreThink( plr ) { static id, last_think; if( last_think > plr ) { for( id = 1 ; id <= g_iMaxPlayers ; id++ ) { if( is_user_alive( id ) ) { if( get_pcvar_num( g_iCvar[1] ) ) g_iTeam[id] = get_user_team( id ); g_bSolid[id] = pev( id, pev_solid ) == SOLID_SLIDEBOX ? true : false; pev( id, pev_origin, g_fOrigin[id] ); } else g_bSolid[id] = false; } } last_think = plr; if( g_bSolid[plr] ) { for( id = 1 ; id <= g_iMaxPlayers ; id++ ) { if( g_bSolid[id] && get_distance_f( g_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr ) { if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] ) return FMRES_IGNORED; set_pev( id, pev_solid, SOLID_NOT ); g_bHasSemiclip[id] = true; } } } return FMRES_IGNORED; } public fwdPlayerPostThink( plr ) { static id; for( id = 1 ; id <= g_iMaxPlayers ; id++ ) { if( g_bHasSemiclip[id] ) { set_pev( id, pev_solid, SOLID_SLIDEBOX ); g_bHasSemiclip[id] = false; } } } public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset ) { if( player ) { if( g_bSolid[host] && g_bSolid[ent] && get_distance_f( g_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE ) { if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] ) return FMRES_IGNORED; set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless if( get_pcvar_num( g_iCvar[2] ) == 1 ) { set_es( es_handle, ES_RenderMode, kRenderTransAlpha ); set_es( es_handle, ES_RenderAmt, 85 ); } else if( get_pcvar_num( g_iCvar[2] ) == 2 ) { set_es( es_handle, ES_Effects, EF_NODRAW ); set_es( es_handle, ES_Solid, SOLID_NOT ); } } } return FMRES_IGNORED; } // is there a better way to detect changings of g_iCvar[0]? public fwdClientCommand( plr ) { // use the forwards just when needed, for good performance if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled ) { unregister_forward( FM_PlayerPreThink, g_iForwardId[0] ); unregister_forward( FM_PlayerPostThink, g_iForwardId[1] ); unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 ); g_bSemiclipEnabled = false; } else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled ) { g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" ); g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" ); g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); g_bSemiclipEnabled = true; } }
Dodanych wklejek: 11179
Powered By (Pav32) Pastebin © 2011