hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.05. 09:53



Jelenlévő felhasználók

Jelenleg 181 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 181 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [ZP] LaserMine 2.8.1 Javítás
HozzászólásElküldve: 2013.10.03. 07:47 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
Hali! Valaki kijavítaná nekem?
HIBA:
SMA Forráskód: [ Mindet kijelol ]
  1. L 10/03/2013 - 07:26:52: [AMXX] Displaying debug trace (plugin "zp_lasermine_281.amxx")
  2. L 10/03/2013 - 07:26:52: [AMXX] Run time error 4: index out of bounds
  3. L 10/03/2013 - 07:26:52: [AMXX] [0] php7S4eRO.sma::endround (line 2543)
  4.  

SMA:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3. #include <fakemeta>
  4.  
  5. #include <hamsandwich>
  6.  
  7. #include <xs>
  8.  
  9. #include <zombieplague>
  10.  
  11.  
  12.  
  13. #if AMXX_VERSION_NUM < 180
  14.  
  15. #assert AMX Mod X v1.8.0 or greater library required!
  16.  
  17. #endif
  18.  
  19.  
  20.  
  21. #define PLUGIN "[ZP] LaserMine"
  22.  
  23. #define VERSION "2.8.1"
  24.  
  25. #define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST"
  26.  
  27.  
  28.  
  29. #define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)
  30.  
  31. #define TASK_PLANT 15100
  32.  
  33. #define TASK_RESET 15500
  34.  
  35. #define TASK_RELEASE 15900
  36.  
  37.  
  38.  
  39. #define LASERMINE_TEAM pev_iuser1 //EV_INT_iuser1
  40.  
  41. #define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3
  42.  
  43. #define LASERMINE_STEP pev_iuser3
  44.  
  45. #define LASERMINE_HITING pev_iuser4
  46.  
  47. #define LASERMINE_COUNT pev_fuser1
  48.  
  49.  
  50.  
  51. #define LASERMINE_POWERUP pev_fuser2
  52.  
  53. #define LASERMINE_BEAMTHINK pev_fuser3
  54.  
  55.  
  56.  
  57. #define LASERMINE_BEAMENDPOINT pev_vuser1
  58.  
  59. #define MAX_MINES 10
  60.  
  61. #define MODE_LASERMINE 0
  62.  
  63. #define OFFSET_TEAM 114
  64.  
  65. #define OFFSET_MONEY 115
  66.  
  67. #define OFFSET_DEATH 444
  68.  
  69.  
  70.  
  71. #define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM)
  72.  
  73. #define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)
  74.  
  75.  
  76.  
  77.  
  78.  
  79. new const LMCost = 20
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. new const
  90.  
  91. Red_Hum = 0,
  92.  
  93. Green_Hum = 0,
  94.  
  95. Blue_Hum = 255;
  96.  
  97.  
  98.  
  99. //
  100.  
  101. new const
  102.  
  103. Red_Zomb = 255,
  104.  
  105. Green_Zomb = 0,
  106.  
  107. Blue_Zomb = 0;
  108.  
  109.  
  110.  
  111.  
  112.  
  113. enum CsTeams {
  114.  
  115. CS_TEAM_UNASSIGNED = 0,
  116.  
  117. CS_TEAM_T = 1,
  118.  
  119. CS_TEAM_CT = 2,
  120.  
  121. CS_TEAM_SPECTATOR = 3
  122.  
  123. };
  124.  
  125.  
  126.  
  127. enum tripmine_e {
  128.  
  129. TRIPMINE_IDLE1 = 0,
  130.  
  131. TRIPMINE_IDLE2,
  132.  
  133. TRIPMINE_ARM1,
  134.  
  135. TRIPMINE_ARM2,
  136.  
  137. TRIPMINE_FIDGET,
  138.  
  139. TRIPMINE_HOLSTER,
  140.  
  141. TRIPMINE_DRAW,
  142.  
  143. TRIPMINE_WORLD,
  144.  
  145. TRIPMINE_GROUND,
  146.  
  147. };
  148.  
  149.  
  150.  
  151. enum
  152.  
  153. {
  154.  
  155. POWERUP_THINK,
  156.  
  157. BEAMBREAK_THINK,
  158.  
  159. EXPLOSE_THINK
  160.  
  161. };
  162.  
  163.  
  164.  
  165. enum
  166.  
  167. {
  168.  
  169. POWERUP_SOUND,
  170.  
  171. ACTIVATE_SOUND,
  172.  
  173. STOP_SOUND
  174.  
  175. };
  176.  
  177.  
  178.  
  179. new const
  180.  
  181. ENT_MODELS[] = "models/zombie_plague/LaserMines/v_laser_mine.mdl",
  182.  
  183. ENT_SOUND1[] = "weapons/mine_deploy.wav",
  184.  
  185. ENT_SOUND2[] = "weapons/mine_charge.wav",
  186.  
  187. ENT_SOUND3[] = "weapons/mine_activate.wav",
  188.  
  189. ENT_SOUND4[] = "items/suitchargeok1.wav",
  190.  
  191. ENT_SOUND5[] = "items/gunpickup2.wav",
  192.  
  193. ENT_SOUND6[] = "debris/bustglass1.wav",
  194.  
  195. ENT_SOUND7[] = "debris/bustglass2.wav",
  196.  
  197. ENT_SPRITE1[] = "sprites/laserbeam.spr",
  198.  
  199. ENT_SPRITE2[] = "sprites/lm_explode.spr";
  200.  
  201.  
  202.  
  203. new const
  204.  
  205. ENT_CLASS_NAME[] = "lasermine",
  206.  
  207. ENT_CLASS_NAME3[] = "func_breakable",
  208.  
  209. gSnarkClassName[] = "wpn_snark",
  210.  
  211. barnacle_class[] = "barnacle",
  212.  
  213. weapon_box[] = "weaponbox";
  214.  
  215.  
  216.  
  217. new g_EntMine, beam, boom
  218.  
  219. 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
  220.  
  221. new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE
  222.  
  223. new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;
  224.  
  225. new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText;
  226.  
  227. new g_dcount[33],g_nowtime,g_MaxPL
  228.  
  229. new bool:g_settinglaser[33]
  230.  
  231. new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33];
  232.  
  233. //new CVAR_LMCost
  234.  
  235.  
  236.  
  237. public plugin_init()
  238.  
  239. {
  240.  
  241. register_plugin(PLUGIN, VERSION, AUTHOR);
  242.  
  243.  
  244.  
  245. //
  246.  
  247.  
  248.  
  249. g_LME = zp_register_extra_item("Lezer Vasarlas \r(1db)", LMCost, ZP_TEAM_ANY)
  250.  
  251.  
  252.  
  253. // ENT_CLASS_NAME3 (func_breakable)
  254.  
  255. RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage")
  256.  
  257. // Add your code here...
  258.  
  259. register_clcmd("+setlaser","CreateLaserMine_Progress_b");
  260.  
  261. register_clcmd("-setlaser","StopCreateLaserMine");
  262.  
  263. register_clcmd("+dellaser","ReturnLaserMine_Progress");
  264.  
  265. register_clcmd("-dellaser","StopReturnLaserMine");
  266.  
  267. register_clcmd("say","say_lasermine");
  268.  
  269. register_clcmd("buy_lasermine","BuyLasermine");
  270.  
  271.  
  272.  
  273. g_LENABLE = register_cvar("zp_ltm","1")
  274.  
  275. g_LACCESS = register_cvar("zp_ltm_acs","0") //0 all, 1 admin
  276.  
  277. g_LMODE = register_cvar("zp_ltm_mode","0") //0 lasermine, 1 tripmine
  278.  
  279. g_LAMMO = register_cvar("zp_ltm_ammo","3")
  280.  
  281. g_LDMG = register_cvar("zp_ltm_dmg","60") //laser hit dmg
  282.  
  283. g_LCOST = register_cvar("zp_ltm_cost","2")
  284.  
  285. g_LFMONEY = register_cvar("zp_ltm_fragmoney","1")
  286.  
  287. g_LHEALTH = register_cvar("zp_ltm_health","500")
  288.  
  289. g_LTMAX = register_cvar("zp_ltm_teammax","100")
  290.  
  291. g_LRADIUS = register_cvar("zp_ltm_radius","320.0")
  292.  
  293. g_LRDMG = register_cvar("zp_ltm_rdmg","100") //radius damage
  294.  
  295. g_LFF = register_cvar("zp_ltm_ff","0")
  296.  
  297. g_LCBT = register_cvar("zp_ltm_cbt","ALL")
  298.  
  299. g_LDELAY = register_cvar("zp_ltm_delay","0.1")
  300.  
  301. g_LVISIBLE = register_cvar("zp_ltm_line","1")
  302.  
  303. g_LGLOW = register_cvar("zp_ltm_glow","0")
  304.  
  305. g_LCBRIGHT = register_cvar("zp_ltm_bright","255")//laser line brightness.
  306.  
  307. g_LCLMODE = register_cvar("zp_ltm_color","0") //0 is team color,1 is green
  308.  
  309. g_LDMGMODE = register_cvar("zp_ltm_ldmgmode","0") //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
  310.  
  311. g_LDSEC = register_cvar("zp_ltm_ldmgseconds","1") //mode 2 only, damage / seconds. default 1 (sec)
  312.  
  313. g_LSTAMMO = register_cvar("zp_ltm_startammo","2")
  314.  
  315. g_LBUYMODE = register_cvar("zp_ltm_buymode","1");
  316.  
  317. g_LCMDMODE = register_cvar("zp_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
  318.  
  319. g_LBEO = register_cvar("zp_ltm_brokeenemy","1");
  320.  
  321. g_NOROUND = register_cvar("zp_ltm_noround","1");
  322.  
  323. g_NEMROUND = register_cvar("zp_ltm_nemround","1");
  324.  
  325. g_SURVROUND = register_cvar("zp_ltm_survround","1");
  326.  
  327. g_SWARMROUND = register_cvar("zp_ltm_swarmround","1");
  328.  
  329.  
  330.  
  331. register_event("DeathMsg", "DeathEvent", "a");
  332.  
  333. register_event("CurWeapon", "standing", "be", "1=1");
  334.  
  335. register_event("ResetHUD", "delaycount", "a");
  336.  
  337. register_event("ResetHUD", "newround", "b");
  338.  
  339. register_logevent("endround", 2, "0=World triggered", "1=Round_End"); //
  340.  
  341. register_event("Damage","CutDeploy_onDamage","b");
  342.  
  343. g_msgDeathMsg = get_user_msgid("DeathMsg");
  344.  
  345. g_msgScoreInfo = get_user_msgid("ScoreInfo");
  346.  
  347. g_msgDamage = get_user_msgid("Damage");
  348.  
  349. g_msgStatusText = get_user_msgid("StatusText");
  350.  
  351.  
  352.  
  353. // Forward.
  354.  
  355. register_forward(FM_Think, "ltm_Think");
  356.  
  357. register_forward(FM_PlayerPostThink, "ltm_PostThink");
  358.  
  359. register_forward(FM_PlayerPreThink, "ltm_PreThink");
  360.  
  361.  
  362.  
  363. //
  364.  
  365. register_dictionary("LaserMines.txt")
  366.  
  367. register_cvar("Shidla", "[ZP] LaserMines v.2.8.1 Final", FCVAR_SERVER|FCVAR_SPONLY)
  368.  
  369. }
  370.  
  371.  
  372.  
  373. public plugin_precache()
  374.  
  375. {
  376.  
  377. precache_sound(ENT_SOUND1);
  378.  
  379. precache_sound(ENT_SOUND2);
  380.  
  381. precache_sound(ENT_SOUND3);
  382.  
  383. precache_sound(ENT_SOUND4);
  384.  
  385. precache_sound(ENT_SOUND5);
  386.  
  387. precache_sound(ENT_SOUND6);
  388.  
  389. precache_sound(ENT_SOUND7);
  390.  
  391. precache_model(ENT_MODELS);
  392.  
  393. beam = precache_model(ENT_SPRITE1);
  394.  
  395. boom = precache_model(ENT_SPRITE2);
  396.  
  397. return PLUGIN_CONTINUE;
  398.  
  399. }
  400.  
  401.  
  402.  
  403. public plugin_modules()
  404.  
  405. {
  406.  
  407. require_module("fakemeta");
  408.  
  409. require_module("cstrike");
  410.  
  411. }
  412.  
  413.  
  414.  
  415. public plugin_cfg()
  416.  
  417. {
  418.  
  419. g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);
  420.  
  421. arrayset(g_havemine,0,sizeof(g_havemine));
  422.  
  423. arrayset(g_deployed,0,sizeof(g_deployed));
  424.  
  425. g_MaxPL = get_maxplayers();
  426.  
  427.  
  428.  
  429. new file[64]; get_localinfo("amxx_configsdir",file,63);
  430.  
  431. format(file, 63, "%s/zp_ltm_cvars_ap.cfg", file);
  432.  
  433. if(file_exists(file)) server_cmd("exec %s", file), server_exec();
  434.  
  435. }
  436.  
  437.  
  438.  
  439. public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage)
  440.  
  441. {
  442.  
  443. if(get_pcvar_num(g_LBEO))
  444.  
  445. {
  446.  
  447. new i_Owner, flags
  448.  
  449.  
  450.  
  451. //
  452.  
  453. i_Owner = pev(victim, LASERMINE_OWNER)
  454.  
  455. flags = get_user_flags(attacker)
  456.  
  457.  
  458.  
  459. //
  460.  
  461. if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker))
  462.  
  463. //
  464.  
  465. if(i_Owner != attacker)
  466.  
  467. {
  468.  
  469. if (flags & ADMIN_KICK)
  470.  
  471. return PLUGIN_CONTINUE
  472.  
  473. else
  474.  
  475. return HAM_SUPERCEDE
  476.  
  477. }
  478.  
  479. return PLUGIN_CONTINUE
  480.  
  481. }
  482.  
  483. return PLUGIN_CONTINUE
  484.  
  485. }
  486.  
  487.  
  488.  
  489. public delaycount(id)
  490.  
  491. {
  492.  
  493. g_dcount[id] = floatround(get_gametime());
  494.  
  495. }
  496.  
  497.  
  498.  
  499. bool:CheckTime(id)
  500.  
  501. {
  502.  
  503. g_nowtime = floatround(get_gametime()) - g_dcount[id];
  504.  
  505. if(g_nowtime >= get_pcvar_num(g_LDELAY))
  506.  
  507. return true;
  508.  
  509. return false;
  510.  
  511. }
  512.  
  513.  
  514.  
  515. public CreateLaserMine_Progress_b(id)
  516.  
  517. {
  518.  
  519. if(get_pcvar_num(g_LCMDMODE) != 0)
  520.  
  521. CreateLaserMine_Progress(id);
  522.  
  523. return PLUGIN_HANDLED;
  524.  
  525. }
  526.  
  527.  
  528.  
  529. public CreateLaserMine_Progress(id)
  530.  
  531. {
  532.  
  533.  
  534.  
  535. if(!CreateCheck(id))
  536.  
  537. return PLUGIN_HANDLED;
  538.  
  539. g_settinglaser[id] = true;
  540.  
  541.  
  542.  
  543. message_begin(MSG_ONE, 108, {0,0,0}, id);
  544.  
  545. write_byte(1);
  546.  
  547. write_byte(0);
  548.  
  549. message_end();
  550.  
  551.  
  552.  
  553. set_task(1.2, "Spawn", (TASK_PLANT + id));
  554.  
  555.  
  556.  
  557. return PLUGIN_HANDLED;
  558.  
  559. }
  560.  
  561.  
  562.  
  563. public ReturnLaserMine_Progress(id)
  564.  
  565. {
  566.  
  567.  
  568.  
  569. if(!ReturnCheck(id))
  570.  
  571. return PLUGIN_HANDLED;
  572.  
  573. g_settinglaser[id] = true;
  574.  
  575.  
  576.  
  577. message_begin(MSG_ONE, 108, {0,0,0}, id);
  578.  
  579. write_byte(1);
  580.  
  581. write_byte(0);
  582.  
  583. message_end();
  584.  
  585.  
  586.  
  587. set_task(1.2, "ReturnMine", (TASK_RELEASE + id));
  588.  
  589.  
  590.  
  591. return PLUGIN_HANDLED;
  592.  
  593. }
  594.  
  595.  
  596.  
  597. public StopCreateLaserMine(id)
  598.  
  599. {
  600.  
  601.  
  602.  
  603. DeleteTask(id);
  604.  
  605. message_begin(MSG_ONE, 108, {0,0,0}, id);
  606.  
  607. write_byte(0);
  608.  
  609. write_byte(0);
  610.  
  611. message_end();
  612.  
  613.  
  614.  
  615. return PLUGIN_HANDLED;
  616.  
  617. }
  618.  
  619.  
  620.  
  621. public StopReturnLaserMine(id)
  622.  
  623. {
  624.  
  625.  
  626.  
  627. DeleteTask(id);
  628.  
  629. message_begin(MSG_ONE, 108, {0,0,0}, id);
  630.  
  631. write_byte(0);
  632.  
  633. write_byte(0);
  634.  
  635. message_end();
  636.  
  637.  
  638.  
  639. return PLUGIN_HANDLED;
  640.  
  641. }
  642.  
  643.  
  644.  
  645. public ReturnMine(id)
  646.  
  647. {
  648.  
  649. id -= TASK_RELEASE;
  650.  
  651. new tgt,body,Float:vo[3],Float:to[3];
  652.  
  653. get_user_aiming(id,tgt,body);
  654.  
  655. if(!pev_valid(tgt)) return;
  656.  
  657. pev(id,pev_origin,vo);
  658.  
  659. pev(tgt,pev_origin,to);
  660.  
  661. if(get_distance_f(vo,to) > 70.0) return;
  662.  
  663. new EntityName[32];
  664.  
  665. pev(tgt, pev_classname, EntityName, 31);
  666.  
  667. if(!equal(EntityName, ENT_CLASS_NAME)) return;
  668.  
  669. if(pev(tgt,LASERMINE_OWNER) != id) return;
  670.  
  671. RemoveEntity(tgt);
  672.  
  673.  
  674.  
  675. g_havemine[id] ++;
  676.  
  677. g_deployed[id] --;
  678.  
  679. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  680.  
  681. ShowAmmo(id)
  682.  
  683.  
  684.  
  685. return;
  686.  
  687. }
  688.  
  689.  
  690.  
  691. public Spawn(id)
  692.  
  693. {
  694.  
  695. id -= TASK_PLANT
  696.  
  697. // motor
  698.  
  699. new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);
  700.  
  701. if(!i_Ent)
  702.  
  703. {
  704.  
  705. client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity");
  706.  
  707. return PLUGIN_HANDLED_MAIN;
  708.  
  709. }
  710.  
  711. set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);
  712.  
  713.  
  714.  
  715. engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);
  716.  
  717.  
  718.  
  719. set_pev(i_Ent,pev_solid,SOLID_NOT);
  720.  
  721. set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);
  722.  
  723.  
  724.  
  725. set_pev(i_Ent,pev_frame,0);
  726.  
  727. set_pev(i_Ent,pev_body,3);
  728.  
  729. set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
  730.  
  731. set_pev(i_Ent,pev_framerate,0);
  732.  
  733. set_pev(i_Ent,pev_takedamage,DAMAGE_YES);
  734.  
  735. set_pev(i_Ent,pev_dmg,100.0);
  736.  
  737. set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
  738.  
  739. new Float:vOrigin[3];
  740.  
  741. new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
  742.  
  743. Float:vTraceEnd[3],Float:vEntAngles[3];
  744.  
  745. pev(id, pev_origin, vOrigin);
  746.  
  747. velocity_by_aim(id, 128, vTraceDirection);
  748.  
  749. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);
  750.  
  751. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);
  752.  
  753. new Float:fFraction;
  754.  
  755. get_tr2(0, TR_flFraction, fFraction);
  756.  
  757.  
  758.  
  759. // -- We hit something!
  760.  
  761. if(fFraction < 1.0)
  762.  
  763. {
  764.  
  765. // -- Save results to be used later.
  766.  
  767. get_tr2(0, TR_vecEndPos, vTraceEnd);
  768.  
  769. get_tr2(0, TR_vecPlaneNormal, vNormal);
  770.  
  771. }
  772.  
  773.  
  774.  
  775.  
  776.  
  777. xs_vec_mul_scalar(vNormal, 8.0, vNormal);
  778.  
  779. xs_vec_add(vTraceEnd, vNormal, vNewOrigin);
  780.  
  781.  
  782.  
  783. engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 });
  784.  
  785. engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin);
  786.  
  787.  
  788.  
  789. // -- Rotate tripmine.
  790.  
  791. vector_to_angle(vNormal,vEntAngles);
  792.  
  793. set_pev(i_Ent,pev_angles,vEntAngles);
  794.  
  795.  
  796.  
  797. // -- Calculate laser end origin.
  798.  
  799. new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
  800.  
  801.  
  802.  
  803. xs_vec_mul_scalar(vNormal, 8192.0, vNormal);
  804.  
  805. xs_vec_add(vNewOrigin, vNormal, vBeamEnd);
  806.  
  807.  
  808.  
  809. engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0);
  810.  
  811.  
  812.  
  813. get_tr2(0, TR_vecPlaneNormal, vNormal);
  814.  
  815. get_tr2(0, TR_vecEndPos, vTracedBeamEnd);
  816.  
  817.  
  818.  
  819. // -- Save results to be used later.
  820.  
  821. set_pev(i_Ent, LASERMINE_OWNER, id);
  822.  
  823. set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);
  824.  
  825. set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));
  826.  
  827. new Float:fCurrTime = get_gametime();
  828.  
  829.  
  830.  
  831. set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5);
  832.  
  833. set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);
  834.  
  835. set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2);
  836.  
  837.  
  838.  
  839. PlaySound(i_Ent,POWERUP_SOUND);
  840.  
  841. g_deployed[id]++;
  842.  
  843. g_havemine[id]--;
  844.  
  845. DeleteTask(id);
  846.  
  847. ShowAmmo(id);
  848.  
  849. return 1;
  850.  
  851. }
  852.  
  853.  
  854.  
  855. stock TeamDeployedCount(id)
  856.  
  857. {
  858.  
  859. static i;
  860.  
  861. static CsTeams:t;t = cs_get_user_team(id);
  862.  
  863. static cnt;cnt=0;
  864.  
  865.  
  866.  
  867. for(i = 1;i <= g_MaxPL;i++)
  868.  
  869. {
  870.  
  871. if(is_user_connected(i))
  872.  
  873. if(t == cs_get_user_team(i))
  874.  
  875. cnt += g_deployed[i];
  876.  
  877. }
  878.  
  879.  
  880.  
  881. return cnt;
  882.  
  883. }
  884.  
  885.  
  886.  
  887. bool:CheckCanTeam(id)
  888.  
  889. {
  890.  
  891. new arg[5],CsTeam:num;
  892.  
  893. get_pcvar_string(g_LCBT,arg,3);
  894.  
  895. if(equali(arg,"Z"))
  896.  
  897. {
  898.  
  899. num = CsTeam:CS_TEAM_T;
  900.  
  901. }
  902.  
  903. else if(equali(arg,"H"))
  904.  
  905. {
  906.  
  907. num = CsTeam:CS_TEAM_CT;
  908.  
  909. }
  910.  
  911. else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH"))
  912.  
  913. {
  914.  
  915. num = CsTeam:CS_TEAM_UNASSIGNED;
  916.  
  917. }
  918.  
  919. else
  920.  
  921. {
  922.  
  923. num = CsTeam:CS_TEAM_UNASSIGNED;
  924.  
  925. }
  926.  
  927. if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id))
  928.  
  929. return false;
  930.  
  931. return true;
  932.  
  933. }
  934.  
  935.  
  936.  
  937. bool:CanCheck(id,mode) //
  938.  
  939. {
  940.  
  941. if(!get_pcvar_num(g_LENABLE))
  942.  
  943. {
  944.  
  945. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE")
  946.  
  947.  
  948.  
  949. return false;
  950.  
  951. }
  952.  
  953. if(get_pcvar_num(g_LACCESS) != 0)
  954.  
  955. if(!(get_user_flags(id) & ADMIN_IMMUNITY))
  956.  
  957. {
  958.  
  959. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS")
  960.  
  961. return false;
  962.  
  963. }
  964.  
  965. if(!pev_user_alive(id)) return false;
  966.  
  967. if(!CheckCanTeam(id))
  968.  
  969. {
  970.  
  971. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT")
  972.  
  973. return false;
  974.  
  975. }
  976.  
  977. if(mode == 0)
  978.  
  979. {
  980.  
  981. if(g_havemine[id] <= 0)
  982.  
  983. {
  984.  
  985. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE")
  986.  
  987. return false;
  988.  
  989. }
  990.  
  991. }
  992.  
  993. if(mode == 1)
  994.  
  995. {
  996.  
  997. if(get_pcvar_num(g_LBUYMODE) == 0)
  998.  
  999. {
  1000.  
  1001. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY")
  1002.  
  1003. return false;
  1004.  
  1005. }
  1006.  
  1007. if(g_havemine[id] >= get_pcvar_num(g_LAMMO))
  1008.  
  1009. {
  1010.  
  1011. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX")
  1012.  
  1013. return false;
  1014.  
  1015. }
  1016.  
  1017. if(zp_get_user_ammo_packs(id) < get_pcvar_num(g_LCOST))
  1018.  
  1019. {
  1020.  
  1021. client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED")
  1022.  
  1023. return false;
  1024.  
  1025. }
  1026.  
  1027. }
  1028.  
  1029. if(!CheckTime(id))
  1030.  
  1031. {
  1032.  
  1033. client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS")
  1034.  
  1035. return false;
  1036.  
  1037. }
  1038.  
  1039.  
  1040.  
  1041. return true;
  1042.  
  1043. }
  1044.  
  1045.  
  1046.  
  1047. bool:ReturnCheck(id)
  1048.  
  1049. {
  1050.  
  1051. if(!CanCheck(id,-1)) return false;
  1052.  
  1053. if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;
  1054.  
  1055. new tgt,body,Float:vo[3],Float:to[3];
  1056.  
  1057. get_user_aiming(id,tgt,body);
  1058.  
  1059. if(!pev_valid(tgt)) return false;
  1060.  
  1061. pev(id,pev_origin,vo);
  1062.  
  1063. pev(tgt,pev_origin,to);
  1064.  
  1065. if(get_distance_f(vo,to) > 70.0) return false;
  1066.  
  1067. new EntityName[32];
  1068.  
  1069. pev(tgt, pev_classname, EntityName, 31);
  1070.  
  1071. if(!equal(EntityName, ENT_CLASS_NAME)) return false;
  1072.  
  1073. if(pev(tgt,LASERMINE_OWNER) != id) return false;
  1074.  
  1075. return true;
  1076.  
  1077. }
  1078.  
  1079.  
  1080.  
  1081. bool:CreateCheck(id)
  1082.  
  1083. {
  1084.  
  1085. if(!CanCheck(id,0)) return false;
  1086.  
  1087.  
  1088.  
  1089. //
  1090.  
  1091. if(!zp_has_round_started() && get_pcvar_num(g_NOROUND))
  1092.  
  1093. {
  1094.  
  1095. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND")
  1096.  
  1097. return false;
  1098.  
  1099. }
  1100.  
  1101.  
  1102.  
  1103. if(zp_is_nemesis_round() && get_pcvar_num(g_NEMROUND))
  1104.  
  1105. {
  1106.  
  1107. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NEMROUND")
  1108.  
  1109. return false;
  1110.  
  1111. }
  1112.  
  1113.  
  1114.  
  1115. if(zp_is_survivor_round() && get_pcvar_num(g_SURVROUND))
  1116.  
  1117. {
  1118.  
  1119. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SURVROUND")
  1120.  
  1121. return false;
  1122.  
  1123. }
  1124.  
  1125.  
  1126.  
  1127. if(zp_is_swarm_round() && get_pcvar_num(g_SWARMROUND))
  1128.  
  1129. {
  1130.  
  1131. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SWARMROUND")
  1132.  
  1133. return false;
  1134.  
  1135. }
  1136.  
  1137. if(g_deployed[id] >= get_pcvar_num(g_LAMMO))
  1138.  
  1139. {
  1140.  
  1141. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY")
  1142.  
  1143. return false;
  1144.  
  1145. }
  1146.  
  1147.  
  1148.  
  1149. if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))
  1150.  
  1151. {
  1152.  
  1153. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL")
  1154.  
  1155. return false;
  1156.  
  1157. }
  1158.  
  1159. new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];
  1160.  
  1161. pev(id, pev_origin, vOrigin);
  1162.  
  1163. velocity_by_aim(id, 128, vTraceDirection);
  1164.  
  1165. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);
  1166.  
  1167. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);
  1168.  
  1169. new Float:fFraction,Float:vTraceNormal[3];
  1170.  
  1171. get_tr2(0, TR_flFraction, fFraction);
  1172.  
  1173. // -- We hit something!
  1174.  
  1175. if(fFraction < 1.0)
  1176.  
  1177. {
  1178.  
  1179. // -- Save results to be used later.
  1180.  
  1181. get_tr2(0, TR_vecEndPos, vTraceEnd);
  1182.  
  1183. get_tr2(0, TR_vecPlaneNormal, vTraceNormal);
  1184.  
  1185.  
  1186.  
  1187. return true;
  1188.  
  1189. }
  1190.  
  1191.  
  1192.  
  1193. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL")
  1194.  
  1195. DeleteTask(id);
  1196.  
  1197. // -- Did not touched something. (not solid)
  1198.  
  1199. return false;
  1200.  
  1201. }
  1202.  
  1203.  
  1204.  
  1205. public ltm_Think(i_Ent)
  1206.  
  1207. {
  1208.  
  1209. if(!pev_valid(i_Ent))
  1210.  
  1211. return FMRES_IGNORED;
  1212.  
  1213. new EntityName[32];
  1214.  
  1215. pev(i_Ent, pev_classname, EntityName, 31);
  1216.  
  1217. if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;
  1218.  
  1219. // -- Entity is not a tripmine, ignoring the next...
  1220.  
  1221. if(!equal(EntityName, ENT_CLASS_NAME))
  1222.  
  1223. return FMRES_IGNORED;
  1224.  
  1225.  
  1226.  
  1227. static Float:fCurrTime;
  1228.  
  1229. fCurrTime = get_gametime();
  1230.  
  1231.  
  1232.  
  1233. switch(pev(i_Ent, LASERMINE_STEP))
  1234.  
  1235. {
  1236.  
  1237. case POWERUP_THINK :
  1238.  
  1239. {
  1240.  
  1241. new Float:fPowerupTime;
  1242.  
  1243. pev(i_Ent, LASERMINE_POWERUP, fPowerupTime);
  1244.  
  1245.  
  1246.  
  1247. if(fCurrTime > fPowerupTime)
  1248.  
  1249. {
  1250.  
  1251. set_pev(i_Ent, pev_solid, SOLID_BBOX);
  1252.  
  1253. set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK);
  1254.  
  1255.  
  1256.  
  1257. PlaySound(i_Ent, ACTIVATE_SOUND);
  1258.  
  1259. }
  1260.  
  1261. if(get_pcvar_num(g_LGLOW)!=0)
  1262.  
  1263. {
  1264.  
  1265. if(get_pcvar_num(g_LCLMODE)==0)
  1266.  
  1267. {
  1268.  
  1269. switch (pev(i_Ent,LASERMINE_TEAM))
  1270.  
  1271. {
  1272.  
  1273. //
  1274.  
  1275. case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5);
  1276.  
  1277. //
  1278.  
  1279. case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5);
  1280.  
  1281. }
  1282.  
  1283. }else
  1284.  
  1285. {
  1286.  
  1287. //
  1288.  
  1289. set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5);
  1290.  
  1291. }
  1292.  
  1293. }
  1294.  
  1295. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1);
  1296.  
  1297. }
  1298.  
  1299. case BEAMBREAK_THINK :
  1300.  
  1301. {
  1302.  
  1303. static Float:vEnd[3],Float:vOrigin[3];
  1304.  
  1305. pev(i_Ent, pev_origin, vOrigin);
  1306.  
  1307. pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd);
  1308.  
  1309.  
  1310.  
  1311. static iHit, Float:fFraction;
  1312.  
  1313. engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0);
  1314.  
  1315.  
  1316.  
  1317. get_tr2(0, TR_flFraction, fFraction);
  1318.  
  1319. iHit = get_tr2(0, TR_pHit);
  1320.  
  1321.  
  1322.  
  1323. // -- Something has passed the laser.
  1324.  
  1325. if(fFraction < 1.0)
  1326.  
  1327. {
  1328.  
  1329. // -- Ignoring others tripmines entity.
  1330.  
  1331. if(pev_valid(iHit))
  1332.  
  1333. {
  1334.  
  1335. pev(iHit, pev_classname, EntityName, 31);
  1336.  
  1337. //
  1338.  
  1339. if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box))
  1340.  
  1341. {
  1342.  
  1343. set_pev(i_Ent, pev_enemy, iHit);
  1344.  
  1345.  
  1346.  
  1347. if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)
  1348.  
  1349. CreateLaserDamage(i_Ent,iHit);
  1350.  
  1351. else
  1352.  
  1353. if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
  1354.  
  1355. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);
  1356.  
  1357.  
  1358.  
  1359. if (!pev_valid(i_Ent)) // DJ_WEST
  1360.  
  1361. return FMRES_IGNORED;
  1362.  
  1363.  
  1364.  
  1365. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));
  1366.  
  1367. }
  1368.  
  1369. }
  1370.  
  1371. }
  1372.  
  1373. if(get_pcvar_num(g_LDMGMODE)!=0)
  1374.  
  1375. if(pev(i_Ent,LASERMINE_HITING) != iHit)
  1376.  
  1377. set_pev(i_Ent,LASERMINE_HITING,iHit);
  1378.  
  1379.  
  1380.  
  1381. // -- Tripmine is still there.
  1382.  
  1383. if(pev_valid(i_Ent))
  1384.  
  1385. {
  1386.  
  1387. static Float:fHealth;
  1388.  
  1389. pev(i_Ent, pev_health, fHealth);
  1390.  
  1391.  
  1392.  
  1393. if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))
  1394.  
  1395. {
  1396.  
  1397. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);
  1398.  
  1399. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));
  1400.  
  1401. }
  1402.  
  1403.  
  1404.  
  1405. static Float:fBeamthink;
  1406.  
  1407. pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink);
  1408.  
  1409.  
  1410.  
  1411. if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE))
  1412.  
  1413. {
  1414.  
  1415. DrawLaser(i_Ent, vOrigin, vEnd);
  1416.  
  1417. set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1);
  1418.  
  1419. }
  1420.  
  1421. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01);
  1422.  
  1423. }
  1424.  
  1425. }
  1426.  
  1427. case EXPLOSE_THINK :
  1428.  
  1429. {
  1430.  
  1431. // -- Stopping entity to think
  1432.  
  1433. set_pev(i_Ent, pev_nextthink, 0.0);
  1434.  
  1435. PlaySound(i_Ent, STOP_SOUND);
  1436.  
  1437. g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;
  1438.  
  1439. CreateExplosion(i_Ent);
  1440.  
  1441. CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))
  1442.  
  1443. RemoveEntity (i_Ent);
  1444.  
  1445. }
  1446.  
  1447. }
  1448.  
  1449.  
  1450.  
  1451. return FMRES_IGNORED;
  1452.  
  1453. }
  1454.  
  1455.  
  1456.  
  1457. PlaySound(i_Ent, i_SoundType)
  1458.  
  1459. {
  1460.  
  1461. switch (i_SoundType)
  1462.  
  1463. {
  1464.  
  1465. case POWERUP_SOUND :
  1466.  
  1467. {
  1468.  
  1469. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  1470.  
  1471. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM);
  1472.  
  1473. }
  1474.  
  1475. case ACTIVATE_SOUND :
  1476.  
  1477. {
  1478.  
  1479. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75);
  1480.  
  1481. }
  1482.  
  1483. case STOP_SOUND :
  1484.  
  1485. {
  1486.  
  1487. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM);
  1488.  
  1489. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75);
  1490.  
  1491. }
  1492.  
  1493. }
  1494.  
  1495. }
  1496.  
  1497.  
  1498.  
  1499. DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3])
  1500.  
  1501. {
  1502.  
  1503. new tcolor[3];
  1504.  
  1505. new teamid = pev(i_Ent, LASERMINE_TEAM);
  1506.  
  1507. if(get_pcvar_num(g_LCLMODE) == 0)
  1508.  
  1509. {
  1510.  
  1511. switch(teamid){
  1512.  
  1513. case 1:{
  1514.  
  1515. //
  1516.  
  1517. tcolor[0] = Red_Zomb;
  1518.  
  1519. tcolor[1] = Green_Zomb;
  1520.  
  1521. tcolor[2] = Blue_Zomb;
  1522.  
  1523. }
  1524.  
  1525. case 2:{
  1526.  
  1527. //
  1528.  
  1529. tcolor[0] = Red_Hum;
  1530.  
  1531. tcolor[1] = Green_Hum;
  1532.  
  1533. tcolor[2] = Blue_Hum;
  1534.  
  1535. }
  1536.  
  1537. }
  1538.  
  1539. }else
  1540.  
  1541. {
  1542.  
  1543. //
  1544.  
  1545. tcolor[0] = random_num(50 , 200);
  1546.  
  1547. tcolor[1] = random_num(50 , 200);
  1548.  
  1549. tcolor[2] = random_num(50 , 200);
  1550.  
  1551. }
  1552.  
  1553. message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  1554.  
  1555. write_byte(TE_BEAMPOINTS);
  1556.  
  1557. engfunc(EngFunc_WriteCoord,v_Origin[0]);
  1558.  
  1559. engfunc(EngFunc_WriteCoord,v_Origin[1]);
  1560.  
  1561. engfunc(EngFunc_WriteCoord,v_Origin[2]);
  1562.  
  1563. engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random
  1564.  
  1565. engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random
  1566.  
  1567. engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random
  1568.  
  1569. write_short(beam);
  1570.  
  1571. write_byte(0);
  1572.  
  1573. write_byte(0);
  1574.  
  1575. write_byte(1); //Life
  1576.  
  1577. write_byte(5); //Width
  1578.  
  1579. write_byte(0); //wave
  1580.  
  1581. write_byte(tcolor[0]); // r
  1582.  
  1583. write_byte(tcolor[1]); // g
  1584.  
  1585. write_byte(tcolor[2]); // b
  1586.  
  1587. write_byte(get_pcvar_num(g_LCBRIGHT));
  1588.  
  1589. write_byte(255);
  1590.  
  1591. message_end();
  1592.  
  1593. }
  1594.  
  1595.  
  1596.  
  1597. CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
  1598.  
  1599. {
  1600.  
  1601. // Get given parameters
  1602.  
  1603. new Float:vecSrc[3];
  1604.  
  1605. pev(iCurrent, pev_origin, vecSrc);
  1606.  
  1607.  
  1608.  
  1609. new AtkID =pev(iCurrent,LASERMINE_OWNER);
  1610.  
  1611. new TeamID=pev(iCurrent,LASERMINE_TEAM);
  1612.  
  1613.  
  1614.  
  1615. new ent = -1;
  1616.  
  1617. new Float:tmpdmg = DmgMAX;
  1618.  
  1619.  
  1620.  
  1621. new Float:kickback = 0.0;
  1622.  
  1623. // Needed for doing some nice calculations <!-- s:P --><img src=\"{SMILIES_PATH}/icon_razz.gif\" alt=\":P\" title=\"vicces\" /><!-- s:P -->
  1624.  
  1625. new Float:Tabsmin[3], Float:Tabsmax[3];
  1626.  
  1627. new Float:vecSpot[3];
  1628.  
  1629. new Float:Aabsmin[3], Float:Aabsmax[3];
  1630.  
  1631. new Float:vecSee[3];
  1632.  
  1633. new trRes;
  1634.  
  1635. new Float:flFraction;
  1636.  
  1637. new Float:vecEndPos[3];
  1638.  
  1639. new Float:distance;
  1640.  
  1641. new Float:origin[3], Float:vecPush[3];
  1642.  
  1643. new Float:invlen;
  1644.  
  1645. new Float:velocity[3];
  1646.  
  1647. new iHitHP,iHitTeam;
  1648.  
  1649. // Calculate falloff
  1650.  
  1651. new Float:falloff;
  1652.  
  1653. if(Radius > 0.0)
  1654.  
  1655. {
  1656.  
  1657. falloff = DmgMAX / Radius;
  1658.  
  1659. } else {
  1660.  
  1661. falloff = 1.0;
  1662.  
  1663. }
  1664.  
  1665. // Find monsters and players inside a specifiec radius
  1666.  
  1667. while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0)
  1668.  
  1669. {
  1670.  
  1671. if(!pev_valid(ent)) continue;
  1672.  
  1673. if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
  1674.  
  1675. {
  1676.  
  1677. // Entity is not a player or monster, ignore it
  1678.  
  1679. continue;
  1680.  
  1681. }
  1682.  
  1683. if(!pev_user_alive(ent)) continue;
  1684.  
  1685. // Reset data
  1686.  
  1687. kickback = 1.0;
  1688.  
  1689. tmpdmg = DmgMAX;
  1690.  
  1691. // The following calculations are provided by Orangutanz, THANKS!
  1692.  
  1693. // We use absmin and absmax for the most accurate information
  1694.  
  1695. pev(ent, pev_absmin, Tabsmin);
  1696.  
  1697. pev(ent, pev_absmax, Tabsmax);
  1698.  
  1699. xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
  1700.  
  1701. xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
  1702.  
  1703. pev(iCurrent, pev_absmin, Aabsmin);
  1704.  
  1705. pev(iCurrent, pev_absmax, Aabsmax);
  1706.  
  1707. xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
  1708.  
  1709. xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
  1710.  
  1711. engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes);
  1712.  
  1713. get_tr2(trRes, TR_flFraction, flFraction);
  1714.  
  1715. // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
  1716.  
  1717. if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent)
  1718.  
  1719. {
  1720.  
  1721. // Work out the distance between impact and entity
  1722.  
  1723. get_tr2(trRes, TR_vecEndPos, vecEndPos);
  1724.  
  1725. distance = get_distance_f(vecSrc, vecEndPos) * falloff;
  1726.  
  1727. tmpdmg -= distance;
  1728.  
  1729. if(tmpdmg < 0.0)
  1730.  
  1731. tmpdmg = 0.0;
  1732.  
  1733. // Kickback Effect
  1734.  
  1735. if(kickback != 0.0)
  1736.  
  1737. {
  1738.  
  1739. xs_vec_sub(vecSpot,vecSee,origin);
  1740.  
  1741. invlen = 1.0/get_distance_f(vecSpot, vecSee);
  1742.  
  1743.  
  1744.  
  1745. xs_vec_mul_scalar(origin,invlen,vecPush);
  1746.  
  1747. pev(ent, pev_velocity, velocity)
  1748.  
  1749. xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
  1750.  
  1751. xs_vec_mul_scalar(vecPush,kickback,vecPush);
  1752.  
  1753. xs_vec_add(velocity,vecPush,velocity);
  1754.  
  1755. if(tmpdmg < 60.0)
  1756.  
  1757. {
  1758.  
  1759. xs_vec_mul_scalar(velocity,12.0,velocity);
  1760.  
  1761. } else {
  1762.  
  1763. xs_vec_mul_scalar(velocity,4.0,velocity);
  1764.  
  1765. }
  1766.  
  1767. if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
  1768.  
  1769. {
  1770.  
  1771. // There's some movement todo <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->
  1772.  
  1773. set_pev(ent, pev_velocity, velocity)
  1774.  
  1775. }
  1776.  
  1777. }
  1778.  
  1779.  
  1780.  
  1781. iHitHP = pev_user_health(ent) - floatround(tmpdmg)
  1782.  
  1783. iHitTeam = int:cs_get_user_team(ent)
  1784.  
  1785. if(iHitHP <= 0)
  1786.  
  1787. {
  1788.  
  1789. if(iHitTeam != TeamID)
  1790.  
  1791. {
  1792.  
  1793. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) + get_pcvar_num(g_LFMONEY))
  1794.  
  1795. set_score(AtkID,ent,1,iHitHP)
  1796.  
  1797. }else
  1798.  
  1799. {
  1800.  
  1801. if(get_pcvar_num(g_LFF))
  1802.  
  1803. {
  1804.  
  1805. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) - get_pcvar_num(g_LFMONEY))
  1806.  
  1807. set_score(AtkID,ent,-1,iHitHP)
  1808.  
  1809. }
  1810.  
  1811. }
  1812.  
  1813. }else
  1814.  
  1815. {
  1816.  
  1817. if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
  1818.  
  1819. {
  1820.  
  1821. //set_pev(Player,pev_health,iHitHP)
  1822.  
  1823. set_user_health(ent, iHitHP)
  1824.  
  1825. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
  1826.  
  1827. write_byte(floatround(tmpdmg))
  1828.  
  1829. write_byte(floatround(tmpdmg))
  1830.  
  1831. write_long(DMG_BULLET)
  1832.  
  1833. engfunc(EngFunc_WriteCoord,vecSrc[0])
  1834.  
  1835. engfunc(EngFunc_WriteCoord,vecSrc[1])
  1836.  
  1837. engfunc(EngFunc_WriteCoord,vecSrc[2])
  1838.  
  1839. message_end()
  1840.  
  1841. }
  1842.  
  1843. }
  1844.  
  1845. }
  1846.  
  1847. }
  1848.  
  1849. return
  1850.  
  1851. }
  1852.  
  1853.  
  1854.  
  1855. bool:pev_user_alive(ent)
  1856.  
  1857. {
  1858.  
  1859. new deadflag = pev(ent,pev_deadflag);
  1860.  
  1861. if(deadflag != DEAD_NO)
  1862.  
  1863. return false;
  1864.  
  1865. return true;
  1866.  
  1867. }
  1868.  
  1869.  
  1870.  
  1871. CreateExplosion(iCurrent)
  1872.  
  1873. {
  1874.  
  1875. new Float:vOrigin[3];
  1876.  
  1877. pev(iCurrent,pev_origin,vOrigin);
  1878.  
  1879.  
  1880.  
  1881. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  1882.  
  1883. write_byte(99); //99 = KillBeam
  1884.  
  1885. write_short(iCurrent);
  1886.  
  1887. message_end();
  1888.  
  1889.  
  1890.  
  1891. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0);
  1892.  
  1893. write_byte(TE_EXPLOSION);
  1894.  
  1895. engfunc(EngFunc_WriteCoord,vOrigin[0]);
  1896.  
  1897. engfunc(EngFunc_WriteCoord,vOrigin[1]);
  1898.  
  1899. engfunc(EngFunc_WriteCoord,vOrigin[2]);
  1900.  
  1901. write_short(boom);
  1902.  
  1903. write_byte(30);
  1904.  
  1905. write_byte(15);
  1906.  
  1907. write_byte(0);
  1908.  
  1909. message_end();
  1910.  
  1911. }
  1912.  
  1913.  
  1914.  
  1915. CreateLaserDamage(iCurrent,isHit)
  1916.  
  1917. {
  1918.  
  1919. if(isHit < 0) return PLUGIN_CONTINUE
  1920.  
  1921. switch(get_pcvar_num(g_LDMGMODE))
  1922.  
  1923. {
  1924.  
  1925. case 1:
  1926.  
  1927. {
  1928.  
  1929. if(pev(iCurrent,LASERMINE_HITING) == isHit)
  1930.  
  1931. return PLUGIN_CONTINUE
  1932.  
  1933. }
  1934.  
  1935. case 2:
  1936.  
  1937. {
  1938.  
  1939. if(pev(iCurrent,LASERMINE_HITING) == isHit)
  1940.  
  1941. {
  1942.  
  1943. static Float:cnt
  1944.  
  1945. static now,htime;now = floatround(get_gametime())
  1946.  
  1947.  
  1948.  
  1949. pev(iCurrent,LASERMINE_COUNT,cnt)
  1950.  
  1951. htime = floatround(cnt)
  1952.  
  1953. if(now - htime < get_pcvar_num(g_LDSEC))
  1954.  
  1955. {
  1956.  
  1957. return PLUGIN_CONTINUE;
  1958.  
  1959. }else{
  1960.  
  1961. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
  1962.  
  1963. }
  1964.  
  1965. }else
  1966.  
  1967. {
  1968.  
  1969. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
  1970.  
  1971. }
  1972.  
  1973. }
  1974.  
  1975. }
  1976.  
  1977.  
  1978.  
  1979. new Float:vOrigin[3],Float:vEnd[3]
  1980.  
  1981. pev(iCurrent,pev_origin,vOrigin)
  1982.  
  1983. pev(iCurrent,pev_vuser1,vEnd)
  1984.  
  1985.  
  1986.  
  1987. new teamid = pev(iCurrent, LASERMINE_TEAM)
  1988.  
  1989.  
  1990.  
  1991. new szClassName[32]
  1992.  
  1993. new Alive,God
  1994.  
  1995. new iHitTeam,iHitHP,id
  1996.  
  1997. new hitscore
  1998.  
  1999.  
  2000.  
  2001. szClassName[0] = '^0'
  2002.  
  2003. pev(isHit,pev_classname,szClassName,32)
  2004.  
  2005. if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
  2006.  
  2007. {
  2008.  
  2009. Alive = pev_user_alive(isHit)
  2010.  
  2011. God = get_user_godmode(isHit)
  2012.  
  2013. if(!Alive || God) return PLUGIN_CONTINUE
  2014.  
  2015. iHitTeam = int:cs_get_user_team(isHit)
  2016.  
  2017. iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
  2018.  
  2019. id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
  2020.  
  2021. if(iHitHP <= 0)
  2022.  
  2023. {
  2024.  
  2025. if(iHitTeam != teamid)
  2026.  
  2027. {
  2028.  
  2029. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  2030.  
  2031. hitscore = 1
  2032.  
  2033. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY))
  2034.  
  2035. set_score(id,isHit,hitscore,iHitHP)
  2036.  
  2037. }else
  2038.  
  2039. {
  2040.  
  2041. if(get_pcvar_num(g_LFF))
  2042.  
  2043. {
  2044.  
  2045. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  2046.  
  2047. hitscore = -1
  2048.  
  2049. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY))
  2050.  
  2051. set_score(id,isHit,hitscore,iHitHP)
  2052.  
  2053. }
  2054.  
  2055. }
  2056.  
  2057. }else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
  2058.  
  2059. {
  2060.  
  2061. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)
  2062.  
  2063. set_user_health(isHit,iHitHP)
  2064.  
  2065. set_pev(iCurrent,LASERMINE_HITING,isHit);
  2066.  
  2067. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);
  2068.  
  2069. write_byte(get_pcvar_num(g_LDMG))
  2070.  
  2071. write_byte(get_pcvar_num(g_LDMG))
  2072.  
  2073. write_long(DMG_BULLET)
  2074.  
  2075. engfunc(EngFunc_WriteCoord,vOrigin[0])
  2076.  
  2077. engfunc(EngFunc_WriteCoord,vOrigin[1])
  2078.  
  2079. engfunc(EngFunc_WriteCoord,vOrigin[2])
  2080.  
  2081. message_end()
  2082.  
  2083. }
  2084.  
  2085. }else if(equal(szClassName, ENT_CLASS_NAME3))
  2086.  
  2087. {
  2088.  
  2089. new hl;
  2090.  
  2091. hl = pev_user_health(isHit);
  2092.  
  2093. set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
  2094.  
  2095. }
  2096.  
  2097. return PLUGIN_CONTINUE
  2098.  
  2099. }
  2100.  
  2101.  
  2102.  
  2103. stock pev_user_health(id)
  2104.  
  2105. {
  2106.  
  2107. new Float:health
  2108.  
  2109. pev(id,pev_health,health)
  2110.  
  2111. return floatround(health)
  2112.  
  2113. }
  2114.  
  2115.  
  2116.  
  2117. stock set_user_health(id,health)
  2118.  
  2119. {
  2120.  
  2121. health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
  2122.  
  2123. }
  2124.  
  2125.  
  2126.  
  2127. stock get_user_godmode(index) {
  2128.  
  2129. new Float:val
  2130.  
  2131. pev(index, pev_takedamage, val)
  2132.  
  2133.  
  2134.  
  2135. return (val == DAMAGE_NO)
  2136.  
  2137. }
  2138.  
  2139.  
  2140.  
  2141. stock set_user_frags(index, frags)
  2142.  
  2143. {
  2144.  
  2145. set_pev(index, pev_frags, float(frags))
  2146.  
  2147.  
  2148.  
  2149. return 1
  2150.  
  2151. }
  2152.  
  2153.  
  2154.  
  2155. stock pev_user_frags(index)
  2156.  
  2157. {
  2158.  
  2159. new Float:frags;
  2160.  
  2161. pev(index,pev_frags,frags);
  2162.  
  2163. return floatround(frags);
  2164.  
  2165. }
  2166.  
  2167.  
  2168.  
  2169. set_score(id,target,hitscore,HP){
  2170.  
  2171.  
  2172.  
  2173. new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore
  2174.  
  2175. set_user_frags(id,idfrags)
  2176.  
  2177. new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1
  2178.  
  2179. set_user_frags(target,tarfrags)
  2180.  
  2181. new idteam = int:cs_get_user_team(id)
  2182.  
  2183. new iddeaths = cs_get_user_deaths(id)
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189. message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0)
  2190.  
  2191. write_byte(id)
  2192.  
  2193. write_byte(target)
  2194.  
  2195. write_byte(0)
  2196.  
  2197. write_string(ENT_CLASS_NAME)
  2198.  
  2199. message_end()
  2200.  
  2201.  
  2202.  
  2203. message_begin(MSG_ALL, g_msgScoreInfo)
  2204.  
  2205. write_byte(id)
  2206.  
  2207. write_short(idfrags)
  2208.  
  2209. write_short(iddeaths)
  2210.  
  2211. write_short(0)
  2212.  
  2213. write_short(idteam)
  2214.  
  2215. message_end()
  2216.  
  2217.  
  2218.  
  2219. set_msg_block(g_msgDeathMsg, BLOCK_ONCE)
  2220.  
  2221.  
  2222.  
  2223. set_user_health(target, HP)
  2224.  
  2225.  
  2226.  
  2227. }
  2228.  
  2229.  
  2230.  
  2231. public BuyLasermine(id)
  2232.  
  2233. {
  2234.  
  2235. if(!CanCheck(id,1)) return PLUGIN_CONTINUE
  2236.  
  2237.  
  2238.  
  2239. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LCOST))
  2240.  
  2241. g_havemine[id]++;
  2242.  
  2243.  
  2244.  
  2245. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT")
  2246.  
  2247.  
  2248.  
  2249. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  2250.  
  2251. ShowAmmo(id)
  2252.  
  2253. return PLUGIN_HANDLED
  2254.  
  2255. }
  2256.  
  2257.  
  2258.  
  2259. public zp_extra_item_selected(id, itemid)
  2260.  
  2261. {
  2262.  
  2263. if(itemid == g_LME)
  2264.  
  2265. {
  2266.  
  2267. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + LMCost)
  2268.  
  2269. BuyLasermine(id)
  2270.  
  2271. }
  2272.  
  2273. return PLUGIN_CONTINUE
  2274.  
  2275. }
  2276.  
  2277.  
  2278.  
  2279. ShowAmmo(id)
  2280.  
  2281. {
  2282.  
  2283. new ammo[51]
  2284.  
  2285. new PlugStat[ 555 char ];
  2286.  
  2287. formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE")
  2288.  
  2289. formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO))
  2290.  
  2291.  
  2292.  
  2293. message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
  2294.  
  2295. write_byte(0)
  2296.  
  2297. write_string(ammo)
  2298.  
  2299. message_end()
  2300.  
  2301. }
  2302.  
  2303.  
  2304.  
  2305. public showInfo(id)
  2306.  
  2307. {
  2308.  
  2309. client_print(id, print_chat, "%L", id, "STR_REF")
  2310.  
  2311. }
  2312.  
  2313.  
  2314.  
  2315. public say_lasermine(id){
  2316.  
  2317. new said[32]
  2318.  
  2319. read_argv(1,said,31);
  2320.  
  2321. if(!get_pcvar_num(g_LENABLE))
  2322.  
  2323. {
  2324.  
  2325. return PLUGIN_CONTINUE
  2326.  
  2327. }
  2328.  
  2329. if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")){
  2330.  
  2331. BuyLasermine(id)
  2332.  
  2333. }else if(equali(said, "lasermine") || equali(said, "/lasermine")){
  2334.  
  2335. const SIZE = 1024
  2336.  
  2337. new msg[SIZE+1],len = 0;
  2338.  
  2339. len += formatex(msg[len], SIZE - len, "<html><body>")
  2340.  
  2341. len += formatex(msg[len], SIZE - len, "<p><b>Lezer</b></p><br/><br/>")
  2342.  
  2343. len += formatex(msg[len], SIZE - len, "<p>Fel tudsz tenni a falra lezert.</p><br/>")
  2344.  
  2345. len += formatex(msg[len], SIZE - len, "<p>A lezer megoli az ellenfeleket, ha belemennek!</p><br/><br/>")
  2346.  
  2347. len += formatex(msg[len], SIZE - len, "<p><b>Lezer parancsok</b></p><br/><br/>")
  2348.  
  2349. len += formatex(msg[len], SIZE - len, "<p><b>Ird: /buy lasermine</b> vagy <b>/lm</b> hogy lezert vehess!<br/>")
  2350.  
  2351. len += formatex(msg[len], SIZE - len, "<b>buy_lasermine</b> //Hogy F2-vel lezert vehess, ird a consolba: bind ^"F2^" buy_lasermine<br/>")
  2352.  
  2353. len += formatex(msg[len], SIZE - len, "<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set lasermine on wall<br/>")
  2354.  
  2355. len += formatex(msg[len], SIZE - len, "</body></html>")
  2356.  
  2357. show_motd(id, msg, "Lasermine Entity help")
  2358.  
  2359. return PLUGIN_CONTINUE
  2360.  
  2361. }
  2362.  
  2363. else if(containi(said, "laser") != -1) {
  2364.  
  2365. showInfo(id)
  2366.  
  2367. return PLUGIN_CONTINUE
  2368.  
  2369. }
  2370.  
  2371. return PLUGIN_CONTINUE
  2372.  
  2373. }
  2374.  
  2375.  
  2376.  
  2377. public standing(id)
  2378.  
  2379. {
  2380.  
  2381. if(!g_settinglaser[id])
  2382.  
  2383. return PLUGIN_CONTINUE
  2384.  
  2385.  
  2386.  
  2387. set_pev(id, pev_maxspeed, 1.0)
  2388.  
  2389.  
  2390.  
  2391. return PLUGIN_CONTINUE
  2392.  
  2393. }
  2394.  
  2395.  
  2396.  
  2397. public ltm_PostThink(id)
  2398.  
  2399. {
  2400.  
  2401. if(!g_settinglaser[id] && plsetting[id]){
  2402.  
  2403. resetspeed(id)
  2404.  
  2405. }
  2406.  
  2407. else if(g_settinglaser[id] && !plsetting[id]) {
  2408.  
  2409. pev(id, pev_maxspeed,plspeed[id])
  2410.  
  2411. set_pev(id, pev_maxspeed, 1.0)
  2412.  
  2413. }
  2414.  
  2415. plsetting[id] = g_settinglaser[id]
  2416.  
  2417. return FMRES_IGNORED
  2418.  
  2419. }
  2420.  
  2421.  
  2422.  
  2423. public ltm_PreThink(id)
  2424.  
  2425. {
  2426.  
  2427. if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1)
  2428.  
  2429. return FMRES_IGNORED;
  2430.  
  2431.  
  2432.  
  2433. if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE))
  2434.  
  2435. CreateLaserMine_Progress(id)
  2436.  
  2437. return FMRES_IGNORED;
  2438.  
  2439. }
  2440.  
  2441.  
  2442.  
  2443. resetspeed(id)
  2444.  
  2445. {
  2446.  
  2447. set_pev(id, pev_maxspeed, plspeed[id])
  2448.  
  2449. }
  2450.  
  2451.  
  2452.  
  2453. public client_putinserver(id){
  2454.  
  2455. g_deployed[id] = 0;
  2456.  
  2457. g_havemine[id] = 0;
  2458.  
  2459. DeleteTask(id);
  2460.  
  2461. return PLUGIN_CONTINUE
  2462.  
  2463. }
  2464.  
  2465.  
  2466.  
  2467. public client_disconnect(id){
  2468.  
  2469. if(!get_pcvar_num(g_LENABLE))
  2470.  
  2471. return PLUGIN_CONTINUE
  2472.  
  2473. DeleteTask(id);
  2474.  
  2475. RemoveAllTripmines(id);
  2476.  
  2477. return PLUGIN_CONTINUE
  2478.  
  2479. }
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485. public newround(id){
  2486.  
  2487. if(!get_pcvar_num(g_LENABLE))
  2488.  
  2489. return PLUGIN_CONTINUE
  2490.  
  2491. pev(id, pev_maxspeed,plspeed[id])
  2492.  
  2493. DeleteTask(id);
  2494.  
  2495. RemoveAllTripmines(id);
  2496.  
  2497. //client_print(id, print_chat, "[ZP][LM][DeBug] All Mines removied!");
  2498.  
  2499. delaycount(id);
  2500.  
  2501. SetStartAmmo(id);
  2502.  
  2503. return PLUGIN_CONTINUE
  2504.  
  2505. }
  2506.  
  2507.  
  2508.  
  2509. public endround(id, i_Owner)
  2510.  
  2511. {
  2512.  
  2513. if(!get_pcvar_num(g_LENABLE))
  2514.  
  2515. return PLUGIN_CONTINUE
  2516.  
  2517.  
  2518.  
  2519. //
  2520.  
  2521. DeleteTask(id);
  2522.  
  2523. new iEnt = g_MaxPL + 1;
  2524.  
  2525. new clsname[32];
  2526.  
  2527. while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME)))
  2528.  
  2529. {
  2530.  
  2531. clsname[0] = '^0'
  2532.  
  2533. pev(iEnt, pev_classname, clsname, sizeof(clsname)-1);
  2534.  
  2535. PlaySound(iEnt, STOP_SOUND);
  2536.  
  2537. RemoveEntity(iEnt);
  2538.  
  2539. //set_pev(iEnt, pev_flags, FL_KILLME);
  2540.  
  2541. }
  2542.  
  2543. g_deployed[i_Owner]=0;
  2544.  
  2545.  
  2546.  
  2547. return PLUGIN_CONTINUE
  2548.  
  2549. }
  2550.  
  2551.  
  2552.  
  2553. public DeathEvent(){
  2554.  
  2555. if(!get_pcvar_num(g_LENABLE))
  2556.  
  2557. return PLUGIN_CONTINUE
  2558.  
  2559.  
  2560.  
  2561. new id = read_data(2)
  2562.  
  2563. if(is_user_connected(id)) DeleteTask(id);
  2564.  
  2565. return PLUGIN_CONTINUE
  2566.  
  2567. }
  2568.  
  2569.  
  2570.  
  2571. public RemoveAllTripmines(i_Owner)
  2572.  
  2573. {
  2574.  
  2575. new iEnt = g_MaxPL + 1;
  2576.  
  2577. new clsname[32];
  2578.  
  2579. while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME)))
  2580.  
  2581. {
  2582.  
  2583. if(i_Owner)
  2584.  
  2585. {
  2586.  
  2587. if(pev(iEnt, LASERMINE_OWNER) != i_Owner)
  2588.  
  2589. continue;
  2590.  
  2591. clsname[0] = '^0'
  2592.  
  2593. pev(iEnt, pev_classname, clsname, sizeof(clsname)-1);
  2594.  
  2595. if(equali(clsname, ENT_CLASS_NAME))
  2596.  
  2597. {
  2598.  
  2599. PlaySound(iEnt, STOP_SOUND);
  2600.  
  2601. RemoveEntity(iEnt);
  2602.  
  2603. }
  2604.  
  2605. }
  2606.  
  2607. else
  2608.  
  2609. set_pev(iEnt, pev_flags, FL_KILLME);
  2610.  
  2611. }
  2612.  
  2613. g_deployed[i_Owner]=0;
  2614.  
  2615. }
  2616.  
  2617.  
  2618.  
  2619. SetStartAmmo(id)
  2620.  
  2621. {
  2622.  
  2623. new stammo = get_pcvar_num(g_LSTAMMO);
  2624.  
  2625. if(stammo <= 0) return PLUGIN_CONTINUE;
  2626.  
  2627. g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id];
  2628.  
  2629. return PLUGIN_CONTINUE;
  2630.  
  2631. }
  2632.  
  2633.  
  2634.  
  2635. public CutDeploy_onDamage(id)
  2636.  
  2637. {
  2638.  
  2639. if(get_user_health(id) < 1)
  2640.  
  2641. DeleteTask(id);
  2642.  
  2643. }
  2644.  
  2645.  
  2646.  
  2647. DeleteTask(id)
  2648.  
  2649. {
  2650.  
  2651. if(task_exists((TASK_PLANT + id)))
  2652.  
  2653. {
  2654.  
  2655. remove_task((TASK_PLANT + id))
  2656.  
  2657. }
  2658.  
  2659. if(task_exists((TASK_RELEASE + id)))
  2660.  
  2661. {
  2662.  
  2663. remove_task((TASK_RELEASE + id))
  2664.  
  2665. }
  2666.  
  2667. g_settinglaser[id] = false
  2668.  
  2669. return PLUGIN_CONTINUE;
  2670.  
  2671. }
  2672.  
  2673.  
  2674.  
  2675. stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
  2676.  
  2677. {
  2678.  
  2679. static Float:RenderColor[3];
  2680.  
  2681. RenderColor[0] = float(r);
  2682.  
  2683. RenderColor[1] = float(g);
  2684.  
  2685. RenderColor[2] = float(b);
  2686.  
  2687.  
  2688.  
  2689. set_pev(entity, pev_renderfx, fx);
  2690.  
  2691. set_pev(entity, pev_rendercolor, RenderColor);
  2692.  
  2693. set_pev(entity, pev_rendermode, render);
  2694.  
  2695. set_pev(entity, pev_renderamt, float(amount));
  2696.  
  2697.  
  2698.  
  2699. return 1
  2700.  
  2701. }
  2702.  
  2703.  
  2704.  
  2705. // Gets offset data
  2706.  
  2707. get_offset_value(id, type)
  2708.  
  2709. {
  2710.  
  2711. new key = -1;
  2712.  
  2713. switch(type)
  2714.  
  2715. {
  2716.  
  2717. case OFFSET_TEAM: key = OFFSET_TEAM;
  2718.  
  2719. case OFFSET_MONEY:
  2720.  
  2721. key = OFFSET_MONEY;
  2722.  
  2723. case OFFSET_DEATH: key = OFFSET_DEATH;
  2724.  
  2725. }
  2726.  
  2727. if(key != -1)
  2728.  
  2729. {
  2730.  
  2731. if(is_amd64_server()) key += 25;
  2732.  
  2733. return get_pdata_int(id, key);
  2734.  
  2735. }
  2736.  
  2737. return -1;
  2738.  
  2739. }
  2740.  
  2741. stock print_color(const id, const input[], any:...)
  2742.  
  2743. {
  2744.  
  2745. new count = 1, players[32]
  2746.  
  2747. static msg[191]
  2748.  
  2749. vformat(msg, 190, input, 3)
  2750.  
  2751.  
  2752.  
  2753. replace_all(msg, 190, "!g", "^4")
  2754.  
  2755. replace_all(msg, 190, "!y", "^1")
  2756.  
  2757. replace_all(msg, 190, "!t", "^3")
  2758.  
  2759. replace_all(msg, 190, "á", "á")
  2760.  
  2761. replace_all(msg, 190, "é", "Ă©")
  2762.  
  2763. replace_all(msg, 190, "í", "Ă)
  2764.  
  2765. replace_all(msg, 190, "ó", "Ăł")
  2766.  
  2767. replace_all(msg, 190, "ö", "ö")
  2768.  
  2769. replace_all(msg, 190, "ő", "Ĺ‘")
  2770.  
  2771. replace_all(msg, 190, "ú", "Ăş")
  2772.  
  2773. replace_all(msg, 190, "ü", "ĂĽ")
  2774.  
  2775. replace_all(msg, 190, "ű", "ű")
  2776.  
  2777. replace_all(msg, 190, "Á", "Á")
  2778.  
  2779. replace_all(msg, 190, "É", "É")
  2780.  
  2781. replace_all(msg, 190, "Í", "ĂŤ")
  2782.  
  2783. replace_all(msg, 190, "Ó", "Ă“")
  2784.  
  2785. replace_all(msg, 190, "Ö", "Ă–")
  2786.  
  2787. replace_all(msg, 190, "Ő", "Ő")
  2788.  
  2789. replace_all(msg, 190, "Ú", "Ăš")
  2790.  
  2791. replace_all(msg, 190, "Ü", "Ăś")
  2792.  
  2793. replace_all(msg, 190, "Ű", "Ĺ°")
  2794.  
  2795.  
  2796.  
  2797. if (id) players[0] = id; else get_players(players, count, "ch")
  2798.  
  2799. {
  2800.  
  2801. for (new i = 0; i < count; i++)
  2802.  
  2803. {
  2804.  
  2805. if (is_user_connected(players[i]))
  2806.  
  2807. {
  2808.  
  2809. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  2810.  
  2811. write_byte(players[i])
  2812.  
  2813. write_string(msg)
  2814.  
  2815. message_end()
  2816.  
  2817. }
  2818.  
  2819. }
  2820.  
  2821. }
  2822.  
  2823. return PLUGIN_HANDLED
  2824.  
  2825. }
  2826.  
  2827.  
  2828.  
  2829. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  2830.  
  2831. *{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1038{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
  2832.  
  2833. */
  2834.  
  2835.  

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

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