1. M16 Пользователь

    Регистрация:
    13.06.16
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Ребят помогите пожалуйста вопшим мучаюсь 3 день
    с плагином лечебная граната, проблема такая я это плагин переделал только для админов, все работает но в другом проблема когда кидает обычный игрок дымовую гранату нет дыма. помогите пож как сделать чтобы дым был! вот исходник
    PHP:
    1. #include <amxmodx>
    2. #include <fakemeta>
    3. #include < cstrike >
    4. #include < fun >
    5. #include < engine >
    6.  
    7. #include <amxmisc>
    8.  
    9. #define PLUGIN_NAME "Nade Health"
    10. #define PLUGIN_VERSION "0.1"
    11. #define PLUGIN_AUTHOR "u"
    12.  
    13. #define V_MODEL "models/v_he_mk_nade.mdl"
    14. #define P_MODEL "models/p_he_mk_nade.mdl"
    15. #define W_MODEL "models/w_he_mk_nade.mdl"
    16.  
    17. #define GIVE_HP 30
    18.  
    19. #define SMOKE_SCALE 30
    20. #define SMOKE_FRAMERATE 12
    21.  
    22. new ExplSpr, ExplSpr2, ExplSpr3, ExplYO, g_iSpriteCircle
    23.  
    24. // do not edit
    25. new const g_sound_explosion[]="weapons/sg_explode.wav"
    26. new const g_classname_grenade[]="grenade"
    27. new g_eventid_createsmoke
    28.  
    29. public plugin_init(){
    30. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    31.  
    32. register_forward(FM_EmitSound,"forward_emitsound")
    33. register_forward(FM_PlaybackEvent,"forward_playbackevent")
    34. register_event("CurWeapon","CurWeapon","be","1=1")
    35. register_forward( FM_SetModel,"forward_model", 1 )
    36.  
    37. // we do not precaching, but retrieving the indexes
    38. g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1,"events/createsmoke.sc")
    39. }
    40.  
    41. public plugin_precache()
    42. {
    43. ExplSpr = precache_model("sprites/gp_1.spr");
    44. ExplSpr2 = precache_model("sprites/gp_2.spr");
    45. ExplSpr3 = precache_model("sprites/gp_3.spr");
    46. precache_sound("woomen_expr.wav")
    47. ExplYO = precache_model("sprites/woomensx.spr");
    48.  
    49. g_iSpriteCircle = precache_model("sprites/shockwave.spr");
    50.  
    51. precache_model(V_MODEL)
    52. precache_model(W_MODEL)
    53. precache_model(P_MODEL)
    54. }
    55.  
    56. public CurWeapon(id)
    57. {
    58. if(is_user_alive(id)&& is_user_admin(id))
    59. {
    60. if(get_user_weapon(id)== CSW_SMOKEGRENADE)
    61. {
    62. set_pev(id, pev_viewmodel2, V_MODEL)
    63. set_pev(id, pev_weaponmodel2, P_MODEL)
    64. }
    65. }
    66. }
    67.  
    68. public forward_model( entity, const model[])
    69. {
    70. if(!pev_valid( entity )) return FMRES_IGNORED;
    71.  
    72. if(equal( model,"models/w_smokegrenade.mdl"))
    73. {
    74. engfunc ( EngFunc_SetModel, entity, W_MODEL );
    75. }
    76. return FMRES_IGNORED;
    77. }
    78.  
    79. public forward_emitsound(ent, channel, const sound[])
    80. {
    81. if (!equal(sound, g_sound_explosion)||!is_grenade(ent))
    82. return FMRES_IGNORED
    83.  
    84. static Float:eek:rigin[3]
    85. static id
    86. id = pev(ent, pev_owner)
    87. pev(ent, pev_origin, origin)
    88.  
    89. if(!is_user_admin(id)){
    90. return FMRES_IGNORED
    91. }
    92.  
    93. engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON,"woomen_expr.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    94. //engfunc(EngFunc_RemoveEntity, ent)
    95. //create_smoke(origin)
    96.  
    97. message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    98. write_byte(TE_SPRITETRAIL)//Спрайт захвата
    99. write_coord(floatround(origin[0]))
    100. write_coord(floatround(origin[1]))
    101. write_coord(floatround(origin[2])+20)
    102. write_coord(floatround(origin[0]))
    103. write_coord(floatround(origin[1]))
    104. write_coord(floatround(origin[2])+80)
    105. write_short(ExplSpr)
    106. write_byte(20)
    107. write_byte(20)
    108. write_byte(4)
    109. write_byte(20)
    110. write_byte(10)
    111. message_end()
    112.  
    113. message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    114. write_byte(TE_SPRITETRAIL)//Спрайт захвата
    115. write_coord(floatround(origin[0]))
    116. write_coord(floatround(origin[1]))
    117. write_coord(floatround(origin[2])+20)
    118. write_coord(floatround(origin[0]))
    119. write_coord(floatround(origin[1]))
    120. write_coord(floatround(origin[2])+80)
    121. write_short(ExplSpr2)
    122. write_byte(20)
    123. write_byte(20)
    124. write_byte(4)
    125. write_byte(20)
    126. write_byte(10)
    127. message_end()
    128.  
    129. message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    130. write_byte(TE_SPRITETRAIL)//Спрайт захвата
    131. write_coord(floatround(origin[0]))
    132. write_coord(floatround(origin[1]))
    133. write_coord(floatround(origin[2])+20)
    134. write_coord(floatround(origin[0]))
    135. write_coord(floatround(origin[1]))
    136. write_coord(floatround(origin[2])+80)
    137. write_short(ExplSpr3)
    138. write_byte(20)
    139. write_byte(20)
    140. write_byte(4)
    141. write_byte(20)
    142. write_byte(10)
    143. message_end()
    144.  
    145. message_begin(MSG_ALL, SVC_TEMPENTITY);
    146. write_byte(TE_SPRITE);
    147. write_coord(floatround(origin[0]));
    148. write_coord(floatround(origin[1]));
    149. write_coord(floatround(origin[2])+ 70);
    150. write_short(ExplYO);
    151. write_byte(5);
    152. write_byte(100);
    153. message_end();//MESSAGE ENDING
    154.  
    155. create_blast_circle(ent, 10, 255, 40)
    156.  
    157. new tre
    158. while((tre = find_ent_in_sphere(tre,origin,250.0))!= 0)
    159. {
    160. if(is_user_alive(tre)&& get_user_team(tre)== get_user_team(id))
    161. {
    162. message_begin(MSG_ONE, get_user_msgid("ScreenFade"),{0,0,0}, tre)
    163. write_short(1<<10)
    164. write_short(1<<10)
    165. write_short(0x0000)
    166. write_byte(170)
    167. write_byte(255)
    168. write_byte(0)
    169. write_byte(75)
    170. message_end()
    171.  
    172. set_user_rendering(tre,kRenderFxGlowShell,0,255,50,kRenderNormal,20)
    173. set_task(1.5,"UnEffect", tre)
    174.  
    175. set_user_health(tre,100)
    176. }
    177. }
    178.  
    179. return FMRES_SUPERCEDE
    180. }
    181.  
    182. public UnEffect(tre)
    183. {
    184. if(is_user_alive(tre))
    185. {
    186. set_user_rendering(tre)
    187. }
    188. }
    189.  
    190. public forward_playbackevent(flags, invoker, eventindex){
    191. // we do not need a large amount of smoke
    192. if (eventindex == g_eventid_createsmoke)
    193. return FMRES_SUPERCEDE
    194.  
    195. return FMRES_IGNORED
    196. }
    197.  
    198. bool:is_grenade(ent){
    199. if (!pev_valid(ent))
    200. return false
    201.  
    202. static classname[sizeof g_classname_grenade + 1]
    203. pev(ent, pev_classname, classname, sizeof g_classname_grenade)
    204. if (equal(classname, g_classname_grenade))
    205. return true
    206.  
    207. return false
    208. }
    209.  
    210. stock bool:is_hull_vacant(const Float:eek:rigin[3], hull){
    211. new tr = 0
    212. engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
    213. if (!get_tr2(tr, TR_StartSolid)&&!get_tr2(tr, TR_AllSolid)&& get_tr2(tr, TR_InOpen))
    214. return true
    215.  
    216. return false
    217. }
    218.  
    219. stock create_blast_circle(ent, R, G, B)
    220. {
    221. static Float: fOrigin[3], iOrigin[3];
    222.  
    223. pev(ent, pev_origin, fOrigin);
    224.  
    225. FVecIVec( fOrigin, iOrigin );
    226.  
    227. message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
    228. write_byte( TE_BEAMCYLINDER );
    229. write_coord( iOrigin[ 0 ]);
    230. write_coord( iOrigin[ 1 ]);
    231. write_coord( iOrigin[ 2 ]);
    232. write_coord( iOrigin[ 0 ]);
    233. write_coord( iOrigin[ 1 ]);
    234. write_coord( iOrigin[ 2 ]+ 250);// radius
    235. write_short( g_iSpriteCircle );
    236. write_byte( 0 );// start framerate
    237. write_byte( 1 );// framerate
    238. write_byte( 5 );// life
    239. write_byte( 30 );// width
    240. write_byte( 1 );// amplitude
    241.  
    242. write_byte(R);
    243. write_byte(G);
    244. write_byte(B);
    245.  
    246. write_byte( 255 );// brightness
    247. write_byte( 5 );// speed
    248. message_end();
    249. }
     
  2. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    А в спойлер хотя бы запихать код не судьба? Не говоря уже про код [ code ] [/ code ]
     
  3. kratos_01 Пользователь

    Регистрация:
    17.01.16
    Сообщения:
    21
    Симпатии:
    2
    Пол:
    Мужской
    В forward_playbackevent сделай проверку на флаг админа.
     
  4. jokin Команда форума

    Регистрация:
    28.02.15
    Сообщения:
    820
    Симпатии:
    208
    @boss_ex, на это есть кнопка пожаловаться, не нужно начинать оффтоп.
     
  5. M16 Пользователь

    Регистрация:
    13.06.16
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    чет не пойму как сделать проверку? вы бы по подробней рассказали.