hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.07. 08:26



Jelenlévő felhasználók

Jelenleg 224 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 224 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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Grab Immunity
HozzászólásElküldve: 2013.12.31. 01:03 
Offline
Tud valamit

Csatlakozott: 2012.04.16. 22:32
Hozzászólások: 104
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 10 alkalommal
Van a sima Grab++ plugin. Ezt én átírtam, hogy csak immunity-vel rendelkező adminok tudják haszálni. Egyik szerveren(d2) működött, a másikon(jb) már nem. Először csak pár cmd-be írtam bele, majd a végén az összesbe, de sehogy nem akar össze jönni.
Szóval ezt kellene átírni(ha szükséges egyáltalán...), hogy működjön. Esetleg valami másik pluginnal buggolna össze?

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4.  
  5. new const VERSION[ ] = "1.2.4b1"
  6. new const TRKCVAR[ ] = "grab_plus_version"
  7. #define ADMIN ADMIN_IMMUNITY
  8.  
  9. #define TSK_CHKE 50
  10.  
  11. #define SF_FADEOUT 0
  12.  
  13. new client_data[33][4]
  14. #define GRABBED 0
  15. #define GRABBER 1
  16. #define GRAB_LEN 2
  17. #define FLAGS 3
  18.  
  19. #define m_bitsDamageType 76
  20.  
  21. #define CDF_IN_PUSH (1<<0)
  22. #define CDF_IN_PULL (1<<1)
  23. #define CDF_NO_CHOKE (1<<2)
  24.  
  25. //Cvar Pointers
  26. new p_enabled, p_players_only
  27. new p_throw_force, p_min_dist, p_speed, p_grab_force
  28. new p_choke_time, p_choke_dmg, p_auto_choke
  29. new p_glow_r, p_glow_b, p_glow_g, p_glow_a
  30. new p_fade, p_glow
  31.  
  32. //Pseudo Constants
  33. new MAXPLAYERS
  34. new SVC_SCREENFADE, SVC_SCREENSHAKE, WTF_DAMAGE
  35.  
  36. public plugin_init( )
  37. {
  38. register_plugin( "Grab+ Immunity", VERSION, "Ian Cammarata" )
  39. register_cvar( TRKCVAR, VERSION, FCVAR_SERVER )
  40. set_cvar_string( TRKCVAR, VERSION )
  41.  
  42. p_enabled = register_cvar( "gp_enabled", "1" )
  43. p_players_only = register_cvar( "gp_players_only", "0" )
  44.  
  45. p_min_dist = register_cvar ( "gp_min_dist", "90" )
  46. p_throw_force = register_cvar( "gp_throw_force", "1500" )
  47. p_grab_force = register_cvar( "gp_grab_force", "8" )
  48. p_speed = register_cvar( "gp_speed", "5" )
  49.  
  50. p_choke_time = register_cvar( "gp_choke_time", "1.5" )
  51. p_choke_dmg = register_cvar( "gp_choke_dmg", "5" )
  52. p_auto_choke = register_cvar( "gp_auto_choke", "1" )
  53.  
  54. p_glow_r = register_cvar( "gp_glow_r", "50" )
  55. p_glow_g = register_cvar( "gp_glow_g", "0" )
  56. p_glow_b = register_cvar( "gp_glow_b", "0" )
  57. p_glow_a = register_cvar( "gp_glow_a", "200" )
  58.  
  59. p_fade = register_cvar( "gp_screen_fade", "1" )
  60. p_glow = register_cvar( "gp_glow", "1" )
  61.  
  62. register_clcmd( "amx_grab", "force_grab", ADMIN_IMMUNITY, "Grab client & teleport to you." )
  63. register_clcmd( "grab_toggle", "grab_toggle", ADMIN_IMMUNITY, "press once to grab and again to release" )
  64. register_clcmd( "+grab", "grab", ADMIN_IMMUNITY, "bind a key to +grab" )
  65. register_clcmd( "-grab", "unset_grabbed" ,ADMIN_IMMUNITY)
  66.  
  67. register_clcmd( "+push", "push", ADMIN_IMMUNITY, "bind a key to +push" )
  68. register_clcmd( "-push", "push", ADMIN_IMMUNITY)
  69. register_clcmd( "+pull", "pull", ADMIN_IMMUNITY, "bind a key to +pull" )
  70. register_clcmd( "-pull", "pull", ADMIN_IMMUNITY)
  71. register_clcmd( "push", "push2", ADMIN_IMMUNITY)
  72. register_clcmd( "pull", "pull2", ADMIN_IMMUNITY)
  73.  
  74. register_clcmd( "drop" ,"throw", ADMIN_IMMUNITY)
  75.  
  76. register_event( "DeathMsg", "DeathMsg", "a" )
  77.  
  78. register_forward( FM_PlayerPreThink, "fm_player_prethink" )
  79.  
  80. register_dictionary( "grab_plus.txt" )
  81.  
  82. MAXPLAYERS = get_maxplayers()
  83.  
  84. SVC_SCREENFADE = get_user_msgid( "ScreenFade" )
  85. SVC_SCREENSHAKE = get_user_msgid( "ScreenShake" )
  86. WTF_DAMAGE = get_user_msgid( "Damage" )
  87. }
  88.  
  89. public plugin_precache( )
  90. {
  91. precache_sound( "player/PL_PAIN2.WAV" )
  92. }
  93.  
  94. public fm_player_prethink( id )
  95. {
  96. new target
  97. //Search for a target
  98. if ( client_data[id][GRABBED] == -1 )
  99. {
  100. new Float:orig[3], Float:ret[3]
  101. get_view_pos( id, orig )
  102. ret = vel_by_aim( id, 9999 )
  103.  
  104. ret[0] += orig[0]
  105. ret[1] += orig[1]
  106. ret[2] += orig[2]
  107.  
  108. target = traceline( orig, ret, id, ret )
  109.  
  110. if( 0 < target <= MAXPLAYERS )
  111. {
  112. if( is_grabbed( target, id ) ) return FMRES_IGNORED
  113. set_grabbed( id, target )
  114. }
  115. else if( !get_pcvar_num( p_players_only ) )
  116. {
  117. new movetype
  118. if( target && pev_valid( target ) )
  119. {
  120. movetype = pev( target, pev_movetype )
  121. if( !( movetype == MOVETYPE_WALK || movetype == MOVETYPE_STEP || movetype == MOVETYPE_TOSS ) )
  122. return FMRES_IGNORED
  123. }
  124. else
  125. {
  126. target = 0
  127. new ent = engfunc( EngFunc_FindEntityInSphere, -1, ret, 12.0 )
  128. while( !target && ent > 0 )
  129. {
  130. movetype = pev( ent, pev_movetype )
  131. if( ( movetype == MOVETYPE_WALK || movetype == MOVETYPE_STEP || movetype == MOVETYPE_TOSS )
  132. && ent != id )
  133. target = ent
  134. ent = engfunc( EngFunc_FindEntityInSphere, ent, ret, 12.0 )
  135. }
  136. }
  137. if( target )
  138. {
  139. if( is_grabbed( target, id ) ) return FMRES_IGNORED
  140. set_grabbed( id, target )
  141. }
  142. }
  143. }
  144.  
  145. target = client_data[id][GRABBED]
  146. //If they've grabbed something
  147. if( target > 0 )
  148. {
  149. if( !pev_valid( target ) || ( pev( target, pev_health ) < 1 && pev( target, pev_max_health ) ) )
  150. {
  151. unset_grabbed( id )
  152. return FMRES_IGNORED
  153. }
  154.  
  155. //Use key choke
  156. if( pev( id, pev_button ) & IN_USE )
  157. do_choke( id )
  158.  
  159. //Push and pull
  160. new cdf = client_data[id][FLAGS]
  161. if ( cdf & CDF_IN_PULL )
  162. do_pull( id )
  163. else if ( cdf & CDF_IN_PUSH )
  164. do_push( id )
  165.  
  166. if( target > MAXPLAYERS ) grab_think( id )
  167. }
  168.  
  169. //If they're grabbed
  170. target = client_data[id][GRABBER]
  171. if( target > 0 ) grab_think( target )
  172.  
  173. return FMRES_IGNORED
  174. }
  175.  
  176. public grab_think( id ) //id of the grabber
  177. {
  178. new target = client_data[id][GRABBED]
  179.  
  180. //Keep grabbed clients from sticking to ladders
  181. if( pev( target, pev_movetype ) == MOVETYPE_FLY && !(pev( target, pev_button ) & IN_JUMP ) ) client_cmd( target, "+jump;wait;-jump" )
  182.  
  183. //Move targeted client
  184. new Float:tmpvec[3], Float:tmpvec2[3], Float:torig[3], Float:tvel[3]
  185.  
  186. get_view_pos( id, tmpvec )
  187.  
  188. tmpvec2 = vel_by_aim( id, client_data[id][GRAB_LEN] )
  189.  
  190. torig = get_target_origin_f( target )
  191.  
  192. new force = get_pcvar_num( p_grab_force )
  193.  
  194. tvel[0] = ( ( tmpvec[0] + tmpvec2[0] ) - torig[0] ) * force
  195. tvel[1] = ( ( tmpvec[1] + tmpvec2[1] ) - torig[1] ) * force
  196. tvel[2] = ( ( tmpvec[2] + tmpvec2[2] ) - torig[2] ) * force
  197.  
  198. set_pev( target, pev_velocity, tvel )
  199. }
  200.  
  201. stock Float:get_target_origin_f( id )
  202. {
  203. new Float:orig[3]
  204. pev( id, pev_origin, orig )
  205.  
  206. //If grabbed is not a player, move origin to center
  207. if( id > MAXPLAYERS )
  208. {
  209. new Float:mins[3], Float:maxs[3]
  210. pev( id, pev_mins, mins )
  211. pev( id, pev_maxs, maxs )
  212.  
  213. if( !mins[2] ) orig[2] += maxs[2] / 2
  214. }
  215.  
  216. return orig
  217. }
  218.  
  219. public grab_toggle( id, level, cid )
  220. {
  221. if( !client_data[id][GRABBED] ) grab( id, level, cid )
  222. else unset_grabbed( id )
  223.  
  224. return PLUGIN_HANDLED
  225. }
  226.  
  227. public grab( id, level, cid )
  228. {
  229. if( !cmd_access( id, level, cid, 1 ) || !get_pcvar_num( p_enabled ) ) return PLUGIN_HANDLED
  230.  
  231. if ( !client_data[id][GRABBED] ) client_data[id][GRABBED] = -1
  232. screenfade_in( id )
  233.  
  234. return PLUGIN_HANDLED
  235. }
  236.  
  237. public screenfade_in( id )
  238. {
  239. if( get_pcvar_num( p_fade ) )
  240. {
  241. message_begin( MSG_ONE, SVC_SCREENFADE, _, id )
  242. write_short( 10000 ) //duration
  243. write_short( 0 ) //hold
  244. write_short( SF_FADE_IN + SF_FADE_ONLYONE ) //flags
  245. write_byte( get_pcvar_num( p_glow_r ) ) //r
  246. write_byte( get_pcvar_num( p_glow_g ) ) //g
  247. write_byte( get_pcvar_num( p_glow_b ) ) //b
  248. write_byte( get_pcvar_num( p_glow_a ) / 2 ) //a
  249. message_end( )
  250. }
  251. }
  252.  
  253. public throw( id )
  254. {
  255. new target = client_data[id][GRABBED]
  256. if( target > 0 )
  257. {
  258. set_pev( target, pev_velocity, vel_by_aim( id, get_pcvar_num(p_throw_force) ) )
  259. unset_grabbed( id )
  260. return PLUGIN_HANDLED
  261. }
  262.  
  263. return PLUGIN_CONTINUE
  264. }
  265.  
  266. public unset_grabbed( id )
  267. {
  268. new target = client_data[id][GRABBED]
  269. if( target > 0 && pev_valid( target ) )
  270. {
  271. set_pev( target, pev_renderfx, kRenderFxNone )
  272. set_pev( target, pev_rendercolor, {255.0, 255.0, 255.0} )
  273. set_pev( target, pev_rendermode, kRenderNormal )
  274. set_pev( target, pev_renderamt, 16.0 )
  275.  
  276. if( 0 < target <= MAXPLAYERS )
  277. client_data[target][GRABBER] = 0
  278. }
  279. client_data[id][GRABBED] = 0
  280.  
  281. if( get_pcvar_num( p_fade ) )
  282. {
  283. message_begin( MSG_ONE, SVC_SCREENFADE, _, id )
  284. write_short( 10000 ) //duration
  285. write_short( 0 ) //hold
  286. write_short( SF_FADEOUT ) //flags
  287. write_byte( get_pcvar_num( p_glow_r ) ) //r
  288. write_byte( get_pcvar_num( p_glow_g ) ) //g
  289. write_byte( get_pcvar_num( p_glow_b ) ) //b
  290. write_byte( get_pcvar_num( p_glow_a ) / 2 ) //a
  291. message_end( )
  292. }
  293. }
  294.  
  295. //Grabs onto someone
  296. public set_grabbed( id, target )
  297. {
  298. if( get_pcvar_num( p_glow ) )
  299. {
  300. new Float:color[3]
  301. color[0] = get_pcvar_float( p_glow_r )
  302. color[1] = get_pcvar_float( p_glow_g )
  303. color[2] = get_pcvar_float( p_glow_b )
  304. set_pev( target, pev_renderfx, kRenderFxGlowShell )
  305. set_pev( target, pev_rendercolor, color )
  306. set_pev( target, pev_rendermode, kRenderTransColor )
  307. set_pev( target, pev_renderamt, get_pcvar_float( p_glow_a ) )
  308. }
  309.  
  310. if( 0 < target <= MAXPLAYERS )
  311. client_data[target][GRABBER] = id
  312. client_data[id][FLAGS] = 0
  313. client_data[id][GRABBED] = target
  314. new Float:torig[3], Float:orig[3]
  315. pev( target, pev_origin, torig )
  316. pev( id, pev_origin, orig )
  317. client_data[id][GRAB_LEN] = floatround( get_distance_f( torig, orig ) )
  318. if( client_data[id][GRAB_LEN] < get_pcvar_num( p_min_dist ) ) client_data[id][GRAB_LEN] = get_pcvar_num( p_min_dist )
  319. }
  320.  
  321. public push( id )
  322. {
  323. client_data[id][FLAGS] ^= CDF_IN_PUSH
  324. return PLUGIN_HANDLED
  325. }
  326.  
  327. public pull( id )
  328. {
  329. client_data[id][FLAGS] ^= CDF_IN_PULL
  330. return PLUGIN_HANDLED
  331. }
  332.  
  333. public push2( id )
  334. {
  335. if( client_data[id][GRABBED] > 0 )
  336. {
  337. do_push( id )
  338. return PLUGIN_HANDLED
  339. }
  340. return PLUGIN_CONTINUE
  341. }
  342.  
  343. public pull2( id )
  344. {
  345. if( client_data[id][GRABBED] > 0 )
  346. {
  347. do_pull( id )
  348. return PLUGIN_HANDLED
  349. }
  350. return PLUGIN_CONTINUE
  351. }
  352.  
  353. public do_push( id )
  354. if( client_data[id][GRAB_LEN] < 9999 )
  355. client_data[id][GRAB_LEN] += get_pcvar_num( p_speed )
  356.  
  357. public do_pull( id )
  358. {
  359. new mindist = get_pcvar_num( p_min_dist )
  360. new len = client_data[id][GRAB_LEN]
  361.  
  362. if( len > mindist )
  363. {
  364. len -= get_pcvar_num( p_speed )
  365. if( len < mindist ) len = mindist
  366. client_data[id][GRAB_LEN] = len
  367. }
  368. else if( get_pcvar_num( p_auto_choke ) )
  369. do_choke( id )
  370. }
  371.  
  372. public do_choke( id )
  373. {
  374. new target = client_data[id][GRABBED]
  375. if( client_data[id][FLAGS] & CDF_NO_CHOKE || id == target || target > MAXPLAYERS) return
  376.  
  377. new dmg = get_pcvar_num( p_choke_dmg )
  378. new vec[3]
  379. FVecIVec( get_target_origin_f( target ), vec )
  380.  
  381. message_begin( MSG_ONE, SVC_SCREENSHAKE, _, target )
  382. write_short( 999999 ) //amount
  383. write_short( 9999 ) //duration
  384. write_short( 999 ) //frequency
  385. message_end( )
  386.  
  387. message_begin( MSG_ONE, SVC_SCREENFADE, _, target )
  388. write_short( 9999 ) //duration
  389. write_short( 100 ) //hold
  390. write_short( SF_FADE_MODULATE ) //flags
  391. write_byte( get_pcvar_num( p_glow_r ) ) //r
  392. write_byte( get_pcvar_num( p_glow_g ) ) //g
  393. write_byte( get_pcvar_num( p_glow_b ) ) //b
  394. write_byte( 200 ) //a
  395. message_end( )
  396.  
  397. message_begin( MSG_ONE, WTF_DAMAGE, _, target )
  398. write_byte( 0 ) //damage armor
  399. write_byte( dmg ) //damage health
  400. write_long( DMG_CRUSH ) //damage type
  401. write_coord( vec[0] ) //origin[x]
  402. write_coord( vec[1] ) //origin[y]
  403. write_coord( vec[2] ) //origin[z]
  404. message_end( )
  405.  
  406. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  407. write_byte( TE_BLOODSTREAM )
  408. write_coord( vec[0] ) //pos.x
  409. write_coord( vec[1] ) //pos.y
  410. write_coord( vec[2] + 15 ) //pos.z
  411. write_coord( random_num( 0, 255 ) ) //vec.x
  412. write_coord( random_num( 0, 255 ) ) //vec.y
  413. write_coord( random_num( 0, 255 ) ) //vec.z
  414. write_byte( 70 ) //col index
  415. write_byte( random_num( 50, 250 ) ) //speed
  416. message_end( )
  417.  
  418. //Thanks to ConnorMcLeod for making this block of code more proper
  419. new Float:health
  420. pev( target, pev_health , health)
  421. health -= dmg
  422. if( health < 1 ) dllfunc( DLLFunc_ClientKill, target )
  423. else {
  424. set_pev( target, pev_health, health )
  425. set_pdata_int(target, m_bitsDamageType, DMG_CRUSH) // m_bitsDamageType = 76 // found by VEN
  426. set_pev(target, pev_dmg_take, dmg)
  427. set_pev(target, pev_dmg_inflictor, id)
  428. }
  429.  
  430. client_data[id][FLAGS] ^= CDF_NO_CHOKE
  431. set_task( get_pcvar_float( p_choke_time ), "clear_no_choke", TSK_CHKE + id )
  432. }
  433.  
  434. public clear_no_choke( tskid )
  435. {
  436. new id = tskid - TSK_CHKE
  437. client_data[id][FLAGS] ^= CDF_NO_CHOKE
  438. }
  439.  
  440. //Grabs the client and teleports them to the admin
  441. public force_grab(id, level, cid)
  442. {
  443. if( !cmd_access( id, level, cid, 1 ) || !get_pcvar_num( p_enabled ) ) return PLUGIN_HANDLED
  444.  
  445. new arg[33]
  446. read_argv( 1, arg, 32 )
  447.  
  448. new targetid = cmd_target( id, arg, 1 )
  449.  
  450. if( is_grabbed( targetid, id ) ) return PLUGIN_HANDLED
  451. if( !is_user_alive( targetid ) )
  452. {
  453. client_print( id, print_console, "[AMXX] %L", id, "COULDNT" )
  454. return PLUGIN_HANDLED
  455. }
  456.  
  457. //Safe to tp target to aim spot?
  458. new Float:tmpvec[3], Float:orig[3], Float:torig[3], Float:trace_ret[3]
  459. new bool:safe = false, i
  460.  
  461. get_view_pos( id, orig )
  462. tmpvec = vel_by_aim( id, get_pcvar_num( p_min_dist ) )
  463.  
  464. for( new j = 1; j < 11 && !safe; j++ )
  465. {
  466. torig[0] = orig[0] + tmpvec[i] * j
  467. torig[1] = orig[1] + tmpvec[i] * j
  468. torig[2] = orig[2] + tmpvec[i] * j
  469.  
  470. traceline( tmpvec, torig, id, trace_ret )
  471.  
  472. if( get_distance_f( trace_ret, torig ) ) break
  473.  
  474. engfunc( EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0 )
  475. if ( !get_tr2( 0, TR_StartSolid ) && !get_tr2( 0, TR_AllSolid ) && get_tr2( 0, TR_InOpen ) )
  476. safe = true
  477. }
  478.  
  479. //Still not safe? Then find another safe spot somewhere around the grabber
  480. pev( id, pev_origin, orig )
  481. new try[3]
  482. orig[2] += 2
  483. while( try[2] < 3 && !safe )
  484. {
  485. for( i = 0; i < 3; i++ )
  486. switch( try[i] )
  487. {
  488. case 0 : torig[i] = orig[i] + ( i == 2 ? 80 : 40 )
  489. case 1 : torig[i] = orig[i]
  490. case 2 : torig[i] = orig[i] - ( i == 2 ? 80 : 40 )
  491. }
  492.  
  493. traceline( tmpvec, torig, id, trace_ret )
  494.  
  495. engfunc( EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0 )
  496. if ( !get_tr2( 0, TR_StartSolid ) && !get_tr2( 0, TR_AllSolid ) && get_tr2( 0, TR_InOpen )
  497. && !get_distance_f( trace_ret, torig ) ) safe = true
  498.  
  499. try[0]++
  500. if( try[0] == 3 )
  501. {
  502. try[0] = 0
  503. try[1]++
  504. if( try[1] == 3 )
  505. {
  506. try[1] = 0
  507. try[2]++
  508. }
  509. }
  510. }
  511.  
  512. if( safe )
  513. {
  514. set_pev( targetid, pev_origin, torig )
  515. set_grabbed( id, targetid )
  516. screenfade_in( id )
  517. }
  518. else client_print( id, print_chat, "[AMXX] %L", id, "COULDNT" )
  519.  
  520. return PLUGIN_HANDLED
  521. }
  522.  
  523. public is_grabbed( target, grabber )
  524. {
  525. for( new i = 1; i <= MAXPLAYERS; i++ )
  526. if( client_data[i][GRABBED] == target )
  527. {
  528. client_print( grabber, print_chat, "[AMXX] %L", grabber, "ALREADY" )
  529. unset_grabbed( grabber )
  530. return true
  531. }
  532. return false
  533. }
  534.  
  535. public DeathMsg( )
  536. kill_grab( read_data( 2 ) )
  537.  
  538. public client_disconnect( id )
  539. {
  540. kill_grab( id )
  541. return PLUGIN_CONTINUE
  542. }
  543.  
  544. public kill_grab( id )
  545. {
  546. //If given client has grabbed, or has a grabber, unset it
  547. if( client_data[id][GRABBED] )
  548. unset_grabbed( id )
  549. else if( client_data[id][GRABBER] )
  550. unset_grabbed( client_data[id][GRABBER] )
  551. }
  552.  
  553. stock traceline( const Float:vStart[3], const Float:vEnd[3], const pIgnore, Float:vHitPos[3] )
  554. {
  555. engfunc( EngFunc_TraceLine, vStart, vEnd, 0, pIgnore, 0 )
  556. get_tr2( 0, TR_vecEndPos, vHitPos )
  557. return get_tr2( 0, TR_pHit )
  558. }
  559.  
  560. stock get_view_pos( const id, Float:vViewPos[3] )
  561. {
  562. new Float:vOfs[3]
  563. pev( id, pev_origin, vViewPos )
  564. pev( id, pev_view_ofs, vOfs )
  565.  
  566. vViewPos[0] += vOfs[0]
  567. vViewPos[1] += vOfs[1]
  568. vViewPos[2] += vOfs[2]
  569. }
  570.  
  571. stock Float:vel_by_aim( id, speed = 1 )
  572. {
  573. new Float:v1[3], Float:vBlah[3]
  574. pev( id, pev_v_angle, v1 )
  575. engfunc( EngFunc_AngleVectors, v1, v1, vBlah, vBlah )
  576.  
  577. v1[0] *= speed
  578. v1[1] *= speed
  579. v1[2] *= speed
  580.  
  581. return v1
  582. }

_________________
Ha segítettem: Kép

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Grab Immunity
HozzászólásElküldve: 2013.12.31. 01:23 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
-Mutass plugin.ini-t


-1TIPP.
[ablak]Amúgy nem is kellet volna átirkálnod sma-ba hogy ADMIN_IMMUNITY vagyis "a" elég ha berakod plugint , aztán map resi aztán megnézzed
configs/cmdaccess.ini
Ott legörgetsz és , látni fogsz minden amx_ parancsot és átírhatod ott a GRAB-ot vagy bármi mást.
Ott elég megadni azt h "a"[/ablak]

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


Ki van itt

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