hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.28. 00:15



Jelenlévő felhasználók

Jelenleg 521 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 521 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  [ 4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Admin lézerszétlövés (Gyorsan kel)
HozzászólásElküldve: 2013.08.14. 12:57 
Offline
Senior Tag
Avatar

Csatlakozott: 2012.08.27. 11:11
Hozzászólások: 209
Megköszönt másnak: 35 alkalommal
Megköszönték neki: 3 alkalommal
Helló

valaki írja át úgy hogy az admin az ember és a zombie lézerét is széttudja lőni a sima játékos csak a saját és a zombie lézerét

ha kel nyitok még 100 ilyen témát addig amíg valaki meg nem csinálja :lol:

SMA Forráskód: [ Mindet kijelol ]
  1. / *
  2. Shidla [SGC] | 2013
  3. ICQ: 312-298-513
  4.  
  5. 2.8.2 [Végső Verzió] | 2013/05/21 | Forrás: Zombie-Mod.Ru
  6. 2.8.3 - Raj modban Tiltott a Lezer lerakasa! | Modositotta: Chasper.
  7. * /
  8.  
  9. # Include <amxmodx>
  10. # Include <fakemeta>
  11. # Include <hamsandwich>
  12. # Include <xs>
  13. # Include <zombieplague>
  14.  
  15. # If AMXX_VERSION_NUM <180
  16. # Állítják AMX Mod X v1.8.0 vagy újabb library szükséges!
  17. # Endif
  18.  
  19. # Define dugó "[ZP] LaserMine"
  20. # Define VERSION "2.8.3"
  21. # Define szerző "SandStriker / Shidla / QuZ / DJ_WEST"
  22.  
  23. # Define RemoveEntity (% 1) engfunc (EngFunc_RemoveEntity% 1)
  24. # Define TASK_PLANT 15100
  25. # Define TASK_RESET 15500
  26. # Define TASK_RELEASE 15900
  27.  
  28. # Define LASERMINE_TEAM pev_iuser1 / / EV_INT_iuser1
  29. # Define LASERMINE_OWNER pev_iuser2 / / EV_INT_iuser3
  30. # Define LASERMINE_STEP pev_iuser3
  31. # Define LASERMINE_HITING pev_iuser4
  32. # Define LASERMINE_COUNT pev_fuser1
  33.  
  34. # Define LASERMINE_POWERUP pev_fuser2
  35. # Define LASERMINE_BEAMTHINK pev_fuser3
  36.  
  37. # Define LASERMINE_BEAMENDPOINT pev_vuser1
  38. # Define MAX_MINES 10
  39. # Define MODE_LASERMINE 0
  40. # Define OFFSET_TEAM 114
  41. # Define OFFSET_MONEY 115
  42. # Define OFFSET_DEATH 444
  43.  
  44. # Define cs_get_user_team (% 1) CsTeams: get_offset_value (% 1, OFFSET_TEAM)
  45. # Define cs_get_user_deaths (% 1) get_offset_value (% 1, OFFSET_DEATH)
  46. # Define is_valid_player (% 1) (1 <=% 1 <= 32)
  47.  
  48.  
  49. / * # # # # # # # # # # # Цвета Мин и лазерных лучей # # # # # # # # # # # * /
  50. / / ITT adhato meg AZ Embernek a Lezer Színe!
  51. új const
  52. Red_Hum = 0 ,
  53. Green_Hum = 0 ,
  54. Blue_Hum = 255 ;
  55.  
  56. / / ITT adhato meg a zombi Altal lerakott Lezer Színe!
  57. új const
  58. Red_Zomb = 0 ,
  59. Green_Zomb = 255 ,
  60. Blue_Zomb = 0 ;
  61. / * # # # # # # # Цвета Мин и лазерных лучей (конец) # # # # # # # * /
  62.  
  63. enum CsTeams {
  64. CS_TEAM_UNASSIGNED = 0 ,
  65. CS_TEAM_T = 1 ,
  66. CS_TEAM_CT = 2 ,
  67. CS_TEAM_SPECTATOR = 3
  68. } ;
  69.  
  70. enum tripmine_e {
  71. TRIPMINE_IDLE1 = 0 ,
  72. TRIPMINE_IDLE2,
  73. TRIPMINE_ARM1,
  74. TRIPMINE_ARM2,
  75. TRIPMINE_FIDGET,
  76. TRIPMINE_HOLSTER,
  77. TRIPMINE_DRAW,
  78. TRIPMINE_WORLD,
  79. TRIPMINE_GROUND,
  80. } ;
  81.  
  82. enum
  83. {
  84. POWERUP_THINK,
  85. BEAMBREAK_THINK,
  86. EXPLOSE_THINK
  87. } ;
  88.  
  89. enum
  90. {
  91. POWERUP_SOUND,
  92. ACTIVATE_SOUND,
  93. STOP_SOUND
  94. } ;
  95.  
  96. új const
  97. ENT_MODELS [ ] = "modellek / zombie_plague / LaserMines / v_laser_mine.mdl" ,
  98. ENT_SOUND1 [ ] = "fegyverek / mine_deploy.wav" ,
  99. ENT_SOUND2 [ ] = "fegyverek / mine_charge.wav" ,
  100. ENT_SOUND3 [ ] = "fegyverek / mine_activate.wav" ,
  101. ENT_SOUND4 [ ] = "items/suitchargeok1.wav" ,
  102. ENT_SOUND5 [ ] = "items/gunpickup2.wav" ,
  103. ENT_SOUND6 [ ] = "debris/bustglass1.wav" ,
  104. ENT_SOUND7 [ ] = "debris/bustglass2.wav" ,
  105. ENT_SPRITE1 [ ] = "sprite / laserbeam.spr" ,
  106. ENT_SPRITE2 [ ] = "sprite / lm_explode.spr" ;
  107.  
  108. új const
  109. ENT_CLASS_NAME [ ] = "lasermine" ,
  110. ENT_CLASS_NAME3 [ ] = "func_breakable" ,
  111. gSnarkClassName [ ] = "wpn_snark" , / / Для совместимости с плагином "Snark"
  112. barnacle_class [ ] = "Barnacle" , / / Для совместимости с плагином "Barnacle"
  113. weapon_box [ ] = "weaponbox" ;
  114.  
  115. új g_EntMine, gerenda, bumm
  116. új g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND, g_NEMROUND, g_SURVROUND, g_SWARMROUND
  117. új g_LRDMG, g_LFF, g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE
  118. új g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;
  119. új g_msgDeathMsg, g_msgScoreInfo, g_msgDamage, g_msgStatusText;
  120. új g_dcount [ 33 ] , g_nowtime, g_MaxPL
  121. új bool : g_settinglaser [ 33 ]
  122. Új Float : plspeed [ 33 ] , plsetting [ 33 ] , g_havemine [ 33 ] , g_deployed [ 33 ] ;
  123. / / New CVAR_LMCost
  124.  
  125. nyilvános plugin_init ( )
  126. {
  127. register_plugin ( dugó, VERSION, szerző ) ;
  128.  
  129. / / Вызываем функцию Laser_TakeDamage при получении урона объектом ENT_CLASS_NAME3 (func_breakable)
  130. RegisterHam ( Ham_TakeDamage , ENT_CLASS_NAME3, "Laser_TakeDamage" )
  131. / / Add a kódot itt ...
  132. register_clcmd ( "+ setlaser" , "CreateLaserMine_Progress_b" ) ;
  133. register_clcmd ( "setlaser-" , "StopCreateLaserMine" ) ;
  134. register_clcmd ( "+ dellaser" , "ReturnLaserMine_Progress" ) ;
  135. register_clcmd ( "dellaser-" , "StopReturnLaserMine" ) ;
  136. register_clcmd ( "say" , "say_lasermine" ) ;
  137. register_clcmd ( "buy_lasermine" , "BuyLasermineChat" ) ;
  138.  
  139. g_LENABLE = register_cvar ( "zp_ltm" , "1" )
  140. g_LACCESS = register_cvar ( "zp_ltm_acs" , "0" ) / / 0 egész, 1 admin
  141. g_LMODE = register_cvar ( "zp_ltm_mode" , "0" ) / / 0 lasermine, 1 tripmine
  142. g_LAMMO = register_cvar ( "zp_ltm_ammo" , "3" )
  143. g_LDMG = register_cvar ( "zp_ltm_dmg" , "60" ) / / lézer hit dmg
  144. g_LCOST = register_cvar ( "zp_ltm_cost" , "2" )
  145. g_LFMONEY = register_cvar ( "zp_ltm_fragmoney" , "1" )
  146. g_LHEALTH = register_cvar ( "zp_ltm_health" , "500" )
  147. g_LTMAX = register_cvar ( "zp_ltm_teammax" , "100" )
  148. g_LRADIUS = register_cvar ( "zp_ltm_radius" , "320,0" )
  149. g_LRDMG = register_cvar ( "zp_ltm_rdmg" , "100" ) / / sugár kárt
  150. g_LFF = register_cvar ( "zp_ltm_ff" , "0" )
  151. g_LCBT = register_cvar ( "zp_ltm_cbt" , "ALL" )
  152. g_LDELAY = register_cvar ( "zp_ltm_delay" , "0,1" )
  153. g_LVISIBLE = register_cvar ( "zp_ltm_line" , "1" )
  154. g_LGLOW = register_cvar ( "zp_ltm_glow" , "0" )
  155. g_LCBRIGHT = register_cvar ( "zp_ltm_bright" , "255" ) / / lézer vonal fényerő.
  156. g_LCLMODE = register_cvar ( "zp_ltm_color" , "0" ) / / 0 csapat színe, az 1-zöld
  157. g_LDMGMODE = register_cvar ( "zp_ltm_ldmgmode" , "0" ) / / 0 - frame dmg, 1 - egyszer DMG, 2 - 1 másodperc dmg
  158. g_LDSEC = register_cvar ( "zp_ltm_ldmgseconds" , "1" ) / / 2. mód csak sebzés / másodperc. default 1 (sec)
  159. g_LSTAMMO = register_cvar ( "zp_ltm_startammo" , "2" )
  160. g_LBUYMODE = register_cvar ( "zp_ltm_buymode" , "1" ) ;
  161. g_LCMDMODE = register_cvar ( "zp_ltm_cmdmode" , "0" ) ; / / 0 + a gombbal, 1 bind, 2 minden.
  162. g_LBEO = register_cvar ( "zp_ltm_brokeenemy" , "1" ) ;
  163. g_NOROUND = register_cvar ( "zp_ltm_noround" , "1" ) ;
  164. g_NEMROUND = register_cvar ( "zp_ltm_nemround" , "1" ) ;
  165. g_SURVROUND = register_cvar ( "zp_ltm_survround" , "1" ) ;
  166. g_SWARMROUND = register_cvar ( "zp_ltm_swarmround" , "1" ) ;
  167.  
  168. register_event ( "DeathMsg" , "DeathEvent" , "a" ) ;
  169. register_event ( "CurWeapon" , "állandó" , "a" , "1 = 1" ) ;
  170. register_event ( "ResetHUD" , "delaycount" , "a" ) ;
  171. register_event ( "ResetHUD" , "newround" , "B" ) ;
  172. register_logevent ( "endround" , 2 , "0 = Világ váltott" , "1 = Round_End" ) ; / / Регистрируем конец раунда
  173. register_event ( "Damage" , "CutDeploy_onDamage" , "B" ) ;
  174. g_msgDeathMsg = get_user_msgid ( "DeathMsg" ) ;
  175. g_msgScoreInfo = get_user_msgid ( "ScoreInfo" ) ;
  176. g_msgDamage = get_user_msgid ( "Kár" ) ;
  177. g_msgStatusText = get_user_msgid ( "statusText" ) ;
  178.  
  179. / / Előre.
  180. register_forward ( FM_Think , "ltm_Think" ) ;
  181. register_forward ( FM_PlayerPostThink , "ltm_PostThink" ) ;
  182. register_forward ( FM_PlayerPreThink , "ltm_PreThink" ) ;
  183.  
  184. / / Регистируем файл языков
  185. register_dictionary ( "LaserMines.txt" )
  186. register_cvar ( "Shidla" , "[ZP] LaserMines v.2.8.2 Final" , FCVAR_SERVER | FCVAR_SPONLY )
  187.  
  188. / / Регистрируем ExtraItem
  189. g_LME = zp_register_extra_item ( "Laser Mine" , get_pcvar_num ( g_LCOST ) , ZP_TEAM_ANY )
  190. }
  191.  
  192. nyilvános plugin_precache ( )
  193. {
  194. precache_sound ( ENT_SOUND1 ) ;
  195. precache_sound ( ENT_SOUND2 ) ;
  196. precache_sound ( ENT_SOUND3 ) ;
  197. precache_sound ( ENT_SOUND4 ) ;
  198. precache_sound ( ENT_SOUND5 ) ;
  199. precache_sound ( ENT_SOUND6 ) ;
  200. precache_sound ( ENT_SOUND7 ) ;
  201. precache_model ( ENT_MODELS ) ;
  202. gerenda = precache_model ( ENT_SPRITE1 ) ;
  203. boom = precache_model ( ENT_SPRITE2 ) ;
  204. vissza PLUGIN_CONTINUE ;
  205. }
  206.  
  207. nyilvános plugin_modules ( )
  208. {
  209. require_module ( "fakemeta" ) ;
  210. require_module ( "cstrike" ) ;
  211. }
  212.  
  213. nyilvános plugin_cfg ( )
  214. {
  215. g_EntMine = engfunc ( EngFunc_AllocString , ENT_CLASS_NAME3 ) ;
  216. arrayset ( g_havemine, 0 , sizeof ( g_havemine ) ) ;
  217. arrayset ( g_deployed, 0 , sizeof ( g_deployed ) ) ;
  218. g_MaxPL = get_maxplayers ( ) ;
  219.  
  220. új fájl [ 64 ] , get_localinfo ( "amxx_configsdir" , file, 63 ) ;
  221. formátumú ( fájl, 63 , "% s / zp_ltm_cvars_ap.cfg" , file ) ;
  222. ha a ( file_exists ( fájl ) ) server_cmd ( "exec% s" , file ) , server_exec ( ) ;
  223. }
  224.  
  225. nyilvános Laser_TakeDamage ( áldozat inflictor, támadó, Float : f_Damage, bit_Damage )
  226. {
  227. ha a ( get_pcvar_num ( g_LBEO ) )
  228. {
  229. új i_Owner
  230.  
  231. / / Получаем ID игрока, который поставил мину
  232. i_Owner = PEV ( áldozat LASERMINE_OWNER )
  233.  
  234. / / Если урон нанасит владелец, а так же проверка игрока.
  235. ha ( i_Owner == támadó | | ! is_valid_player ( i_Owner ) | | ! is_valid_player ( támadó ) )
  236. vissza PLUGIN_CONTINUE
  237.  
  238. / / Если мина установлена ​​человеком, то урон ей наносят только зомби
  239. ha a ( ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) == CS_TEAM_CT ) && ( cs_get_user_team ( támadó ) ! = CS_TEAM_CT ) )
  240. vissza PLUGIN_CONTINUE
  241.  
  242. / / Если мина установлена ​​зомби, а владелец мины и атакующий в разных командах - урон мине могун наносить все
  243. ha a ( ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) == CS_TEAM_T ) && ( ( cs_get_user_team ( i_Owner ) ! = CS_TEAM_T ) | | ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) ! = cs_get_user_team ( támadó ) ) ) )
  244. vissza PLUGIN_CONTINUE
  245.  
  246. vissza HAM_SUPERCEDE
  247. }
  248. vissza PLUGIN_CONTINUE
  249. }
  250.  
  251. nyilvános delaycount ( id )
  252. {
  253. g_dcount [ id ] = floatround ( get_gametime ( ) ) ;
  254. }
  255.  
  256. bool : CheckTime ( id )
  257. {
  258. g_nowtime = floatround ( get_gametime ( ) ) - g_dcount [ id ] ;
  259. ha ( g_nowtime > = get_pcvar_num ( g_LDELAY ) )
  260. vissza true ;
  261. vissza false ;
  262. }
  263.  
  264. nyilvános CreateLaserMine_Progress_b ( id )
  265. {
  266. ha a ( get_pcvar_num ( g_LCMDMODE ) ! = 0 )
  267. CreateLaserMine_Progress ( id ) ;
  268. vissza PLUGIN_HANDLED ;
  269. }
  270.  
  271. nyilvános CreateLaserMine_Progress ( id )
  272. {
  273.  
  274. ha ( ! CreateCheck ( id ) )
  275. vissza PLUGIN_HANDLED ;
  276. g_settinglaser [ id ] = true ;
  277.  
  278. message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
  279. write_byte ( 1 ) ;
  280. write_byte ( 0 ) ;
  281. message_end ( ) ;
  282.  
  283. set_task ( 1.2 , "Spawn" , ( TASK_PLANT + id ) ) ;
  284.  
  285. vissza PLUGIN_HANDLED ;
  286. }
  287.  
  288. nyilvános ReturnLaserMine_Progress ( id )
  289. {
  290.  
  291. ha ( ! ReturnCheck ( id ) )
  292. vissza PLUGIN_HANDLED ;
  293. g_settinglaser [ id ] = true ;
  294.  
  295. message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
  296. write_byte ( 1 ) ;
  297. write_byte ( 0 ) ;
  298. message_end ( ) ;
  299.  
  300. set_task ( 1.2 , "ReturnMine" , ( TASK_RELEASE + id ) ) ;
  301.  
  302. vissza PLUGIN_HANDLED ;
  303. }
  304.  
  305. nyilvános StopCreateLaserMine ( id )
  306. {
  307.  
  308. DeleteTask ( id ) ;
  309. message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
  310. write_byte ( 0 ) ;
  311. write_byte ( 0 ) ;
  312. message_end ( ) ;
  313.  
  314. vissza PLUGIN_HANDLED ;
  315. }
  316.  
  317. nyilvános StopReturnLaserMine ( id )
  318. {
  319.  
  320. DeleteTask ( id ) ;
  321. message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
  322. write_byte ( 0 ) ;
  323. write_byte ( 0 ) ;
  324. message_end ( ) ;
  325.  
  326. vissza PLUGIN_HANDLED ;
  327. }
  328.  
  329. nyilvános ReturnMine ( id )
  330. {
  331. id - = TASK_RELEASE;
  332. új TGT, test, Float : vo [ 3 ] , Float : a [ 3 ] ;
  333. get_user_aiming ( id, TGT, test ) ;
  334. ha ( ! pev_valid ( TGT ) ) visszatérés ;
  335. PEV ( id, pev_origin , vo ) ;
  336. PEV ( TGT, pev_origin , a ) ;
  337. ha a ( get_distance_f ( vo, a ) > 70,0 ) vissza ;
  338. új EntityName [ 32 ] ;
  339. PEV ( TGT, pev_classname , EntityName, 31 ) ;
  340. ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) ) visszatérés ;
  341. ha a ( PEV ( TGT, LASERMINE_OWNER ) ! = id ) tér vissza ;
  342. RemoveEntity ( TGT ) ;
  343.  
  344. g_havemine [ id ] + + ;
  345. g_deployed [ id ] - ;
  346. emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
  347. ShowAmmo ( id )
  348.  
  349. vissza ;
  350. }
  351.  
  352. nyilvános Spawn ( id )
  353. {
  354. id - = TASK_PLANT
  355. / / Motor
  356. új i_Ent = engfunc ( EngFunc_CreateNamedEntity , g_EntMine ) ;
  357. ha ( ! i_Ent )
  358. {
  359. client_print ( id, print_chat , "[Laesrmine Debug] nem tudja létrehozni testület" ) ;
  360. vissza PLUGIN_HANDLED_MAIN ;
  361. }
  362. set_pev ( i_Ent, pev_classname , ENT_CLASS_NAME ) ;
  363.  
  364. engfunc ( EngFunc_SetModel , i_Ent, ENT_MODELS ) ;
  365.  
  366. set_pev ( i_Ent, pev_solid , SOLID_NOT ) ;
  367. set_pev ( i_Ent, pev_movetype , MOVETYPE_FLY ) ;
  368.  
  369. set_pev ( i_Ent, pev_frame , 0 ) ;
  370. set_pev ( i_Ent, pev_body , 3 ) ;
  371. set_pev ( i_Ent, pev_sequence , TRIPMINE_WORLD ) ;
  372. set_pev ( i_Ent, pev_framerate , 0 ) ;
  373. set_pev ( i_Ent, pev_takedamage , DAMAGE_YES ) ;
  374. set_pev ( i_Ent, pev_dmg , 100,0 ) ;
  375. set_user_health ( i_Ent, get_pcvar_num ( g_LHEALTH ) ) ;
  376. Új Float : vOrigin [ 3 ] ;
  377. Új Float : vNewOrigin [ 3 ] , Float : vNormal [ 3 ] , Float : vTraceDirection [ 3 ] ,
  378. Float : vTraceEnd [ 3 ] , Float : vEntAngles [ 3 ] ;
  379. PEV ( id, pev_origin , vOrigin ) ;
  380. velocity_by_aim ( id, 128 , vTraceDirection ) ;
  381. xs_vec_add ( vTraceDirection, vOrigin, vTraceEnd ) ;
  382. engfunc ( EngFunc_TraceLine , vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS , id, 0 ) ;
  383. Új Float : fFraction;
  384. get_tr2 ( 0 , TR_flFraction , fFraction ) ;
  385.  
  386. / / - We hit valamit!
  387. ha ( fFraction < 1.0 )
  388. {
  389. / / - Save eredmények későbbi használatra.
  390. get_tr2 ( 0 , TR_vecEndPos , vTraceEnd ) ;
  391. get_tr2 ( 0 , TR_vecPlaneNormal , vNormal ) ;
  392. }
  393.  
  394.  
  395. xs_vec_mul_scalar ( vNormal, 8.0 , vNormal ) ;
  396. xs_vec_add ( vTraceEnd, vNormal, vNewOrigin ) ;
  397.  
  398. engfunc ( EngFunc_SetSize , i_Ent, Float : { - 4.0 , - 4.0 , - 4.0 } , Float : { 4.0 , 4.0 , 4.0 } ) ;
  399. engfunc ( EngFunc_SetOrigin , i_Ent, vNewOrigin ) ;
  400.  
  401. / / - Forgatás tripmine.
  402. vector_to_angle ( vNormal, vEntAngles ) ;
  403. set_pev ( i_Ent, pev_angles , vEntAngles ) ;
  404.  
  405. / / - Számítsa lézer vége eredetű.
  406. Új Float : vBeamEnd [ 3 ] , Float : vTracedBeamEnd [ 3 ] ;
  407.  
  408. xs_vec_mul_scalar ( vNormal, 8192,0 , vNormal ) ;
  409. xs_vec_add ( vNewOrigin, vNormal, vBeamEnd ) ;
  410.  
  411. engfunc ( EngFunc_TraceLine , vNewOrigin, vBeamEnd, IGNORE_MONSTERS , - 1. , 0 ) ;
  412.  
  413. get_tr2 ( 0 , TR_vecPlaneNormal , vNormal ) ;
  414. get_tr2 ( 0 , TR_vecEndPos , vTracedBeamEnd ) ;
  415.  
  416. / / - Save eredmények későbbi használatra.
  417. set_pev ( i_Ent, LASERMINE_OWNER, id ) ;
  418. set_pev ( i_Ent, LASERMINE_BEAMENDPOINT, vTracedBeamEnd ) ;
  419. set_pev ( i_Ent, LASERMINE_TEAM, int : cs_get_user_team ( id ) ) ;
  420. Új Float : fCurrTime = get_gametime ( ) ;
  421.  
  422. set_pev ( i_Ent, LASERMINE_POWERUP, fCurrTime + 2,5 ) ;
  423. set_pev ( i_Ent, LASERMINE_STEP, POWERUP_THINK ) ;
  424. set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,2 ) ;
  425.  
  426. PlaySound ( i_Ent, POWERUP_SOUND ) ;
  427. g_deployed [ id ] + + ;
  428. g_havemine [ id ] - ;
  429. DeleteTask ( id ) ;
  430. ShowAmmo ( id ) ;
  431. vissza 1 ;
  432. }
  433.  
  434. állomány TeamDeployedCount ( id )
  435. {
  436. statikus i;
  437. statikus CsTeams : t, t = cs_get_user_team ( id ) ;
  438. statikus CNT; CNT = 0 ;
  439.  
  440. A ( i = 1 , i <= g_MaxPL; i + + )
  441. {
  442. ha a ( is_user_connected ( i ) )
  443. ha ( t == cs_get_user_team ( i ) )
  444. CNT + = g_deployed [ i ] ;
  445. }
  446.  
  447. vissza CNT;
  448. }
  449.  
  450. bool : CheckCanTeam ( id )
  451. {
  452. új arg [ 5 ] , CsTeam : db;
  453. get_pcvar_string ( g_LCBT, Arg, 3 ) ;
  454. ha a ( kiegyenlítési ( arg, "Z" ) )
  455. {
  456. num = CsTeam : CS_TEAM_T ;
  457. }
  458. még ha ( kiegyenlítési ( arg, "H" ) )
  459. {
  460. num = CsTeam : CS_TEAM_CT ;
  461. }
  462. még ha ( kiegyenlítési ( arg, "ALL" ) | | kiegyenlítési ( arg, "Hz" ) | | kiegyenlítési ( arg, "ZH" ) )
  463. {
  464. num = CsTeam : CS_TEAM_UNASSIGNED ;
  465. }
  466. más
  467. {
  468. num = CsTeam : CS_TEAM_UNASSIGNED ;
  469. }
  470. ha ( num ! = CsTeam : CS_TEAM_UNASSIGNED && num ! = CsTeam : cs_get_user_team ( id ) )
  471. vissza false ;
  472. vissza true ;
  473. }
  474.  
  475. bool : CanCheck ( id, mód ) / / Проверки: когда можно ставить мины
  476. {
  477. ha ( ! get_pcvar_num ( g_LENABLE ) )
  478. {
  479. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOTACTIVE" )
  480.  
  481. vissza false ;
  482. }
  483. ha a ( get_pcvar_num ( g_LACCESS ) ! = 0 )
  484. ha ( ! ( get_user_flags ( id ) és ADMIN_IMMUNITY ) )
  485. {
  486. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOACCESS" )
  487. vissza false ;
  488. }
  489. ha ( ! pev_user_alive ( id ) ) vissza false ;
  490. ha ( ! CheckCanTeam ( id ) )
  491. {
  492. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_CBT" )
  493. vissza false ;
  494. }
  495. ha ( üzemmód == 0 )
  496. {
  497. ha a ( g_havemine [ id ] <= 0 )
  498. {
  499. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_DONTHAVEMINE" )
  500. vissza false ;
  501. }
  502. }
  503. ha ( üzemmód == 1 )
  504. {
  505. ha a ( get_pcvar_num ( g_LBUYMODE ) == 0 )
  506. {
  507. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_CANTBUY" )
  508. vissza false ;
  509. }
  510. ha a ( g_havemine [ id ] > = get_pcvar_num ( g_LAMMO ) )
  511. {
  512. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_HAVEMAX" )
  513. vissza false ;
  514. }
  515. ha a ( zp_get_user_ammo_packs ( id ) < get_pcvar_num ( g_LCOST ) )
  516. {
  517. client_print ( id, print_chat , "% L% L% d% L" , id, "CHATTAG" , id, "STR_NOMONEY" , get_pcvar_num ( g_LCOST ) , id, "STR_NEEDED" )
  518. vissza false ;
  519. }
  520. }
  521. ha ( ! CheckTime ( id ) )
  522. {
  523. client_print ( id, print_chat , "% L% L% d% L" , id, "CHATTAG" , id, "STR_DELAY" , get_pcvar_num ( g_LDELAY ) - g_nowtime, id, "STR_SECONDS" )
  524. vissza false ;
  525. }
  526.  
  527. vissza true ;
  528. }
  529.  
  530. bool : ReturnCheck ( id )
  531. {
  532. ha ( ! CanCheck ( id, - 1. ) ) vissza false ;
  533. ha a ( g_havemine [ id ] + 1 > get_pcvar_num ( g_LAMMO ) ) visszatérés hamis ;
  534. új TGT, test, Float : vo [ 3 ] , Float : a [ 3 ] ;
  535. get_user_aiming ( id, TGT, test ) ;
  536. ha ( ! pev_valid ( TGT ) ) vissza false ;
  537. PEV ( id, pev_origin , vo ) ;
  538. PEV ( TGT, pev_origin , a ) ;
  539. ha a ( get_distance_f ( vo, a ) > 70,0 ) vissza false ;
  540. új EntityName [ 32 ] ;
  541. PEV ( TGT, pev_classname , EntityName, 31 ) ;
  542. ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) ) vissza false ;
  543. ha a ( PEV ( TGT, LASERMINE_OWNER ) ! = id ) tér vissza false ;
  544. vissza true ;
  545. }
  546.  
  547. bool : CreateCheck ( id )
  548. {
  549. ha ( ! CanCheck ( id, 0 ) ) vissza false ;
  550.  
  551. / / Проверка на разрешение
  552. ha ( ! zp_has_round_started ( ) && get_pcvar_num ( g_NOROUND ) )
  553. {
  554. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOROUND" )
  555. vissza false ;
  556. }
  557.  
  558. ha a ( zp_is_nemesis_round ( ) && get_pcvar_num ( g_NEMROUND ) )
  559. {
  560. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NEMROUND" )
  561. vissza false ;
  562. }
  563.  
  564. ha a ( zp_is_survivor_round ( ) && get_pcvar_num ( g_SURVROUND ) )
  565. {
  566. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_SURVROUND" )
  567. vissza false ;
  568. }
  569.  
  570. ha a ( zp_is_swarm_round ( ) && get_pcvar_num ( g_SWARMROUND ) )
  571. {
  572. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_SWARMROUND" )
  573. vissza false ;
  574. }
  575.  
  576. ha a ( g_deployed [ id ] > = get_pcvar_num ( g_LAMMO ) )
  577. {
  578. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_MAXDEPLOY" )
  579. vissza false ;
  580. }
  581.  
  582. ha a ( TeamDeployedCount ( id ) > = get_pcvar_num ( g_LTMAX ) )
  583. {
  584. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_MANYPPL" )
  585. vissza false ;
  586. }
  587. Új Float : vTraceDirection [ 3 ] , Float : vTraceEnd [ 3 ] , Float : vOrigin [ 3 ] ;
  588. PEV ( id, pev_origin , vOrigin ) ;
  589. velocity_by_aim ( id, 128 , vTraceDirection ) ;
  590. xs_vec_add ( vTraceDirection, vOrigin, vTraceEnd ) ;
  591. engfunc ( EngFunc_TraceLine , vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS , id, 0 ) ;
  592. Új Float : fFraction, Float : vTraceNormal [ 3 ] ;
  593. get_tr2 ( 0 , TR_flFraction , fFraction ) ;
  594. / / - We hit valamit!
  595. ha ( fFraction < 1.0 )
  596. {
  597. / / - Save eredmények későbbi használatra.
  598. get_tr2 ( 0 , TR_vecEndPos , vTraceEnd ) ;
  599. get_tr2 ( 0 , TR_vecPlaneNormal , vTraceNormal ) ;
  600.  
  601. vissza true ;
  602. }
  603.  
  604. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_PLANTWALL" )
  605. DeleteTask ( id ) ;
  606. / / - Nem ért valamit. (Nem tömör)
  607. vissza false ;
  608. }
  609.  
  610. nyilvános ltm_Think ( i_Ent )
  611. {
  612. ha ( ! pev_valid ( i_Ent ) )
  613. vissza FMRES_IGNORED ;
  614. új EntityName [ 32 ] ;
  615. PEV ( i_Ent, pev_classname , EntityName, 31 ) ;
  616. ha ( ! get_pcvar_num ( g_LENABLE ) ) visszatérés FMRES_IGNORED ;
  617. / / - Entity nem tripmine, figyelmen kívül hagyva a következő ...
  618. ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) )
  619. vissza FMRES_IGNORED ;
  620.  
  621. statikus Float : fCurrTime;
  622. fCurrTime = get_gametime ( ) ;
  623.  
  624. kapcsolót ( PEV ( i_Ent, LASERMINE_STEP ) )
  625. {
  626. eset POWERUP_THINK :
  627. {
  628. Új Float : fPowerupTime;
  629. PEV ( i_Ent, LASERMINE_POWERUP, fPowerupTime ) ;
  630.  
  631. ha ( fCurrTime > fPowerupTime )
  632. {
  633. set_pev ( i_Ent, pev_solid , SOLID_BBOX ) ;
  634. set_pev ( i_Ent, LASERMINE_STEP, BEAMBREAK_THINK ) ;
  635.  
  636. PlaySound ( i_Ent, ACTIVATE_SOUND ) ;
  637. }
  638. ha a ( get_pcvar_num ( g_LGLOW ) ! = 0 )
  639. {
  640. ha a ( get_pcvar_num ( g_LCLMODE ) == 0 )
  641. {
  642. kapcsolót ( PEV ( i_Ent, LASERMINE_TEAM ) )
  643. {
  644. / / Цвет лазера Зомби
  645. esetben CS_TEAM_T : set_rendering ( i_Ent, kRenderFxGlowShell , Red_Zomb, Green_Zomb, Blue_Zomb, kRenderNormal , 5 ) ;
  646. / / Цвет лазера Человека
  647. esetben CS_TEAM_CT : set_rendering ( i_Ent, kRenderFxGlowShell , Red_Hum, Green_Hum, Blue_Hum, kRenderNormal , 5 ) ;
  648. }
  649. } más
  650. {
  651. / / Цвет лазера, если стоит "одинаковый для всех" цвет
  652. set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5);
  653. }
  654. }
  655. set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,1 ) ;
  656. }
  657. eset BEAMBREAK_THINK :
  658. {
  659. statikus Float : Vend [ 3 ] , Float : vOrigin [ 3 ] ;
  660. PEV ( i_Ent, pev_origin , vOrigin ) ;
  661. PEV ( i_Ent, LASERMINE_BEAMENDPOINT, Vend ) ;
  662.  
  663. statikus iHit, Float : fFraction;
  664. engfunc ( EngFunc_TraceLine , vOrigin, Vend, DONT_IGNORE_MONSTERS , i_Ent, 0 ) ;
  665.  
  666. get_tr2 ( 0 , TR_flFraction , fFraction ) ;
  667. iHit = get_tr2 ( 0 , TR_pHit ) ;
  668.  
  669. / / - Valami letette a lézer.
  670. ha ( fFraction < 1.0 )
  671. {
  672. / / - Figyelmen kívül hagyva mások tripmines entitás.
  673. ha a ( pev_valid ( iHit ) )
  674. {
  675. PEV ( iHit, pev_classname , EntityName, 31 ) ;
  676. / / Игнорим всякую хрень
  677. ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) && ! ​​azonos ( EntityName, gSnarkClassName ) && ! ​​azonos ( EntityName, barnacle_class ) && ! ​​azonos ( EntityName, weapon_box ) )
  678. {
  679. set_pev ( i_Ent, pev_enemy , iHit ) ;
  680.  
  681. ha a ( get_pcvar_num ( g_LMODE ) == MODE_LASERMINE )
  682. CreateLaserDamage ( i_Ent, iHit ) ;
  683. más
  684. ha a ( get_pcvar_num ( g_LFF ) | | CsTeams : PEV ( i_Ent, LASERMINE_TEAM ) ! = cs_get_user_team ( iHit ) )
  685. set_pev ( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ) ;
  686.  
  687. ha ( ! pev_valid ( i_Ent ) ) / / если не верный объект - ничего не делаем. Спасибо DJ_WEST
  688. vissza FMRES_IGNORED ;
  689.  
  690. set_pev ( i_Ent, pev_nextthink , fCurrTime + random_float ( 0,1 , 0,3 ) ) ;
  691. }
  692. }
  693. }
  694. ha a ( get_pcvar_num ( g_LDMGMODE ) ! = 0 )
  695. ha a ( PEV ( i_Ent, LASERMINE_HITING ) ! = iHit )
  696. set_pev ( i_Ent, LASERMINE_HITING, iHit ) ;
  697.  
  698. / / - Tripmine még mindig ott van.
  699. ha a ( pev_valid ( i_Ent ) )
  700. {
  701. statikus Float : fHealth;
  702. PEV ( i_Ent, pev_health , fHealth ) ;
  703.  
  704. ha ( fHealth <= 0,0 | | ( PEV ( i_Ent, pev_flags ) és FL_KILLME ) )
  705. {
  706. set_pev ( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ) ;
  707. set_pev ( i_Ent, pev_nextthink , fCurrTime + random_float ( 0,1 , 0,3 ) ) ;
  708. }
  709.  
  710. statikus Float : fBeamthink;
  711. PEV ( i_Ent, LASERMINE_BEAMTHINK, fBeamthink ) ;
  712.  
  713. ha ( fBeamthink < fCurrTime && get_pcvar_num ( g_LVISIBLE ) )
  714. {
  715. DrawLaser ( i_Ent, vOrigin, Vend ) ;
  716. set_pev ( i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0,1 ) ;
  717. }
  718. set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,01 ) ;
  719. }
  720. }
  721. eset EXPLOSE_THINK :
  722. {
  723. / / - Megállás entitás gondolkodni
  724. set_pev ( i_Ent, pev_nextthink , 0.0 ) ;
  725. PlaySound ( i_Ent, STOP_SOUND ) ;
  726. g_deployed [ PEV ( i_Ent, LASERMINE_OWNER ) ] - ;
  727. CreateExplosion ( i_Ent ) ;
  728. CreateDamage ( i_Ent, get_pcvar_float ( g_LRDMG ) , get_pcvar_float ( g_LRADIUS ) )
  729. RemoveEntity ( i_Ent ) ;
  730. }
  731. }
  732.  
  733. vissza FMRES_IGNORED ;
  734. }
  735.  
  736. PlaySound ( i_Ent, i_SoundType )
  737. {
  738. switch ( i_SoundType )
  739. {
  740. eset POWERUP_SOUND :
  741. {
  742. emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND1, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM ) ;
  743. emit_sound ( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2 , ATTN_NORM , 0 , PITCH_NORM ) ;
  744. }
  745. eset ACTIVATE_SOUND :
  746. {
  747. emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND3, 0.5 , ATTN_NORM , 1. , 75. ) ;
  748. }
  749. eset STOP_SOUND :
  750. {
  751. emit_sound ( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2 , ATTN_NORM , SND_STOP , PITCH_NORM ) ;
  752. emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND3, 0.5 , ATTN_NORM , SND_STOP , 75 ) ;
  753. }
  754. }
  755. }
  756.  
  757. DrawLaser ( i_Ent, const Float : v_Origin [ 3 ] , const Float : v_EndOrigin [ 3 ] )
  758. {
  759. új tcolor [ 3 ] ;
  760. új CsapatID = PEV ( i_Ent, LASERMINE_TEAM ) ;
  761. ha a ( get_pcvar_num ( g_LCLMODE ) == 0 )
  762. {
  763. switch ( CsapatID ) {
  764. eset 1 : {
  765. / / Цвет луча для Зомби
  766. tcolor [ 0 ] = Red_Zomb;
  767. tcolor [ 1 ] = Green_Zomb;
  768. tcolor [ 2 ] = Blue_Zomb;
  769. }
  770. eset 2. : {
  771. / / Цвет луча для Человека
  772. tcolor [ 0 ] = Red_Hum;
  773. tcolor [ 1 ] = Green_Hum;
  774. tcolor [ 2 ] = Blue_Hum;
  775. }
  776. }
  777. } más
  778. {
  779. / / Цвет луча для всез при режиме 1-н луч для всех
  780. tcolor [ 0 ] = random_num ( 50 , 200 ) ;
  781. tcolor [ 1 ] = random_num ( 50 , 200 ) ;
  782. tcolor [ 2 ] = random_num ( 50 , 200 ) ;
  783. }
  784. message_begin ( MSG_BROADCAST , SVC_TEMPENTITY ) ;
  785. write_byte ( TE_BEAMPOINTS ) ;
  786. engfunc ( EngFunc_WriteCoord , v_Origin [ 0 ] ) ;
  787. engfunc ( EngFunc_WriteCoord , v_Origin [ 1 ] ) ;
  788. engfunc ( EngFunc_WriteCoord , v_Origin [ 2 ] ) ;
  789. engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 0 ] ) ; / / Random
  790. engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 1 ] ) ; / / Random
  791. engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 2 ] ) , / / Random
  792. write_short ( gerenda ) ;
  793. write_byte ( 0 ) ;
  794. write_byte ( 0 ) ;
  795. write_byte ( 1 ) , / / Az élet
  796. write_byte ( 5 ) , / / szélesség
  797. write_byte ( 0 ) , / / wave
  798. write_byte ( tcolor [ 0 ] ) ; / / r
  799. write_byte ( tcolor [ 1 ] ) ; / / g
  800. write_byte ( tcolor [ 2 ] ) , / / b
  801. write_byte ( get_pcvar_num ( g_LCBRIGHT ) ) ;
  802. write_byte ( 255 ) ;
  803. message_end ( ) ;
  804. }
  805.  
  806. CreateDamage ( iCurrent, Float : DmgMAX, Float : Radius )
  807. {
  808. / / Get megadott paraméterek
  809. Új Float : vecSrc [ 3 ] ;
  810. PEV ( iCurrent, pev_origin , vecSrc ) ;
  811.  
  812. új AtkID = PEV ( iCurrent, LASERMINE_OWNER ) ;
  813. új CsapatID = PEV ( iCurrent, LASERMINE_TEAM ) ;
  814.  
  815. új ent = - 1 ;
  816. Új Float : tmpdmg = DmgMAX;
  817.  
  818. Új Float : visszarúgás = 0,0 ;
  819. / / Szükséges csinál néhány szép számítások: P
  820. Új Float : Tabsmin [ 3 ] , Float : Tabsmax [ 3 ] ;
  821. Új Float : vecSpot [ 3 ] ;
  822. Új Float : Aabsmin [ 3 ] , Float : Aabsmax [ 3 ] ;
  823. Új Float : vecSee [ 3 ] ;
  824. új trRes;
  825. Új Float : flFraction;
  826. Új Float : vecEndPos [ 3 ] ;
  827. Új Float : távolság;
  828. Új Float : eredet [ 3 ] , Float : vecPush [ 3 ] ;
  829. Új Float : invlen;
  830. Új Float : sebesség [ 3 ] ;
  831. új iHitHP, iHitTeam;
  832. / / Számítása falloff
  833. Új Float : falloff;
  834. ha ( Radius > 0.0 )
  835. {
  836. falloff = DmgMAX / Sugár;
  837. } más {
  838. falloff = 1.0 ;
  839. }
  840. / / Find szörnyek, és a játékosok belül a leírásra sugár
  841. míg a ( ( ent = engfunc ( EngFunc_FindEntityInSphere , enter, vecSrc, Radius ) ) ! = 0 )
  842. {
  843. ha ( ! pev_valid ( enter ) ) is ;
  844. ha ( ! ( PEV ( ent, pev_flags ) és ( FL_CLIENT | FL_FAKECLIENT | FL_MONSTER ) ) )
  845. {
  846. / / Entity nem egy játékos vagy szörny, figyelmen kívül hagyja
  847. folytatódik ;
  848. }
  849. ha ( ! pev_user_alive ( enter ) ) is ;
  850. / / Reset adatok
  851. visszarúgás = 1.0 ;
  852. tmpdmg = DmgMAX;
  853. / / A következő számításokat nyújtott Orangutanz, köszönöm!
  854. / / Használjuk absmin és AbsMax a legpontosabb információkat
  855. PEV ( ent, pev_absmin , Tabsmin ) ;
  856. PEV ( ent, pev_absmax , Tabsmax ) ;
  857. xs_vec_add ( Tabsmin, Tabsmax, Tabsmin ) ;
  858. xs_vec_mul_scalar ( Tabsmin, 0.5 , vecSpot ) ;
  859. PEV ( iCurrent, pev_absmin , Aabsmin ) ;
  860. PEV ( iCurrent, pev_absmax , Aabsmax ) ;
  861. xs_vec_add ( Aabsmin, Aabsmax, Aabsmin ) ;
  862. xs_vec_mul_scalar ( Aabsmin, 0.5 , vecSee ) ;
  863. engfunc ( EngFunc_TraceLine , vecSee, vecSpot, 0 , iCurrent, trRes ) ;
  864. get_tr2 ( trRes, TR_flFraction , flFraction ) ;
  865. / / Robbanás "látni" a szervezet, így árt nekik! (Vagy a hatás a tárgyak engedélyezve xD)
  866. ha ( flFraction > = 0,9 | | get_tr2 ( trRes, TR_pHit ) == ent )
  867. {
  868. / / Dolgozzanak ki a távolságot a hatás és szervezet
  869. get_tr2 ( trRes, TR_vecEndPos , vecEndPos ) ;
  870. távolság = get_distance_f ( vecSrc, vecEndPos ) * falloff;
  871. tmpdmg - = távolság;
  872. ha ( tmpdmg < 0.0 )
  873. tmpdmg = 0.0 ;
  874. / / Visszarúgás Effect
  875. ha ( visszarúgás ! = 0,0 )
  876. {
  877. xs_vec_sub ( vecSpot, vecSee, származás ) ;
  878. invlen = 1.0 / get_distance_f ( vecSpot, vecSee ) ;
  879.  
  880. xs_vec_mul_scalar ( származás, invlen, vecPush ) ;
  881. PEV ( ent, pev_velocity , sebesség )
  882. xs_vec_mul_scalar ( vecPush, tmpdmg, vecPush ) ;
  883. xs_vec_mul_scalar ( vecPush, visszarúgás, vecPush ) ;
  884. xs_vec_add ( sebesség, vecPush, sebesség ) ;
  885. ha ( tmpdmg < 60,0 )
  886. {
  887. xs_vec_mul_scalar ( sebesség, 12.0 , sebesség ) ;
  888. } más {
  889. xs_vec_mul_scalar ( sebesség, 4.0 , sebesség ) ;
  890. }
  891. ha a ( sebesség [ 0 ] ! = 0,0 | | sebesség [ 1 ] ! = 0,0 | | sebesség [ 2 ] ! = 0,0 )
  892. {
  893. / / Van valami mozgás todo <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->
  894. set_pev ( ent, pev_velocity , sebesség )
  895. }
  896. }
  897.  
  898. iHitHP = pev_user_health ( ent ) - floatround ( tmpdmg )
  899. iHitTeam = int : cs_get_user_team ( ent )
  900. ha ( iHitHP <= 0 )
  901. {
  902. ha ( iHitTeam ! = CsapatID )
  903. {
  904. zp_set_user_ammo_packs ( AtkID, zp_get_user_ammo_packs ( AtkID ) + get_pcvar_num ( g_LFMONEY ) )
  905. set_score ( AtkID, enter, 1. , iHitHP )
  906. } más
  907. {
  908. ha a ( get_pcvar_num ( g_LFF ) )
  909. {
  910. zp_set_user_ammo_packs ( AtkID, zp_get_user_ammo_packs ( AtkID ) - get_pcvar_num ( g_LFMONEY ) )
  911. set_score ( AtkID, ent, - 1. , iHitHP )
  912. }
  913. }
  914. } más
  915. {
  916. ha ( iHitTeam ! = CsapatID | | get_pcvar_num ( g_LFF ) )
  917. {
  918. / / Set_pev (Player, pev_health, iHitHP)
  919. set_user_health ( ent, iHitHP )
  920. engfunc ( EngFunc_MessageBegin , MSG_ONE_UNRELIABLE , g_msgDamage, { 0.0 , 0.0 , 0.0 } , ent ) ;
  921. write_byte ( floatround ( tmpdmg ) )
  922. write_byte ( floatround ( tmpdmg ) )
  923. write_long ( DMG_BULLET )
  924. engfunc ( EngFunc_WriteCoord , vecSrc [ 0 ] )
  925. engfunc ( EngFunc_WriteCoord , vecSrc [ 1 ] )
  926. engfunc ( EngFunc_WriteCoord , vecSrc [ 2 ] )
  927. message_end ( )
  928. }
  929. }
  930. }
  931. }
  932. visszatérés
  933. }
  934.  
  935. bool : pev_user_alive ( ent )
  936. {
  937. új deadflag = PEV ( ent, pev_deadflag ) ;
  938. ha ( deadflag ! = DEAD_NO )
  939. vissza false ;
  940. vissza true ;
  941. }
  942.  
  943. CreateExplosion ( iCurrent )
  944. {
  945. Új Float : vOrigin [ 3 ] ;
  946. PEV ( iCurrent, pev_origin , vOrigin ) ;
  947.  
  948. message_begin ( MSG_BROADCAST , SVC_TEMPENTITY ) ;
  949. write_byte ( 99 ) , / / 99 = KillBeam
  950. write_short ( iCurrent ) ;
  951. message_end ( ) ;
  952.  
  953. engfunc ( EngFunc_MessageBegin , MSG_PVS , SVC_TEMPENTITY , vOrigin, 0 ) ;
  954. write_byte ( TE_EXPLOSION ) ;
  955. engfunc ( EngFunc_WriteCoord , vOrigin [ 0 ] ) ;
  956. engfunc ( EngFunc_WriteCoord , vOrigin [ 1 ] ) ;
  957. engfunc ( EngFunc_WriteCoord , vOrigin [ 2 ] ) ;
  958. write_short ( boom ) ;
  959. write_byte ( 30 ) ;
  960. write_byte ( 15 ) ;
  961. write_byte ( 0 ) ;
  962. message_end ( ) ;
  963. }
  964.  
  965. CreateLaserDamage ( iCurrent, isHit )
  966. {
  967. ha ( isHit < 0 ) visszatérés PLUGIN_CONTINUE
  968. kapcsolót ( get_pcvar_num ( g_LDMGMODE ) )
  969. {
  970. eset 1 :
  971. {
  972. ha a ( PEV ( iCurrent, LASERMINE_HITING ) == isHit )
  973. vissza PLUGIN_CONTINUE
  974. }
  975. eset 2. :
  976. {
  977. ha a ( PEV ( iCurrent, LASERMINE_HITING ) == isHit )
  978. {
  979. statikus Float : CNT
  980. statikus most htime, most = floatround ( get_gametime ( ) )
  981.  
  982. PEV ( iCurrent, LASERMINE_COUNT, CNT )
  983. htime = floatround ( CNT )
  984. ha ( jelenleg - htime < get_pcvar_num ( g_LDSEC ) )
  985. {
  986. vissza PLUGIN_CONTINUE ;
  987. } más {
  988. set_pev ( iCurrent, LASERMINE_COUNT, get_gametime ( ) )
  989. }
  990. } más
  991. {
  992. set_pev ( iCurrent, LASERMINE_COUNT, get_gametime ( ) )
  993. }
  994. }
  995. }
  996.  
  997. Új Float : vOrigin [ 3 ] , Float : Vend [ 3 ]
  998. PEV ( iCurrent, pev_origin , vOrigin )
  999. PEV ( iCurrent, pev_vuser1 , Vend )
  1000.  
  1001. új CsapatID = PEV ( iCurrent, LASERMINE_TEAM )
  1002.  
  1003. új szClassName [ 32 ]
  1004. új Alive, Isten
  1005. új iHitTeam, iHitHP, id
  1006. új hitscore
  1007.  
  1008. szClassName [ 0 ] = '^ 0'
  1009. PEV ( isHit, pev_classname , szClassName, 32 )
  1010. ha a ( ( PEV ( isHit, pev_flags ) és ( FL_CLIENT | FL_FAKECLIENT | FL_MONSTER ) ) )
  1011. {
  1012. Alive = pev_user_alive ( isHit )
  1013. Isten = get_user_godmode ( isHit )
  1014. ha ( ! Alive | | God ) visszatérés PLUGIN_CONTINUE
  1015. iHitTeam = int : cs_get_user_team ( isHit )
  1016. iHitHP = pev_user_health ( isHit ) - get_pcvar_num ( g_LDMG )
  1017. id = PEV ( iCurrent, LASERMINE_OWNER ) / /, szNetName [32]
  1018. ha ( iHitHP <= 0 )
  1019. {
  1020. ha ( iHitTeam ! = CsapatID )
  1021. {
  1022. emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
  1023. hitscore = 1
  1024. zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) + get_pcvar_num ( g_LFMONEY ) )
  1025. set_score ( id, isHit, hitscore, iHitHP )
  1026. } más
  1027. {
  1028. ha a ( get_pcvar_num ( g_LFF ) )
  1029. {
  1030. emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
  1031. hitscore = - 1
  1032. zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) - get_pcvar_num ( g_LFMONEY ) )
  1033. set_score ( id, isHit, hitscore, iHitHP )
  1034. }
  1035. }
  1036. } még ha ( iHitTeam ! = CsapatID | | get_pcvar_num ( g_LFF ) )
  1037. {
  1038. emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
  1039. set_user_health ( isHit, iHitHP )
  1040. set_pev ( iCurrent, LASERMINE_HITING, isHit ) ;
  1041. engfunc ( EngFunc_MessageBegin , MSG_ONE_UNRELIABLE , g_msgDamage, { 0.0 , 0.0 , 0.0 } , isHit ) ;
  1042. write_byte ( get_pcvar_num ( g_LDMG ) )
  1043. write_byte ( get_pcvar_num ( g_LDMG ) )
  1044. write_long ( DMG_BULLET )
  1045. engfunc ( EngFunc_WriteCoord , vOrigin [ 0 ] )
  1046. engfunc ( EngFunc_WriteCoord , vOrigin [ 1 ] )
  1047. engfunc ( EngFunc_WriteCoord , vOrigin [ 2 ] )
  1048. message_end ( )
  1049. }
  1050. } különben ha ( az egyenlő ( szClassName, ENT_CLASS_NAME3 ) )
  1051. {
  1052. új hl;
  1053. hl = pev_user_health ( isHit ) ;
  1054. set_user_health ( isHit, hl - get_pcvar_num ( g_LDMG ) ) ;
  1055. }
  1056. vissza PLUGIN_CONTINUE
  1057. }
  1058.  
  1059. állomány pev_user_health ( id )
  1060. {
  1061. Új Float : egészség
  1062. PEV ( id, pev_health , egészségügy )
  1063. vissza floatround ( egészségügyi )
  1064. }
  1065.  
  1066. állomány set_user_health ( id, egészségügy )
  1067. {
  1068. egészség > 0 ? set_pev ( id, pev_health , float ( egészségügy ) ) : dllfunc ( DLLFunc_ClientKill , id ) ;
  1069. }
  1070.  
  1071. állomány get_user_godmode ( index ) {
  1072. Új Float : val
  1073. PEV ( index, pev_takedamage , val )
  1074.  
  1075. vissza ( val == DAMAGE_NO )
  1076. }
  1077.  
  1078. állomány set_user_frags ( index, felszerelést )
  1079. {
  1080. set_pev ( index, pev_frags , float ( felszerelést ) )
  1081.  
  1082. vissza 1
  1083. }
  1084.  
  1085. állomány pev_user_frags ( index )
  1086. {
  1087. Új Float : felszerelést;
  1088. PEV ( index, pev_frags , felszerelést ) ;
  1089. vissza floatround ( felszerelést ) ;
  1090. }
  1091.  
  1092. set_score ( id, cél, hitscore, HP ) {
  1093.  
  1094. új idfrags = pev_user_frags ( id ) + hitscore / / get_user_frags (id) + hitscore
  1095. set_user_frags ( id, idfrags )
  1096. új tarfrags = pev_user_frags ( target ) + 1 / / get_user_frags (target) + 1
  1097. set_user_frags ( cél, tarfrags )
  1098. új idteam = int : cs_get_user_team ( id )
  1099. új iddeaths = cs_get_user_deaths ( id )
  1100.  
  1101.  
  1102. message_begin ( MSG_ALL , g_msgDeathMsg, { 0 , 0 , 0 } , 0 )
  1103. write_byte ( id )
  1104. write_byte ( target )
  1105. write_byte ( 0 )
  1106. write_string ( ENT_CLASS_NAME )
  1107. message_end ( )
  1108.  
  1109. message_begin ( MSG_ALL , g_msgScoreInfo )
  1110. write_byte ( id )
  1111. write_short ( idfrags )
  1112. write_short ( iddeaths )
  1113. write_short ( 0 )
  1114. write_short ( idteam )
  1115. message_end ( )
  1116.  
  1117. set_msg_block ( g_msgDeathMsg, BLOCK_ONCE )
  1118.  
  1119. set_user_health ( cél, HP )
  1120.  
  1121. }
  1122.  
  1123. nyilvános BuyLasermine ( id )
  1124. {
  1125. ha ( ! CanCheck ( id, 1. ) ) vissza PLUGIN_CONTINUE
  1126.  
  1127. g_havemine [ id ] + + ;
  1128.  
  1129. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_BOUGHT" )
  1130.  
  1131. emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
  1132. ShowAmmo ( id )
  1133. vissza PLUGIN_HANDLED
  1134. }
  1135.  
  1136. nyilvános BuyLasermineChat ( id )
  1137. {
  1138. ha ( ! CanCheck ( id, 1. ) ) vissza PLUGIN_CONTINUE
  1139.  
  1140. zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) - get_pcvar_num ( g_LCOST ) )
  1141. g_havemine [ id ] + + ;
  1142.  
  1143. client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_BOUGHT" )
  1144.  
  1145. emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
  1146. ShowAmmo ( id )
  1147. vissza PLUGIN_HANDLED
  1148. }
  1149.  
  1150. nyilvános zp_extra_item_selected ( id, Itemid )
  1151. {
  1152. ha ( Itemid == g_LME )
  1153. BuyLasermine ( id )
  1154.  
  1155. ha a ( g_havemine [ id ] > = get_pcvar_num ( g_LAMMO ) )
  1156. vissza ZP_PLUGIN_HANDLED
  1157.  
  1158. vissza PLUGIN_CONTINUE
  1159. }
  1160.  
  1161. ShowAmmo ( id )
  1162. {
  1163. új lőszer [ 51 ]
  1164. új PlugStat [ 555 char ] ;
  1165. formatex ( PlugStat, charsmax ( PlugStat ) , "% L" , LANG_PLAYER , "STR_STATE" )
  1166. formatex ( lőszer, 50 , "% s% i /% i" , PlugStat, g_havemine [ id ] , get_pcvar_num ( g_LAMMO ) )
  1167.  
  1168. message_begin ( MSG_ONE , g_msgStatusText, { 0 , 0 , 0 } , id )
  1169. write_byte ( 0 )
  1170. write_string ( lőszer )
  1171. message_end ( )
  1172. }
  1173.  
  1174. nyilvános showInfo ( id )
  1175. {
  1176. client_print ( id, print_chat , "% L" , id, "STR_REF" )
  1177. }
  1178.  
  1179. nyilvános say_lasermine ( id ) {
  1180. Új mondta [ 32 ]
  1181. read_argv ( 1 , azt mondta, 31 ) ;
  1182. ha ( ! get_pcvar_num ( g_LENABLE ) )
  1183. {
  1184. vissza PLUGIN_CONTINUE
  1185. }
  1186. ha a ( kiegyenlítési ( azt mondta, "/ buy lasermine" ) | | kiegyenlítési ( azt mondta, "/ m" ) | | kiegyenlítési ( azt mondta, "buy_lasermine" ) ) {
  1187. BuyLasermineChat ( id )
  1188. } még ha ( kiegyenlítési ( azt mondta, "lasermine" ) | | kiegyenlítési ( azt mondta, "/ lasermine" ) ) {
  1189. const SIZE = 1024
  1190. új msg [ SIZE + 1 ] , len = 0 ;
  1191. len + = formatex ( msg [ len ] , SIZE - len, "<html> <body>" )
  1192. len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer </ b> </ p> <blockquote>" )
  1193. len + = formatex ( msg [ len ] , SIZE - len, "<p> Fel tudsz Tenni a falra lezert. </ p> <br/>" )
  1194. len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer megoli AZ ellenfeleket, ha belemennek! </ p> <blockquote>" )
  1195. len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer parancsok: </ b> </ p> <blockquote>" )
  1196. len + = formatex ( msg [ len ] , SIZE - len, "<p> Ird: / buy lasermine </ b> vagy <b> / lm </ b> hogy lezert vehess! <br/>" )
  1197. len + = formatex ( msg [ len ] , SIZE - len, "<b> buy_lasermine </ b> / / Hogy F2-vel lezert vehess, ird a consolba: bind ^" F2 ^ "buy_lasermine <br/>" )
  1198. len + = formatex ( msg [ len ] , SIZE - len, "<b> + setlaser </ b> / / bind mouse3 + setlaser: a mouse3 set lasermine falra <br/>" )
  1199. len + = formatex ( msg [ len ] , SIZE - len, "</ body> </ html>" )
  1200. show_motd ( id, msg, "Lasermine Entity help" )
  1201. vissza PLUGIN_CONTINUE
  1202. }
  1203. még ha ( containi ( azt mondta, "lézer" ) ! = - 1 ) {
  1204. showInfo ( id )
  1205. vissza PLUGIN_CONTINUE
  1206. }
  1207. vissza PLUGIN_CONTINUE
  1208. }
  1209.  
  1210. nyilvános álló ( id )
  1211. {
  1212. ha ( ! g_settinglaser [ id ] )
  1213. vissza PLUGIN_CONTINUE
  1214.  
  1215. set_pev ( id, pev_maxspeed , 1.0 )
  1216.  
  1217. vissza PLUGIN_CONTINUE
  1218. }
  1219.  
  1220. nyilvános ltm_PostThink ( id )
  1221. {
  1222. ha ( ! g_settinglaser [ id ] && plsetting [ id ] ) {
  1223. resetspeed ( id )
  1224. }
  1225. még ha a ( g_settinglaser [ id ] && ! ​​plsetting [ id ] ) {
  1226. PEV ( id, pev_maxspeed , plspeed [ id ] )
  1227. set_pev ( id, pev_maxspeed , 1.0 )
  1228. }
  1229. plsetting [ id ] = g_settinglaser [ id ]
  1230. vissza FMRES_IGNORED
  1231. }
  1232.  
  1233. nyilvános ltm_PreThink ( id )
  1234. {
  1235. ha ( ! pev_user_alive ( id ) | | g_settinglaser [ id ] == true | | is_user_bot ( id ) | | get_pcvar_num ( g_LCMDMODE ) == 1 )
  1236. vissza FMRES_IGNORED ;
  1237.  
  1238. ha a ( PEV ( id, pev_button ) és IN_USE && ! ​​( PEV ( id, pev_oldbuttons ) és IN_USE ) )
  1239. CreateLaserMine_Progress ( id )
  1240. vissza FMRES_IGNORED ;
  1241. }
  1242.  
  1243. resetspeed ( id )
  1244. {
  1245. set_pev ( id, pev_maxspeed , plspeed [ id ] )
  1246. }
  1247.  
  1248. nyilvános client_putinserver ( id ) {
  1249. g_deployed [ id ] = 0 ;
  1250. g_havemine [ id ] = 0 ;
  1251. DeleteTask ( id ) ;
  1252. vissza PLUGIN_CONTINUE
  1253. }
  1254.  
  1255. nyilvános client_disconnect ( id ) {
  1256. ha ( ! get_pcvar_num ( g_LENABLE ) )
  1257. vissza PLUGIN_CONTINUE
  1258. DeleteTask ( id ) ;
  1259. RemoveAllTripmines ( id ) ;
  1260. vissza PLUGIN_CONTINUE
  1261. }
  1262.  
  1263.  
  1264. nyilvános newround ( id ) {
  1265. ha ( ! get_pcvar_num ( g_LENABLE ) )
  1266. vissza PLUGIN_CONTINUE
  1267. PEV ( id, pev_maxspeed , plspeed [ id ] )
  1268. DeleteTask ( id ) ;
  1269. RemoveAllTripmines ( id ) ;
  1270. / / Client_print (id, print_chat, "[ZP] [LM] [DEBUG] Minden Mines removied!");
  1271. delaycount ( id ) ;
  1272. SetStartAmmo ( id ) ;
  1273. vissza PLUGIN_CONTINUE
  1274. }
  1275.  
  1276. nyilvános endround ( id )
  1277. {
  1278. ha ( ! get_pcvar_num ( g_LENABLE ) )
  1279. vissza PLUGIN_CONTINUE
  1280.  
  1281. / / Удаление мин после конца раунда
  1282. DeleteTask ( id ) ;
  1283. RemoveAllTripmines ( id ) ;
  1284.  
  1285. vissza PLUGIN_CONTINUE
  1286. }
  1287.  
  1288. nyilvános DeathEvent ( ) {
  1289. ha ( ! get_pcvar_num ( g_LENABLE ) )
  1290. vissza PLUGIN_CONTINUE
  1291.  
  1292. új id = read_data ( 2 )
  1293. ha a ( is_user_connected ( id ) ) DeleteTask ( id ) ;
  1294. vissza PLUGIN_CONTINUE
  1295. }
  1296.  
  1297. nyilvános RemoveAllTripmines ( i_Owner )
  1298. {
  1299. új jének = g_MaxPL + 1 ;
  1300. új clsname [ 32 ] ;
  1301. míg a ( ( jének = engfunc ( EngFunc_FindEntityByString , jének, "Besorolása" , ENT_CLASS_NAME ) ) )
  1302. {
  1303. ha ( i_Owner )
  1304. {
  1305. ha a ( PEV ( jének, LASERMINE_OWNER ) ! = i_Owner )
  1306. folytatódik ;
  1307. clsname [ 0 ] = '^ 0'
  1308. PEV ( jének, pev_classname , clsname, sizeof ( clsname ) - 1 ) ;
  1309. ha a ( kiegyenlítési ( clsname, ENT_CLASS_NAME ) )
  1310. {
  1311. PlaySound ( jének, STOP_SOUND ) ;
  1312. RemoveEntity ( jének ) ;
  1313. }
  1314. }
  1315. más
  1316. set_pev ( jének, pev_flags , FL_KILLME ) ;
  1317. }
  1318. g_deployed [ i_Owner ] = 0 ;
  1319. }
  1320.  
  1321. SetStartAmmo ( id )
  1322. {
  1323. új stammo = get_pcvar_num ( g_LSTAMMO ) ;
  1324. ha ( stammo <= 0 ) visszatérés PLUGIN_CONTINUE ;
  1325. g_havemine [ id ] = ( g_havemine [ id ] <= stammo ) ? stammo : g_havemine [ id ] ;
  1326. vissza PLUGIN_CONTINUE ;
  1327. }
  1328.  
  1329. nyilvános CutDeploy_onDamage ( id )
  1330. {
  1331. ha a ( get_user_health ( id ) < 1 )
  1332. DeleteTask ( id ) ;
  1333. }
  1334.  
  1335. DeleteTask ( id )
  1336. {
  1337. ha a ( task_exists ( ( TASK_PLANT + id ) ) )
  1338. {
  1339. remove_task ( ( TASK_PLANT + id ) )
  1340. }
  1341. ha a ( task_exists ( ( TASK_RELEASE + id ) ) )
  1342. {
  1343. remove_task ( ( TASK_RELEASE + id ) )
  1344. }
  1345. g_settinglaser [ id ] = false
  1346. vissza PLUGIN_CONTINUE ;
  1347. }
  1348.  
  1349. állomány set_rendering ( entitás, fx = kRenderFxNone , r = 255 , G = 255 , b = 255 , render = kRenderNormal , mennyiség = 16 )
  1350. {
  1351. statikus Float : RenderColor [ 3 ] ;
  1352. RenderColor [ 0 ] = float ( r ) ;
  1353. RenderColor [ 1 ] = float ( g ) ;
  1354. RenderColor [ 2 ] = float ( b ) ;
  1355.  
  1356. set_pev ( szervezet, pev_renderfx , fx ) ;
  1357. set_pev ( szervezet, pev_rendercolor , RenderColor ) ;
  1358. set_pev ( szervezet, pev_rendermode , render ) ;
  1359. set_pev ( szervezet, pev_renderamt , float ( mennyiség ) ) ;
  1360.  
  1361. vissza 1
  1362. }
  1363.  
  1364. / / Gets korrekciós adatokat
  1365. get_offset_value ( id, típus )
  1366. {
  1367. új kulcs = - 1 ;
  1368. switch ( típus )
  1369. {
  1370. eset OFFSET_TEAM : kulcs = OFFSET_TEAM;
  1371. eset OFFSET_MONEY :
  1372. kulcs = OFFSET_MONEY;
  1373. eset OFFSET_DEATH : kulcs = OFFSET_DEATH;
  1374. }
  1375. ha ( kulcs ! = - 1 )
  1376. {
  1377. ha a ( is_amd64_server ( ) ) billentyű + = 25 ;
  1378. vissza get_pdata_int ( id, kulcs ) ;
  1379. }
  1380. vissza - 1 ;
  1381. }
  1382. állomány print_color ( const id, const input [ ] minden : ... )
  1383. {
  1384. új count = 1 , a játékosok [ 32 ]
  1385. statikus msg [ 191 ]
  1386. vformat ( msg, 190 , bemenet, 3 )
  1387.  
  1388. replace_all ( MSG, 190 , "! g" , "^ 4" )
  1389. replace_all ( msg, 190 , "! y" , "^ 1" )
  1390. replace_all ( msg, 190 , "! t" , "^ 3" )
  1391. replace_all ( MSG, 190 , "" , "a" )
  1392. replace_all ( msg, 190 , "" , "e" )
  1393. replace_all ( msg, 190 , "" , "i" )
  1394. replace_all ( msg, 190 , "" , "ó" )
  1395. replace_all ( msg, 190 , "" , "ö" )
  1396. replace_all ( msg, 190 , "" , "O" )
  1397. replace_all ( msg, 190 , "" , "U" )
  1398. replace_all ( msg, 190 , "" , "ü" )
  1399. replace_all(msg, 190, "", "ű")
  1400. replace_all ( MSG, 190 , "" , "a" )
  1401. replace_all ( MSG, 190 , "" , "e" )
  1402. replace_all ( msg, 190 , "" , "i" )
  1403. replace_all ( msg, 190 , "" , "Ó" )
  1404. replace_all ( msg, 190 , "" , "O" )
  1405. replace_all ( msg, 190 , "" , "Ő" )
  1406. replace_all ( msg, 190 , "" , "U" )
  1407. replace_all ( msg, 190 , "" , "Ü" )
  1408. replace_all ( msg, 190 , "" , "U" )
  1409.  
  1410. ha ( id ) játékosok [ 0 ] = id, különben get_players ( játékosok száma, "ch" )
  1411. {
  1412. az ( új i = 0 , i < count, i + + )
  1413. {
  1414. ha a ( is_user_connected ( játékosok [ i ] ) )
  1415. {
  1416. message_begin ( MSG_ONE_UNRELIABLE , get_user_msgid ( "SayText" ) , _, a játékosok [ i ] )
  1417. write_byte ( játékosok [ i ] )
  1418. write_string ( msg )
  1419. message_end ( )
  1420. }
  1421. }
  1422. }
  1423. vissza PLUGIN_HANDLED
  1424. }
  1425.  


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.14. 13:03 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Pont ráértem volna, de nicns rendes kód, ezt meg nem javítam neked.

Kód:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

C:\Users\Kiki\Desktop\asd.sma(1) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(5) : error 070: rational number support was not enabled
C:\Users\Kiki\Desktop\asd.sma(9) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(15) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(19) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(23) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(28) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(34) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(37) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(44) : error 031: unknown directive
C:\Users\Kiki\Desktop\asd.sma(49) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(56) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(96) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(108) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(115) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(125) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(127) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(129) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(131) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(132) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(133) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(133) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(134) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(134) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(135) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(135) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(136) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(136) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(137) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(137) : warning 218: old style prototypes used with optional semicolumns
C:\Users\Kiki\Desktop\asd.sma(139) : error 010: invalid function or declaration
C:\Users\Kiki\Desktop\asd.sma(168) : error 010: invalid function or declaration

Compilation aborted.
26 Errors.
Could not locate output file C:\Users\Kiki\Desktop\asd.amx (compile failed).

Compilation Time: 0,75 sec


Öszintén????????????? Mi a **** ez?

SMA Forráskód: [ Mindet kijelol ]
  1. új const
  2. ENT_CLASS_NAME [ ] = "lasermine" ,
  3. ENT_CLASS_NAME3 [ ] = "func_breakable" ,
  4. gSnarkClassName [ ] = "wpn_snark" , / / ??? ????????????? ? ???????? "Snark"
  5. barnacle_class [ ] = "Barnacle" , / / ??? ????????????? ? ???????? "Barnacle"
  6. weapon_box [ ] = "weaponbox" ;
  7.  
  8. új g_EntMine, gerenda, bumm
  9. új g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND, g_NEMROUND, g_SURVROUND, g_SWARMROUND
  10. új g_LRDMG, g_LFF, g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE
  11. új g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;
  12. új g_msgDeathMsg, g_msgScoreInfo, g_msgDamage, g_msgStatusText;
  13. új g_dcount [ 33 ] , g_nowtime, g_MaxPL
  14. új bool : g_settinglaser [ 33 ]
  15. Új Float : plspeed [ 33 ] , plsetting [ 33 ] , g_havemine [ 33 ] , g_deployed [ 33 ] ;
  16. / / New CVAR_LMCost


ez viccnek is rossz

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.14. 13:31 
Offline
Jómunkásember

Csatlakozott: 2012.01.29. 12:48
Hozzászólások: 408
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 126 alkalommal
[profil]gladiator[/profil]

Másold be az érintetlen forráskódot, amilyen még a google fordító előtt volt :lol:


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.14. 14:24 
Offline
Őstag
Avatar

Csatlakozott: 2011.11.15. 16:29
Hozzászólások: 1142
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 24 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <xs>
  5. #include <zombieplague>
  6.  
  7. #if AMXX_VERSION_NUM < 180
  8. #assert AMX Mod X v1.8.0 or greater library required!
  9. #endif
  10.  
  11. #define PLUGIN "[ZP] LaserMine"
  12. #define VERSION "2.8.1"
  13. #define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST"
  14.  
  15. #define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)
  16. #define TASK_PLANT 15100
  17. #define TASK_RESET 15500
  18. #define TASK_RELEASE 15900
  19.  
  20. #define LASERMINE_TEAM pev_iuser1 //EV_INT_iuser1
  21. #define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3
  22. #define LASERMINE_STEP pev_iuser3
  23. #define LASERMINE_HITING pev_iuser4
  24. #define LASERMINE_COUNT pev_fuser1
  25.  
  26. #define LASERMINE_POWERUP pev_fuser2
  27. #define LASERMINE_BEAMTHINK pev_fuser3
  28.  
  29. #define LASERMINE_BEAMENDPOINT pev_vuser1
  30. #define MAX_MINES 10
  31. #define MODE_LASERMINE 0
  32. #define OFFSET_TEAM 114
  33. #define OFFSET_MONEY 115
  34. #define OFFSET_DEATH 444
  35.  
  36. #define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM)
  37. #define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)
  38.  
  39.  
  40. new const LMCost = 40
  41.  
  42.  
  43.  
  44.  
  45. new const
  46. Red_Hum = 0,
  47. Green_Hum = 255,
  48. Blue_Hum = 0;
  49.  
  50. //
  51. new const
  52. Red_Zomb = 255,
  53. Green_Zomb = 0,
  54. Blue_Zomb = 0;
  55.  
  56.  
  57. enum CsTeams {
  58. CS_TEAM_UNASSIGNED = 0,
  59. CS_TEAM_T = 1,
  60. CS_TEAM_CT = 2,
  61. CS_TEAM_SPECTATOR = 3
  62. };
  63.  
  64. enum tripmine_e {
  65. TRIPMINE_IDLE1 = 0,
  66. TRIPMINE_IDLE2,
  67. TRIPMINE_ARM1,
  68. TRIPMINE_ARM2,
  69. TRIPMINE_FIDGET,
  70. TRIPMINE_HOLSTER,
  71. TRIPMINE_DRAW,
  72. TRIPMINE_WORLD,
  73. TRIPMINE_GROUND,
  74. };
  75.  
  76. enum
  77. {
  78. POWERUP_THINK,
  79. BEAMBREAK_THINK,
  80. EXPLOSE_THINK
  81. };
  82.  
  83. enum
  84. {
  85. POWERUP_SOUND,
  86. ACTIVATE_SOUND,
  87. STOP_SOUND
  88. };
  89.  
  90. new const
  91. ENT_MODELS[] = "models/v_laser_mine.mdl",
  92. ENT_SOUND1[] = "weapons/mine_deploy.wav",
  93. ENT_SOUND2[] = "weapons/mine_charge.wav",
  94. ENT_SOUND3[] = "weapons/mine_activate.wav",
  95. ENT_SOUND4[] = "items/suitchargeok1.wav",
  96. ENT_SOUND5[] = "items/gunpickup2.wav",
  97. ENT_SOUND6[] = "debris/bustglass1.wav",
  98. ENT_SOUND7[] = "debris/bustglass2.wav",
  99. ENT_SPRITE1[] = "sprites/laserbeam.spr",
  100. ENT_SPRITE2[] = "sprites/lm_explode.spr";
  101.  
  102. new const
  103. ENT_CLASS_NAME[] = "lasermine",
  104. ENT_CLASS_NAME3[] = "func_breakable",
  105. gSnarkClassName[] = "wpn_snark",
  106. barnacle_class[] = "barnacle",
  107. weapon_box[] = "weaponbox";
  108.  
  109. new g_EntMine, beam, boom
  110. new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND, g_NEMROUND, g_SURVROUND, g_SWARMROUND
  111. new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE
  112. new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;
  113. new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText;
  114. new g_dcount[33],g_nowtime,g_MaxPL
  115. new bool:g_settinglaser[33]
  116. new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33];
  117. //new CVAR_LMCost
  118.  
  119. public plugin_init()
  120. {
  121. register_plugin(PLUGIN, VERSION, AUTHOR);
  122.  
  123. //
  124.  
  125. g_LME = zp_register_extra_item("Laser Mine", LMCost, ZP_TEAM_ANY)
  126.  
  127. // ENT_CLASS_NAME3 (func_breakable)
  128. RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage")
  129. // Add your code here...
  130. register_clcmd("+setlaser","CreateLaserMine_Progress_b");
  131. register_clcmd("-setlaser","StopCreateLaserMine");
  132. register_clcmd("+dellaser","ReturnLaserMine_Progress");
  133. register_clcmd("-dellaser","StopReturnLaserMine");
  134. register_clcmd("say","say_lasermine");
  135. register_clcmd("buy_lasermine","BuyLasermine");
  136.  
  137. g_LENABLE = register_cvar("zp_ltm","1")
  138. g_LACCESS = register_cvar("zp_ltm_acs","0") //0 all, 1 admin
  139. g_LMODE = register_cvar("zp_ltm_mode","0") //0 lasermine, 1 tripmine
  140. g_LAMMO = register_cvar("zp_ltm_ammo","3")
  141. g_LDMG = register_cvar("zp_ltm_dmg","60") //laser hit dmg
  142. g_LCOST = register_cvar("zp_ltm_cost","2")
  143. g_LFMONEY = register_cvar("zp_ltm_fragmoney","1")
  144. g_LHEALTH = register_cvar("zp_ltm_health","500")
  145. g_LTMAX = register_cvar("zp_ltm_teammax","100")
  146. g_LRADIUS = register_cvar("zp_ltm_radius","320.0")
  147. g_LRDMG = register_cvar("zp_ltm_rdmg","100") //radius damage
  148. g_LFF = register_cvar("zp_ltm_ff","0")
  149. g_LCBT = register_cvar("zp_ltm_cbt","ALL")
  150. g_LDELAY = register_cvar("zp_ltm_delay","0.1")
  151. g_LVISIBLE = register_cvar("zp_ltm_line","1")
  152. g_LGLOW = register_cvar("zp_ltm_glow","0")
  153. g_LCBRIGHT = register_cvar("zp_ltm_bright","255")//laser line brightness.
  154. g_LCLMODE = register_cvar("zp_ltm_color","0") //0 is team color,1 is green
  155. g_LDMGMODE = register_cvar("zp_ltm_ldmgmode","0") //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
  156. g_LDSEC = register_cvar("zp_ltm_ldmgseconds","1") //mode 2 only, damage / seconds. default 1 (sec)
  157. g_LSTAMMO = register_cvar("zp_ltm_startammo","2")
  158. g_LBUYMODE = register_cvar("zp_ltm_buymode","1");
  159. g_LCMDMODE = register_cvar("zp_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
  160. g_LBEO = register_cvar("zp_ltm_brokeenemy","1");
  161. g_NOROUND = register_cvar("zp_ltm_noround","1");
  162. g_NEMROUND = register_cvar("zp_ltm_nemround","1");
  163. g_SURVROUND = register_cvar("zp_ltm_survround","1");
  164. g_SWARMROUND = register_cvar("zp_ltm_swarmround","1");
  165.  
  166. register_event("DeathMsg", "DeathEvent", "a");
  167. register_event("CurWeapon", "standing", "be", "1=1");
  168. register_event("ResetHUD", "delaycount", "a");
  169. register_event("ResetHUD", "newround", "b");
  170. register_logevent("endround", 2, "0=World triggered", "1=Round_End"); //
  171. register_event("Damage","CutDeploy_onDamage","b");
  172. g_msgDeathMsg = get_user_msgid("DeathMsg");
  173. g_msgScoreInfo = get_user_msgid("ScoreInfo");
  174. g_msgDamage = get_user_msgid("Damage");
  175. g_msgStatusText = get_user_msgid("StatusText");
  176.  
  177. // Forward.
  178. register_forward(FM_Think, "ltm_Think");
  179. register_forward(FM_PlayerPostThink, "ltm_PostThink");
  180. register_forward(FM_PlayerPreThink, "ltm_PreThink");
  181.  
  182. //
  183. register_dictionary("LaserMines.txt")
  184. register_cvar("Shidla", "[ZP] LaserMines v.2.8.1 Final", FCVAR_SERVER|FCVAR_SPONLY)
  185. }
  186.  
  187. public plugin_precache()
  188. {
  189. precache_sound(ENT_SOUND1);
  190. precache_sound(ENT_SOUND2);
  191. precache_sound(ENT_SOUND3);
  192. precache_sound(ENT_SOUND4);
  193. precache_sound(ENT_SOUND5);
  194. precache_sound(ENT_SOUND6);
  195. precache_sound(ENT_SOUND7);
  196. precache_model(ENT_MODELS);
  197. beam = precache_model(ENT_SPRITE1);
  198. boom = precache_model(ENT_SPRITE2);
  199. return PLUGIN_CONTINUE;
  200. }
  201.  
  202. public plugin_modules()
  203. {
  204. require_module("fakemeta");
  205. require_module("cstrike");
  206. }
  207.  
  208. public plugin_cfg()
  209. {
  210. g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);
  211. arrayset(g_havemine,0,sizeof(g_havemine));
  212. arrayset(g_deployed,0,sizeof(g_deployed));
  213. g_MaxPL = get_maxplayers();
  214.  
  215. new file[64]; get_localinfo("amxx_configsdir",file,63);
  216. format(file, 63, "%s/zp_ltm_cvars_ap.cfg", file);
  217. if(file_exists(file)) server_cmd("exec %s", file), server_exec();
  218. }
  219.  
  220. public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage)
  221. {
  222. if(get_pcvar_num(g_LBEO))
  223. {
  224. new i_Owner, flags
  225.  
  226. //
  227. i_Owner = pev(victim, LASERMINE_OWNER)
  228. flags = get_user_flags(attacker)
  229.  
  230. //
  231. if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker))
  232. //
  233. if(i_Owner != attacker)
  234. {
  235. if (flags & ADMIN_KICK)
  236. return PLUGIN_CONTINUE
  237. else
  238. return HAM_SUPERCEDE
  239. }
  240. return PLUGIN_CONTINUE
  241. }
  242. return PLUGIN_CONTINUE
  243. }
  244.  
  245. public delaycount(id)
  246. {
  247. g_dcount[id] = floatround(get_gametime());
  248. }
  249.  
  250. bool:CheckTime(id)
  251. {
  252. g_nowtime = floatround(get_gametime()) - g_dcount[id];
  253. if(g_nowtime >= get_pcvar_num(g_LDELAY))
  254. return true;
  255. return false;
  256. }
  257.  
  258. public CreateLaserMine_Progress_b(id)
  259. {
  260. if(get_pcvar_num(g_LCMDMODE) != 0)
  261. CreateLaserMine_Progress(id);
  262. return PLUGIN_HANDLED;
  263. }
  264.  
  265. public CreateLaserMine_Progress(id)
  266. {
  267.  
  268. if(!CreateCheck(id))
  269. return PLUGIN_HANDLED;
  270. g_settinglaser[id] = true;
  271.  
  272. message_begin(MSG_ONE, 108, {0,0,0}, id);
  273. write_byte(1);
  274. write_byte(0);
  275. message_end();
  276.  
  277. set_task(1.2, "Spawn", (TASK_PLANT + id));
  278.  
  279. return PLUGIN_HANDLED;
  280. }
  281.  
  282. public ReturnLaserMine_Progress(id)
  283. {
  284.  
  285. if(!ReturnCheck(id))
  286. return PLUGIN_HANDLED;
  287. g_settinglaser[id] = true;
  288.  
  289. message_begin(MSG_ONE, 108, {0,0,0}, id);
  290. write_byte(1);
  291. write_byte(0);
  292. message_end();
  293.  
  294. set_task(1.2, "ReturnMine", (TASK_RELEASE + id));
  295.  
  296. return PLUGIN_HANDLED;
  297. }
  298.  
  299. public StopCreateLaserMine(id)
  300. {
  301.  
  302. DeleteTask(id);
  303. message_begin(MSG_ONE, 108, {0,0,0}, id);
  304. write_byte(0);
  305. write_byte(0);
  306. message_end();
  307.  
  308. return PLUGIN_HANDLED;
  309. }
  310.  
  311. public StopReturnLaserMine(id)
  312. {
  313.  
  314. DeleteTask(id);
  315. message_begin(MSG_ONE, 108, {0,0,0}, id);
  316. write_byte(0);
  317. write_byte(0);
  318. message_end();
  319.  
  320. return PLUGIN_HANDLED;
  321. }
  322.  
  323. public ReturnMine(id)
  324. {
  325. id -= TASK_RELEASE;
  326. new tgt,body,Float:vo[3],Float:to[3];
  327. get_user_aiming(id,tgt,body);
  328. if(!pev_valid(tgt)) return;
  329. pev(id,pev_origin,vo);
  330. pev(tgt,pev_origin,to);
  331. if(get_distance_f(vo,to) > 70.0) return;
  332. new EntityName[32];
  333. pev(tgt, pev_classname, EntityName, 31);
  334. if(!equal(EntityName, ENT_CLASS_NAME)) return;
  335. if(pev(tgt,LASERMINE_OWNER) != id) return;
  336. RemoveEntity(tgt);
  337.  
  338. g_havemine[id] ++;
  339. g_deployed[id] --;
  340. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  341. ShowAmmo(id)
  342.  
  343. return;
  344. }
  345.  
  346. public Spawn(id)
  347. {
  348. id -= TASK_PLANT
  349. // motor
  350. new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);
  351. if(!i_Ent)
  352. {
  353. client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity");
  354. return PLUGIN_HANDLED_MAIN;
  355. }
  356. set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);
  357.  
  358. engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);
  359.  
  360. set_pev(i_Ent,pev_solid,SOLID_NOT);
  361. set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);
  362.  
  363. set_pev(i_Ent,pev_frame,0);
  364. set_pev(i_Ent,pev_body,3);
  365. set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
  366. set_pev(i_Ent,pev_framerate,0);
  367. set_pev(i_Ent,pev_takedamage,DAMAGE_YES);
  368. set_pev(i_Ent,pev_dmg,100.0);
  369. set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
  370. new Float:vOrigin[3];
  371. new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
  372. Float:vTraceEnd[3],Float:vEntAngles[3];
  373. pev(id, pev_origin, vOrigin);
  374. velocity_by_aim(id, 128, vTraceDirection);
  375. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);
  376. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);
  377. new Float:fFraction;
  378. get_tr2(0, TR_flFraction, fFraction);
  379.  
  380. // -- We hit something!
  381. if(fFraction < 1.0)
  382. {
  383. // -- Save results to be used later.
  384. get_tr2(0, TR_vecEndPos, vTraceEnd);
  385. get_tr2(0, TR_vecPlaneNormal, vNormal);
  386. }
  387.  
  388.  
  389. xs_vec_mul_scalar(vNormal, 8.0, vNormal);
  390. xs_vec_add(vTraceEnd, vNormal, vNewOrigin);
  391.  
  392. engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 });
  393. engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin);
  394.  
  395. // -- Rotate tripmine.
  396. vector_to_angle(vNormal,vEntAngles);
  397. set_pev(i_Ent,pev_angles,vEntAngles);
  398.  
  399. // -- Calculate laser end origin.
  400. new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
  401.  
  402. xs_vec_mul_scalar(vNormal, 8192.0, vNormal);
  403. xs_vec_add(vNewOrigin, vNormal, vBeamEnd);
  404.  
  405. engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0);
  406.  
  407. get_tr2(0, TR_vecPlaneNormal, vNormal);
  408. get_tr2(0, TR_vecEndPos, vTracedBeamEnd);
  409.  
  410. // -- Save results to be used later.
  411. set_pev(i_Ent, LASERMINE_OWNER, id);
  412. set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);
  413. set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));
  414. new Float:fCurrTime = get_gametime();
  415.  
  416. set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5);
  417. set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);
  418. set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2);
  419.  
  420. PlaySound(i_Ent,POWERUP_SOUND);
  421. g_deployed[id]++;
  422. g_havemine[id]--;
  423. DeleteTask(id);
  424. ShowAmmo(id);
  425. return 1;
  426. }
  427.  
  428. stock TeamDeployedCount(id)
  429. {
  430. static i;
  431. static CsTeams:t;t = cs_get_user_team(id);
  432. static cnt;cnt=0;
  433.  
  434. for(i = 1;i <= g_MaxPL;i++)
  435. {
  436. if(is_user_connected(i))
  437. if(t == cs_get_user_team(i))
  438. cnt += g_deployed[i];
  439. }
  440.  
  441. return cnt;
  442. }
  443.  
  444. bool:CheckCanTeam(id)
  445. {
  446. new arg[5],CsTeam:num;
  447. get_pcvar_string(g_LCBT,arg,3);
  448. if(equali(arg,"Z"))
  449. {
  450. num = CsTeam:CS_TEAM_T;
  451. }
  452. else if(equali(arg,"H"))
  453. {
  454. num = CsTeam:CS_TEAM_CT;
  455. }
  456. else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH"))
  457. {
  458. num = CsTeam:CS_TEAM_UNASSIGNED;
  459. }
  460. else
  461. {
  462. num = CsTeam:CS_TEAM_UNASSIGNED;
  463. }
  464. if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id))
  465. return false;
  466. return true;
  467. }
  468.  
  469. bool:CanCheck(id,mode) //
  470. {
  471. if(!get_pcvar_num(g_LENABLE))
  472. {
  473. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE")
  474.  
  475. return false;
  476. }
  477. if(get_pcvar_num(g_LACCESS) != 0)
  478. if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  479. {
  480. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS")
  481. return false;
  482. }
  483. if(!pev_user_alive(id)) return false;
  484. if(!CheckCanTeam(id))
  485. {
  486. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT")
  487. return false;
  488. }
  489. if(mode == 0)
  490. {
  491. if(g_havemine[id] <= 0)
  492. {
  493. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE")
  494. return false;
  495. }
  496. }
  497. if(mode == 1)
  498. {
  499. if(get_pcvar_num(g_LBUYMODE) == 0)
  500. {
  501. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY")
  502. return false;
  503. }
  504. if(g_havemine[id] >= get_pcvar_num(g_LAMMO))
  505. {
  506. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX")
  507. return false;
  508. }
  509. if(zp_get_user_ammo_packs(id) < get_pcvar_num(g_LCOST))
  510. {
  511. client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED")
  512. return false;
  513. }
  514. }
  515. if(!CheckTime(id))
  516. {
  517. client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS")
  518. return false;
  519. }
  520.  
  521. return true;
  522. }
  523.  
  524. bool:ReturnCheck(id)
  525. {
  526. if(!CanCheck(id,-1)) return false;
  527. if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;
  528. new tgt,body,Float:vo[3],Float:to[3];
  529. get_user_aiming(id,tgt,body);
  530. if(!pev_valid(tgt)) return false;
  531. pev(id,pev_origin,vo);
  532. pev(tgt,pev_origin,to);
  533. if(get_distance_f(vo,to) > 70.0) return false;
  534. new EntityName[32];
  535. pev(tgt, pev_classname, EntityName, 31);
  536. if(!equal(EntityName, ENT_CLASS_NAME)) return false;
  537. if(pev(tgt,LASERMINE_OWNER) != id) return false;
  538. return true;
  539. }
  540.  
  541. bool:CreateCheck(id)
  542. {
  543. if(!CanCheck(id,0)) return false;
  544.  
  545. //
  546. if(!zp_has_round_started() && get_pcvar_num(g_NOROUND))
  547. {
  548. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND")
  549. return false;
  550. }
  551.  
  552. if(zp_is_nemesis_round() && get_pcvar_num(g_NEMROUND))
  553. {
  554. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NEMROUND")
  555. return false;
  556. }
  557.  
  558. if(zp_is_survivor_round() && get_pcvar_num(g_SURVROUND))
  559. {
  560. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SURVROUND")
  561. return false;
  562. }
  563.  
  564. if(zp_is_swarm_round() && get_pcvar_num(g_SWARMROUND))
  565. {
  566. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SWARMROUND")
  567. return false;
  568. }
  569. if(g_deployed[id] >= get_pcvar_num(g_LAMMO))
  570. {
  571. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY")
  572. return false;
  573. }
  574.  
  575. if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))
  576. {
  577. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL")
  578. return false;
  579. }
  580. new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];
  581. pev(id, pev_origin, vOrigin);
  582. velocity_by_aim(id, 128, vTraceDirection);
  583. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);
  584. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);
  585. new Float:fFraction,Float:vTraceNormal[3];
  586. get_tr2(0, TR_flFraction, fFraction);
  587. // -- We hit something!
  588. if(fFraction < 1.0)
  589. {
  590. // -- Save results to be used later.
  591. get_tr2(0, TR_vecEndPos, vTraceEnd);
  592. get_tr2(0, TR_vecPlaneNormal, vTraceNormal);
  593.  
  594. return true;
  595. }
  596.  
  597. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL")
  598. DeleteTask(id);
  599. // -- Did not touched something. (not solid)
  600. return false;
  601. }
  602.  
  603. public ltm_Think(i_Ent)
  604. {
  605. if(!pev_valid(i_Ent))
  606. return FMRES_IGNORED;
  607. new EntityName[32];
  608. pev(i_Ent, pev_classname, EntityName, 31);
  609. if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;
  610. // -- Entity is not a tripmine, ignoring the next...
  611. if(!equal(EntityName, ENT_CLASS_NAME))
  612. return FMRES_IGNORED;
  613.  
  614. static Float:fCurrTime;
  615. fCurrTime = get_gametime();
  616.  
  617. switch(pev(i_Ent, LASERMINE_STEP))
  618. {
  619. case POWERUP_THINK :
  620. {
  621. new Float:fPowerupTime;
  622. pev(i_Ent, LASERMINE_POWERUP, fPowerupTime);
  623.  
  624. if(fCurrTime > fPowerupTime)
  625. {
  626. set_pev(i_Ent, pev_solid, SOLID_BBOX);
  627. set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK);
  628.  
  629. PlaySound(i_Ent, ACTIVATE_SOUND);
  630. }
  631. if(get_pcvar_num(g_LGLOW)!=0)
  632. {
  633. if(get_pcvar_num(g_LCLMODE)==0)
  634. {
  635. switch (pev(i_Ent,LASERMINE_TEAM))
  636. {
  637. //
  638. case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5);
  639. //
  640. case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5);
  641. }
  642. }else
  643. {
  644. //
  645. set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5);
  646. }
  647. }
  648. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1);
  649. }
  650. case BEAMBREAK_THINK :
  651. {
  652. static Float:vEnd[3],Float:vOrigin[3];
  653. pev(i_Ent, pev_origin, vOrigin);
  654. pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd);
  655.  
  656. static iHit, Float:fFraction;
  657. engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0);
  658.  
  659. get_tr2(0, TR_flFraction, fFraction);
  660. iHit = get_tr2(0, TR_pHit);
  661.  
  662. // -- Something has passed the laser.
  663. if(fFraction < 1.0)
  664. {
  665. // -- Ignoring others tripmines entity.
  666. if(pev_valid(iHit))
  667. {
  668. pev(iHit, pev_classname, EntityName, 31);
  669. //
  670. if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box))
  671. {
  672. set_pev(i_Ent, pev_enemy, iHit);
  673.  
  674. if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)
  675. CreateLaserDamage(i_Ent,iHit);
  676. else
  677. if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
  678. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);
  679.  
  680. if (!pev_valid(i_Ent)) // DJ_WEST
  681. return FMRES_IGNORED;
  682.  
  683. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));
  684. }
  685. }
  686. }
  687. if(get_pcvar_num(g_LDMGMODE)!=0)
  688. if(pev(i_Ent,LASERMINE_HITING) != iHit)
  689. set_pev(i_Ent,LASERMINE_HITING,iHit);
  690.  
  691. // -- Tripmine is still there.
  692. if(pev_valid(i_Ent))
  693. {
  694. static Float:fHealth;
  695. pev(i_Ent, pev_health, fHealth);
  696.  
  697. if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))
  698. {
  699. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);
  700. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));
  701. }
  702.  
  703. static Float:fBeamthink;
  704. pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink);
  705.  
  706. if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE))
  707. {
  708. DrawLaser(i_Ent, vOrigin, vEnd);
  709. set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1);
  710. }
  711. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01);
  712. }
  713. }
  714. case EXPLOSE_THINK :
  715. {
  716. // -- Stopping entity to think
  717. set_pev(i_Ent, pev_nextthink, 0.0);
  718. PlaySound(i_Ent, STOP_SOUND);
  719. g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;
  720. CreateExplosion(i_Ent);
  721. CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))
  722. RemoveEntity (i_Ent);
  723. }
  724. }
  725.  
  726. return FMRES_IGNORED;
  727. }
  728.  
  729. PlaySound(i_Ent, i_SoundType)
  730. {
  731. switch (i_SoundType)
  732. {
  733. case POWERUP_SOUND :
  734. {
  735. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  736. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM);
  737. }
  738. case ACTIVATE_SOUND :
  739. {
  740. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75);
  741. }
  742. case STOP_SOUND :
  743. {
  744. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM);
  745. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75);
  746. }
  747. }
  748. }
  749.  
  750. DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3])
  751. {
  752. new tcolor[3];
  753. new teamid = pev(i_Ent, LASERMINE_TEAM);
  754. if(get_pcvar_num(g_LCLMODE) == 0)
  755. {
  756. switch(teamid){
  757. case 1:{
  758. //
  759. tcolor[0] = Red_Zomb;
  760. tcolor[1] = Green_Zomb;
  761. tcolor[2] = Blue_Zomb;
  762. }
  763. case 2:{
  764. //
  765. tcolor[0] = Red_Hum;
  766. tcolor[1] = Green_Hum;
  767. tcolor[2] = Blue_Hum;
  768. }
  769. }
  770. }else
  771. {
  772. //
  773. tcolor[0] = random_num(50 , 200);
  774. tcolor[1] = random_num(50 , 200);
  775. tcolor[2] = random_num(50 , 200);
  776. }
  777. message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  778. write_byte(TE_BEAMPOINTS);
  779. engfunc(EngFunc_WriteCoord,v_Origin[0]);
  780. engfunc(EngFunc_WriteCoord,v_Origin[1]);
  781. engfunc(EngFunc_WriteCoord,v_Origin[2]);
  782. engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random
  783. engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random
  784. engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random
  785. write_short(beam);
  786. write_byte(0);
  787. write_byte(0);
  788. write_byte(1); //Life
  789. write_byte(5); //Width
  790. write_byte(0); //wave
  791. write_byte(tcolor[0]); // r
  792. write_byte(tcolor[1]); // g
  793. write_byte(tcolor[2]); // b
  794. write_byte(get_pcvar_num(g_LCBRIGHT));
  795. write_byte(255);
  796. message_end();
  797. }
  798.  
  799. CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
  800. {
  801. // Get given parameters
  802. new Float:vecSrc[3];
  803. pev(iCurrent, pev_origin, vecSrc);
  804.  
  805. new AtkID =pev(iCurrent,LASERMINE_OWNER);
  806. new TeamID=pev(iCurrent,LASERMINE_TEAM);
  807.  
  808. new ent = -1;
  809. new Float:tmpdmg = DmgMAX;
  810.  
  811. new Float:kickback = 0.0;
  812. // Needed for doing some nice calculations <!-- s:P --><img src=\"{SMILIES_PATH}/icon_razz.gif\" alt=\":P\" title=\"vicces\" /><!-- s:P -->
  813. new Float:Tabsmin[3], Float:Tabsmax[3];
  814. new Float:vecSpot[3];
  815. new Float:Aabsmin[3], Float:Aabsmax[3];
  816. new Float:vecSee[3];
  817. new trRes;
  818. new Float:flFraction;
  819. new Float:vecEndPos[3];
  820. new Float:distance;
  821. new Float:origin[3], Float:vecPush[3];
  822. new Float:invlen;
  823. new Float:velocity[3];
  824. new iHitHP,iHitTeam;
  825. // Calculate falloff
  826. new Float:falloff;
  827. if(Radius > 0.0)
  828. {
  829. falloff = DmgMAX / Radius;
  830. } else {
  831. falloff = 1.0;
  832. }
  833. // Find monsters and players inside a specifiec radius
  834. while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0)
  835. {
  836. if(!pev_valid(ent)) continue;
  837. if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
  838. {
  839. // Entity is not a player or monster, ignore it
  840. continue;
  841. }
  842. if(!pev_user_alive(ent)) continue;
  843. // Reset data
  844. kickback = 1.0;
  845. tmpdmg = DmgMAX;
  846. // The following calculations are provided by Orangutanz, THANKS!
  847. // We use absmin and absmax for the most accurate information
  848. pev(ent, pev_absmin, Tabsmin);
  849. pev(ent, pev_absmax, Tabsmax);
  850. xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
  851. xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
  852. pev(iCurrent, pev_absmin, Aabsmin);
  853. pev(iCurrent, pev_absmax, Aabsmax);
  854. xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
  855. xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
  856. engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes);
  857. get_tr2(trRes, TR_flFraction, flFraction);
  858. // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
  859. if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent)
  860. {
  861. // Work out the distance between impact and entity
  862. get_tr2(trRes, TR_vecEndPos, vecEndPos);
  863. distance = get_distance_f(vecSrc, vecEndPos) * falloff;
  864. tmpdmg -= distance;
  865. if(tmpdmg < 0.0)
  866. tmpdmg = 0.0;
  867. // Kickback Effect
  868. if(kickback != 0.0)
  869. {
  870. xs_vec_sub(vecSpot,vecSee,origin);
  871. invlen = 1.0/get_distance_f(vecSpot, vecSee);
  872.  
  873. xs_vec_mul_scalar(origin,invlen,vecPush);
  874. pev(ent, pev_velocity, velocity)
  875. xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
  876. xs_vec_mul_scalar(vecPush,kickback,vecPush);
  877. xs_vec_add(velocity,vecPush,velocity);
  878. if(tmpdmg < 60.0)
  879. {
  880. xs_vec_mul_scalar(velocity,12.0,velocity);
  881. } else {
  882. xs_vec_mul_scalar(velocity,4.0,velocity);
  883. }
  884. if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
  885. {
  886. // There's some movement todo <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->
  887. set_pev(ent, pev_velocity, velocity)
  888. }
  889. }
  890.  
  891. iHitHP = pev_user_health(ent) - floatround(tmpdmg)
  892. iHitTeam = int:cs_get_user_team(ent)
  893. if(iHitHP <= 0)
  894. {
  895. if(iHitTeam != TeamID)
  896. {
  897. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) + get_pcvar_num(g_LFMONEY))
  898. set_score(AtkID,ent,1,iHitHP)
  899. }else
  900. {
  901. if(get_pcvar_num(g_LFF))
  902. {
  903. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) - get_pcvar_num(g_LFMONEY))
  904. set_score(AtkID,ent,-1,iHitHP)
  905. }
  906. }
  907. }else
  908. {
  909. if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
  910. {
  911. //set_pev(Player,pev_health,iHitHP)
  912. set_user_health(ent, iHitHP)
  913. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
  914. write_byte(floatround(tmpdmg))
  915. write_byte(floatround(tmpdmg))
  916. write_long(DMG_BULLET)
  917. engfunc(EngFunc_WriteCoord,vecSrc[0])
  918. engfunc(EngFunc_WriteCoord,vecSrc[1])
  919. engfunc(EngFunc_WriteCoord,vecSrc[2])
  920. message_end()
  921. }
  922. }
  923. }
  924. }
  925. return
  926. }
  927.  
  928. bool:pev_user_alive(ent)
  929. {
  930. new deadflag = pev(ent,pev_deadflag);
  931. if(deadflag != DEAD_NO)
  932. return false;
  933. return true;
  934. }
  935.  
  936. CreateExplosion(iCurrent)
  937. {
  938. new Float:vOrigin[3];
  939. pev(iCurrent,pev_origin,vOrigin);
  940.  
  941. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  942. write_byte(99); //99 = KillBeam
  943. write_short(iCurrent);
  944. message_end();
  945.  
  946. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0);
  947. write_byte(TE_EXPLOSION);
  948. engfunc(EngFunc_WriteCoord,vOrigin[0]);
  949. engfunc(EngFunc_WriteCoord,vOrigin[1]);
  950. engfunc(EngFunc_WriteCoord,vOrigin[2]);
  951. write_short(boom);
  952. write_byte(30);
  953. write_byte(15);
  954. write_byte(0);
  955. message_end();
  956. }
  957.  
  958. CreateLaserDamage(iCurrent,isHit)
  959. {
  960. if(isHit < 0) return PLUGIN_CONTINUE
  961. switch(get_pcvar_num(g_LDMGMODE))
  962. {
  963. case 1:
  964. {
  965. if(pev(iCurrent,LASERMINE_HITING) == isHit)
  966. return PLUGIN_CONTINUE
  967. }
  968. case 2:
  969. {
  970. if(pev(iCurrent,LASERMINE_HITING) == isHit)
  971. {
  972. static Float:cnt
  973. static now,htime;now = floatround(get_gametime())
  974.  
  975. pev(iCurrent,LASERMINE_COUNT,cnt)
  976. htime = floatround(cnt)
  977. if(now - htime < get_pcvar_num(g_LDSEC))
  978. {
  979. return PLUGIN_CONTINUE;
  980. }else{
  981. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
  982. }
  983. }else
  984. {
  985. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
  986. }
  987. }
  988. }
  989.  
  990. new Float:vOrigin[3],Float:vEnd[3]
  991. pev(iCurrent,pev_origin,vOrigin)
  992. pev(iCurrent,pev_vuser1,vEnd)
  993.  
  994. new teamid = pev(iCurrent, LASERMINE_TEAM)
  995.  
  996. new szClassName[32]
  997. new Alive,God
  998. new iHitTeam,iHitHP,id
  999. new hitscore
  1000.  
  1001. szClassName[0] = '^0'
  1002. pev(isHit,pev_classname,szClassName,32)
  1003. if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
  1004. {
  1005. Alive = pev_user_alive(isHit)
  1006. God = get_user_godmode(isHit)
  1007. if(!Alive || God) return PLUGIN_CONTINUE
  1008. iHitTeam = int:cs_get_user_team(isHit)
  1009. iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
  1010. id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
  1011. if(iHitHP <= 0)
  1012. {
  1013. if(iHitTeam != teamid)
  1014. {
  1015. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1016. hitscore = 1
  1017. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY))
  1018. set_score(id,isHit,hitscore,iHitHP)
  1019. }else
  1020. {
  1021. if(get_pcvar_num(g_LFF))
  1022. {
  1023. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1024. hitscore = -1
  1025. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY))
  1026. set_score(id,isHit,hitscore,iHitHP)
  1027. }
  1028. }
  1029. }else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
  1030. {
  1031. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  1032. set_user_health(isHit,iHitHP)
  1033. set_pev(iCurrent,LASERMINE_HITING,isHit);
  1034. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);
  1035. write_byte(get_pcvar_num(g_LDMG))
  1036. write_byte(get_pcvar_num(g_LDMG))
  1037. write_long(DMG_BULLET)
  1038. engfunc(EngFunc_WriteCoord,vOrigin[0])
  1039. engfunc(EngFunc_WriteCoord,vOrigin[1])
  1040. engfunc(EngFunc_WriteCoord,vOrigin[2])
  1041. message_end()
  1042. }
  1043. }else if(equal(szClassName, ENT_CLASS_NAME3))
  1044. {
  1045. new hl;
  1046. hl = pev_user_health(isHit);
  1047. set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
  1048. }
  1049. return PLUGIN_CONTINUE
  1050. }
  1051.  
  1052. stock pev_user_health(id)
  1053. {
  1054. new Float:health
  1055. pev(id,pev_health,health)
  1056. return floatround(health)
  1057. }
  1058.  
  1059. stock set_user_health(id,health)
  1060. {
  1061. health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
  1062. }
  1063.  
  1064. stock get_user_godmode(index) {
  1065. new Float:val
  1066. pev(index, pev_takedamage, val)
  1067.  
  1068. return (val == DAMAGE_NO)
  1069. }
  1070.  
  1071. stock set_user_frags(index, frags)
  1072. {
  1073. set_pev(index, pev_frags, float(frags))
  1074.  
  1075. return 1
  1076. }
  1077.  
  1078. stock pev_user_frags(index)
  1079. {
  1080. new Float:frags;
  1081. pev(index,pev_frags,frags);
  1082. return floatround(frags);
  1083. }
  1084.  
  1085. set_score(id,target,hitscore,HP){
  1086.  
  1087. new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore
  1088. set_user_frags(id,idfrags)
  1089. new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1
  1090. set_user_frags(target,tarfrags)
  1091. new idteam = int:cs_get_user_team(id)
  1092. new iddeaths = cs_get_user_deaths(id)
  1093.  
  1094.  
  1095. message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0)
  1096. write_byte(id)
  1097. write_byte(target)
  1098. write_byte(0)
  1099. write_string(ENT_CLASS_NAME)
  1100. message_end()
  1101.  
  1102. message_begin(MSG_ALL, g_msgScoreInfo)
  1103. write_byte(id)
  1104. write_short(idfrags)
  1105. write_short(iddeaths)
  1106. write_short(0)
  1107. write_short(idteam)
  1108. message_end()
  1109.  
  1110. set_msg_block(g_msgDeathMsg, BLOCK_ONCE)
  1111.  
  1112. set_user_health(target, HP)
  1113.  
  1114. }
  1115.  
  1116. public BuyLasermine(id)
  1117. {
  1118. if(!CanCheck(id,1)) return PLUGIN_CONTINUE
  1119.  
  1120. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LCOST))
  1121. g_havemine[id]++;
  1122.  
  1123. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT")
  1124.  
  1125. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  1126. ShowAmmo(id)
  1127. return PLUGIN_HANDLED
  1128. }
  1129.  
  1130. public zp_extra_item_selected(id, itemid)
  1131. {
  1132. if(itemid == g_LME)
  1133. {
  1134. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + LMCost)
  1135. BuyLasermine(id)
  1136. }
  1137. return PLUGIN_CONTINUE
  1138. }
  1139.  
  1140. ShowAmmo(id)
  1141. {
  1142. new ammo[51]
  1143. new PlugStat[ 555 char ];
  1144. formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE")
  1145. formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO))
  1146.  
  1147. message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
  1148. write_byte(0)
  1149. write_string(ammo)
  1150. message_end()
  1151. }
  1152.  
  1153. public showInfo(id)
  1154. {
  1155. client_print(id, print_chat, "%L", id, "STR_REF")
  1156. }
  1157.  
  1158. public say_lasermine(id){
  1159. new said[32]
  1160. read_argv(1,said,31);
  1161. if(!get_pcvar_num(g_LENABLE))
  1162. {
  1163. return PLUGIN_CONTINUE
  1164. }
  1165. if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")){
  1166. BuyLasermine(id)
  1167. }else if(equali(said, "lasermine") || equali(said, "/lasermine")){
  1168. const SIZE = 1024
  1169. new msg[SIZE+1],len = 0;
  1170. len += formatex(msg[len], SIZE - len, "<html><body>")
  1171. len += formatex(msg[len], SIZE - len, "<p><b>Lezer</b></p><br/><br/>")
  1172. len += formatex(msg[len], SIZE - len, "<p>Fel tudsz tenni a falra lezert.</p><br/>")
  1173. len += formatex(msg[len], SIZE - len, "<p>A lezer megoli az ellenfeleket, ha belemennek!</p><br/><br/>")
  1174. len += formatex(msg[len], SIZE - len, "<p><b>Lezer parancsok</b></p><br/><br/>")
  1175. len += formatex(msg[len], SIZE - len, "<p><b>Ird: /buy lasermine</b> vagy <b>/lm</b> hogy lezert vehess!<br/>")
  1176. len += formatex(msg[len], SIZE - len, "<b>buy_lasermine</b> //Hogy F2-vel lezert vehess, ird a consolba: bind ^"F2^" buy_lasermine<br/>")
  1177. len += formatex(msg[len], SIZE - len, "<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set lasermine on wall<br/>")
  1178. len += formatex(msg[len], SIZE - len, "</body></html>")
  1179. show_motd(id, msg, "Lasermine Entity help")
  1180. return PLUGIN_CONTINUE
  1181. }
  1182. else if(containi(said, "laser") != -1) {
  1183. showInfo(id)
  1184. return PLUGIN_CONTINUE
  1185. }
  1186. return PLUGIN_CONTINUE
  1187. }
  1188.  
  1189. public standing(id)
  1190. {
  1191. if(!g_settinglaser[id])
  1192. return PLUGIN_CONTINUE
  1193.  
  1194. set_pev(id, pev_maxspeed, 1.0)
  1195.  
  1196. return PLUGIN_CONTINUE
  1197. }
  1198.  
  1199. public ltm_PostThink(id)
  1200. {
  1201. if(!g_settinglaser[id] && plsetting[id]){
  1202. resetspeed(id)
  1203. }
  1204. else if(g_settinglaser[id] && !plsetting[id]) {
  1205. pev(id, pev_maxspeed,plspeed[id])
  1206. set_pev(id, pev_maxspeed, 1.0)
  1207. }
  1208. plsetting[id] = g_settinglaser[id]
  1209. return FMRES_IGNORED
  1210. }
  1211.  
  1212. public ltm_PreThink(id)
  1213. {
  1214. if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1)
  1215. return FMRES_IGNORED;
  1216.  
  1217. if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE))
  1218. CreateLaserMine_Progress(id)
  1219. return FMRES_IGNORED;
  1220. }
  1221.  
  1222. resetspeed(id)
  1223. {
  1224. set_pev(id, pev_maxspeed, plspeed[id])
  1225. }
  1226.  
  1227. public client_putinserver(id){
  1228. g_deployed[id] = 0;
  1229. g_havemine[id] = 0;
  1230. DeleteTask(id);
  1231. return PLUGIN_CONTINUE
  1232. }
  1233.  
  1234. public client_disconnect(id){
  1235. if(!get_pcvar_num(g_LENABLE))
  1236. return PLUGIN_CONTINUE
  1237. DeleteTask(id);
  1238. RemoveAllTripmines(id);
  1239. return PLUGIN_CONTINUE
  1240. }
  1241.  
  1242.  
  1243. public newround(id){
  1244. if(!get_pcvar_num(g_LENABLE))
  1245. return PLUGIN_CONTINUE
  1246. pev(id, pev_maxspeed,plspeed[id])
  1247. DeleteTask(id);
  1248. RemoveAllTripmines(id);
  1249. //client_print(id, print_chat, "[ZP][LM][DeBug] All Mines removied!");
  1250. delaycount(id);
  1251. SetStartAmmo(id);
  1252. return PLUGIN_CONTINUE
  1253. }
  1254.  
  1255. public endround(id, i_Owner)
  1256. {
  1257. if(!get_pcvar_num(g_LENABLE))
  1258. return PLUGIN_CONTINUE
  1259.  
  1260. //
  1261. DeleteTask(id);
  1262. new iEnt = g_MaxPL + 1;
  1263. new clsname[32];
  1264. while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME)))
  1265. {
  1266. clsname[0] = '^0'
  1267. pev(iEnt, pev_classname, clsname, sizeof(clsname)-1);
  1268. PlaySound(iEnt, STOP_SOUND);
  1269. RemoveEntity(iEnt);
  1270. //set_pev(iEnt, pev_flags, FL_KILLME);
  1271. }
  1272. g_deployed[i_Owner]=0;
  1273.  
  1274. return PLUGIN_CONTINUE
  1275. }
  1276.  
  1277. public DeathEvent(){
  1278. if(!get_pcvar_num(g_LENABLE))
  1279. return PLUGIN_CONTINUE
  1280.  
  1281. new id = read_data(2)
  1282. if(is_user_connected(id)) DeleteTask(id);
  1283. return PLUGIN_CONTINUE
  1284. }
  1285.  
  1286. public RemoveAllTripmines(i_Owner)
  1287. {
  1288. new iEnt = g_MaxPL + 1;
  1289. new clsname[32];
  1290. while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME)))
  1291. {
  1292. if(i_Owner)
  1293. {
  1294. if(pev(iEnt, LASERMINE_OWNER) != i_Owner)
  1295. continue;
  1296. clsname[0] = '^0'
  1297. pev(iEnt, pev_classname, clsname, sizeof(clsname)-1);
  1298. if(equali(clsname, ENT_CLASS_NAME))
  1299. {
  1300. PlaySound(iEnt, STOP_SOUND);
  1301. RemoveEntity(iEnt);
  1302. }
  1303. }
  1304. else
  1305. set_pev(iEnt, pev_flags, FL_KILLME);
  1306. }
  1307. g_deployed[i_Owner]=0;
  1308. }
  1309.  
  1310. SetStartAmmo(id)
  1311. {
  1312. new stammo = get_pcvar_num(g_LSTAMMO);
  1313. if(stammo <= 0) return PLUGIN_CONTINUE;
  1314. g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id];
  1315. return PLUGIN_CONTINUE;
  1316. }
  1317.  
  1318. public CutDeploy_onDamage(id)
  1319. {
  1320. if(get_user_health(id) < 1)
  1321. DeleteTask(id);
  1322. }
  1323.  
  1324. DeleteTask(id)
  1325. {
  1326. if(task_exists((TASK_PLANT + id)))
  1327. {
  1328. remove_task((TASK_PLANT + id))
  1329. }
  1330. if(task_exists((TASK_RELEASE + id)))
  1331. {
  1332. remove_task((TASK_RELEASE + id))
  1333. }
  1334. g_settinglaser[id] = false
  1335. return PLUGIN_CONTINUE;
  1336. }
  1337.  
  1338. stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
  1339. {
  1340. static Float:RenderColor[3];
  1341. RenderColor[0] = float(r);
  1342. RenderColor[1] = float(g);
  1343. RenderColor[2] = float(b);
  1344.  
  1345. set_pev(entity, pev_renderfx, fx);
  1346. set_pev(entity, pev_rendercolor, RenderColor);
  1347. set_pev(entity, pev_rendermode, render);
  1348. set_pev(entity, pev_renderamt, float(amount));
  1349.  
  1350. return 1
  1351. }
  1352.  
  1353. // Gets offset data
  1354. get_offset_value(id, type)
  1355. {
  1356. new key = -1;
  1357. switch(type)
  1358. {
  1359. case OFFSET_TEAM: key = OFFSET_TEAM;
  1360. case OFFSET_MONEY:
  1361. key = OFFSET_MONEY;
  1362. case OFFSET_DEATH: key = OFFSET_DEATH;
  1363. }
  1364. if(key != -1)
  1365. {
  1366. if(is_amd64_server()) key += 25;
  1367. return get_pdata_int(id, key);
  1368. }
  1369. return -1;
  1370. }
  1371. stock print_color(const id, const input[], any:...)
  1372. {
  1373. new count = 1, players[32]
  1374. static msg[191]
  1375. vformat(msg, 190, input, 3)
  1376.  
  1377. replace_all(msg, 190, "!g", "^4")
  1378. replace_all(msg, 190, "!y", "^1")
  1379. replace_all(msg, 190, "!t", "^3")
  1380. replace_all(msg, 190, "á", "á")
  1381. replace_all(msg, 190, "é", "Ă©")
  1382. replace_all(msg, 190, "í", "Ă­")
  1383. replace_all(msg, 190, "ó", "Ăł")
  1384. replace_all(msg, 190, "ö", "ö")
  1385. replace_all(msg, 190, "ő", "Ĺ‘")
  1386. replace_all(msg, 190, "ú", "Ăş")
  1387. replace_all(msg, 190, "ü", "ĂĽ")
  1388. replace_all(msg, 190, "ű", "ű")
  1389. replace_all(msg, 190, "Á", "Á")
  1390. replace_all(msg, 190, "É", "É")
  1391. replace_all(msg, 190, "Í", "ĂŤ")
  1392. replace_all(msg, 190, "Ó", "Ă“")
  1393. replace_all(msg, 190, "Ö", "Ă–")
  1394. replace_all(msg, 190, "Ő", "Ő")
  1395. replace_all(msg, 190, "Ú", "Ăš")
  1396. replace_all(msg, 190, "Ü", "Ăś")
  1397. replace_all(msg, 190, "Ű", "Ĺ°")
  1398.  
  1399. if (id) players[0] = id; else get_players(players, count, "ch")
  1400. {
  1401. for (new i = 0; i < count; i++)
  1402. {
  1403. if (is_user_connected(players[i]))
  1404. {
  1405. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  1406. write_byte(players[i])
  1407. write_string(msg)
  1408. message_end()
  1409. }
  1410. }
  1411. }
  1412. return PLUGIN_HANDLED
  1413. }
  1414.  


jöhet a köszi gomb!:D

_________________
[url=http://www.gametracker.com/server_info/188.227.227.114:27286/][img]http://cache.www.gametracker.com/server_info/188.227.227.114:27286/b_350_20_323957_202743_F19A15_111111.png[/img][/url]

Ők köszönték meg ChaspeR nek ezt a hozzászólást (összesen 2): kiki (2013.08.14. 14:27) • gladiator (2013.08.14. 15:56)
  Népszerűség: 4.55%


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


Ki van itt

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