hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 23:42



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]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  [6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Zombie Plague Lézer
HozzászólásElküldve:2012.06.11. 09:02 
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
Hogy lehet megcsinálni , hogy az admin mindenki lézerét szétlőhesse .
( A játékosok egymás lézereit pedig NEM.)
Csak a sajátot. Persze ZM. karmolhatja a lézer:)

Köszi előre is!

_________________
[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]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombie Plague Lézer
HozzászólásElküldve:2012.06.11. 09:04 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
ha a játékos admin akkor tovább engeded a lézernek a sebzősést, ha ct akkor leállítod, ha terror akkor szintén tovább engeded, illetve ha a sajátod akkor is tovább engeded a függvényt!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombie Plague Lézer
HozzászólásElküldve:2012.06.11. 09:07 
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
Hát igen, csak nekem ez Kiki túl magas:D

Ő kicsit gyengébb verzióba eltudnád magyarázni !

_________________
[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]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombie Plague Lézer
HozzászólásElküldve:2012.06.11. 09:12 
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
Kód:
  1. /*

  2. ?????? ???????????? Shidla [SGC] ?????????? ??? ???, ???? ??????? ??, ??? ?????? ????)))

  3. ICQ: 312-298-513

  4.  

  5. Shidla [SGC] | 2010 ???

  6.  

  7. 2.8.1 [Final Version] | 09.09.2010

  8. */

  9.  

  10. #include <amxmodx>

  11. #include <fakemeta>

  12. #include <hamsandwich>

  13. #include <xs>

  14. #include <zombieplague>

  15.  

  16. #if AMXX_VERSION_NUM < 180

  17. #assert AMX Mod X v1.8.0 or greater library required!

  18. #endif

  19.  

  20. #define PLUGIN "[ZP] LaserMine"

  21. #define VERSION "2.8.1"

  22. #define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST"

  23.  

  24. #define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)

  25. #define TASK_PLANT 15100

  26. #define TASK_RESET 15500

  27. #define TASK_RELEASE 15900

  28.  

  29. #define LASERMINE_TEAM pev_iuser1 //EV_INT_iuser1

  30. #define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3

  31. #define LASERMINE_STEP pev_iuser3

  32. #define LASERMINE_HITING pev_iuser4

  33. #define LASERMINE_COUNT pev_fuser1

  34.  

  35. #define LASERMINE_POWERUP pev_fuser2

  36. #define LASERMINE_BEAMTHINK pev_fuser3

  37.  

  38. #define LASERMINE_BEAMENDPOINT pev_vuser1

  39. #define MAX_MINES 10

  40. #define MODE_LASERMINE 0

  41. #define OFFSET_TEAM 114

  42. #define OFFSET_MONEY 115

  43. #define OFFSET_DEATH 444

  44.  

  45. #define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM)

  46. #define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)

  47.  

  48. // ???? ?? ???? ???????????? ? ????. ???????? ???? ???????? ??????!

  49. new const LMCost = 10

  50.  

  51.  

  52. /*########### ????? ??? ? ???????? ????? ###########*/

  53. // ???? ???? ? ?????? ?????

  54. new const

  55. Red_Hum = 0,

  56. Green_Hum = 0,

  57. Blue_Hum = 255;

  58.  

  59. // ???? ???? ? ?????? ?????

  60. new const

  61. Red_Zomb = 255,

  62. Green_Zomb = 128,

  63. Blue_Zomb = 64;

  64. /*####### ????? ??? ? ???????? ????? (?????) #######*/

  65.  

  66. enum CsTeams {

  67. CS_TEAM_UNASSIGNED = 0,

  68. CS_TEAM_T = 1,

  69. CS_TEAM_CT = 2,

  70. CS_TEAM_SPECTATOR = 3

  71. };

  72.  

  73. enum tripmine_e {

  74. TRIPMINE_IDLE1 = 0,

  75. TRIPMINE_IDLE2,

  76. TRIPMINE_ARM1,

  77. TRIPMINE_ARM2,

  78. TRIPMINE_FIDGET,

  79. TRIPMINE_HOLSTER,

  80. TRIPMINE_DRAW,

  81. TRIPMINE_WORLD,

  82. TRIPMINE_GROUND,

  83. };

  84.  

  85. enum

  86. {

  87. POWERUP_THINK,

  88. BEAMBREAK_THINK,

  89. EXPLOSE_THINK

  90. };

  91.  

  92. enum

  93. {

  94. POWERUP_SOUND,

  95. ACTIVATE_SOUND,

  96. STOP_SOUND

  97. };

  98.  

  99. new const

  100. ENT_MODELS[] = "models/zombie_plague/LaserMines/v_laser_mine.mdl",

  101. ENT_SOUND1[] = "weapons/mine_deploy.wav",

  102. ENT_SOUND2[] = "weapons/mine_charge.wav",

  103. ENT_SOUND3[] = "weapons/mine_activate.wav",

  104. ENT_SOUND4[] = "items/suitchargeok1.wav",

  105. ENT_SOUND5[] = "items/gunpickup2.wav",

  106. ENT_SOUND6[] = "debris/bustglass1.wav",

  107. ENT_SOUND7[] = "debris/bustglass2.wav",

  108. ENT_SPRITE1[] = "sprites/laserbeam.spr",

  109. ENT_SPRITE2[] = "sprites/lm_explode.spr";

  110.  

  111. new const

  112. ENT_CLASS_NAME[] = "lasermine",

  113. ENT_CLASS_NAME3[] = "func_breakable",

  114. gSnarkClassName[] = "wpn_snark", // ??? ????????????? ? ???????? "Snark"

  115. barnacle_class[] = "barnacle", // ??? ????????????? ? ???????? "Barnacle"

  116. weapon_box[] = "weaponbox";

  117.  

  118. new g_EntMine, beam, boom

  119. 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

  120. new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE

  121. new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;

  122. new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText;

  123. new g_dcount[33],g_nowtime,g_MaxPL

  124. new bool:g_settinglaser[33]

  125. new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33];

  126. //new CVAR_LMCost

  127.  

  128. public plugin_init()

  129. {

  130. register_plugin(PLUGIN, VERSION, AUTHOR);

  131.  

  132. // ???????????? ExtraItem

  133.  

  134. g_LME = zp_register_extra_item("Laser Mine", LMCost, ZP_TEAM_ANY)

  135.  

  136. // ???????? ??????? Laser_TakeDamage ??? ????????? ????? ???????? ENT_CLASS_NAME3 (func_breakable)

  137. RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage")

  138. // Add your code here...

  139. register_clcmd("+setlaser","CreateLaserMine_Progress_b");

  140. register_clcmd("-setlaser","StopCreateLaserMine");

  141. register_clcmd("+dellaser","ReturnLaserMine_Progress");

  142. register_clcmd("-dellaser","StopReturnLaserMine");

  143. register_clcmd("say","say_lasermine");

  144. register_clcmd("buy_lasermine","BuyLasermine");

  145.  

  146. g_LENABLE = register_cvar("zp_ltm","1")

  147. g_LACCESS = register_cvar("zp_ltm_acs","0") //0 all, 1 admin

  148. g_LMODE = register_cvar("zp_ltm_mode","0") //0 lasermine, 1 tripmine

  149. g_LAMMO = register_cvar("zp_ltm_ammo","3")

  150. g_LDMG = register_cvar("zp_ltm_dmg","1") //laser hit dmg

  151. g_LCOST = register_cvar("zp_ltm_cost","10")

  152. g_LFMONEY = register_cvar("zp_ltm_fragmoney","1")

  153. g_LHEALTH = register_cvar("zp_ltm_health","5")

  154. g_LTMAX = register_cvar("zp_ltm_teammax","100")

  155. g_LRADIUS = register_cvar("zp_ltm_radius","320.0")

  156. g_LRDMG = register_cvar("zp_ltm_rdmg","100") //radius damage

  157. g_LFF = register_cvar("zp_ltm_ff","0")

  158. g_LCBT = register_cvar("zp_ltm_cbt","ALL")

  159. g_LDELAY = register_cvar("zp_ltm_delay","0.1")

  160. g_LVISIBLE = register_cvar("zp_ltm_line","1")

  161. g_LGLOW = register_cvar("zp_ltm_glow","0")

  162. g_LCBRIGHT = register_cvar("zp_ltm_bright","255")//laser line brightness.

  163. g_LCLMODE = register_cvar("zp_ltm_color","0") //0 is team color,1 is green

  164. g_LDMGMODE = register_cvar("zp_ltm_ldmgmode","0") //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg

  165. g_LDSEC = register_cvar("zp_ltm_ldmgseconds","1") //mode 2 only, damage / seconds. default 1 (sec)

  166. g_LSTAMMO = register_cvar("zp_ltm_startammo","1")

  167. g_LBUYMODE = register_cvar("zp_ltm_buymode","1");

  168. g_LCMDMODE = register_cvar("zp_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.

  169. g_LBEO = register_cvar("zp_ltm_brokeenemy","1");

  170. g_NOROUND = register_cvar("zp_ltm_noround","1");

  171. g_NEMROUND = register_cvar("zp_ltm_nemround","1");

  172. g_SURVROUND = register_cvar("zp_ltm_survround","1");

  173.  

  174. register_event("DeathMsg", "DeathEvent", "a");

  175. register_event("CurWeapon", "standing", "be", "1=1");

  176. register_event("ResetHUD", "delaycount", "a");

  177. register_event("ResetHUD", "newround", "b");

  178. register_logevent("endround", 2, "0=World triggered", "1=Round_End"); // ???????????? ????? ??????

  179. register_event("Damage","CutDeploy_onDamage","b");

  180. g_msgDeathMsg = get_user_msgid("DeathMsg");

  181. g_msgScoreInfo = get_user_msgid("ScoreInfo");

  182. g_msgDamage = get_user_msgid("Damage");

  183. g_msgStatusText = get_user_msgid("StatusText");

  184.  

  185. // Forward.

  186. register_forward(FM_Think, "ltm_Think");

  187. register_forward(FM_PlayerPostThink, "ltm_PostThink");

  188. register_forward(FM_PlayerPreThink, "ltm_PreThink");

  189.  

  190. // ??????????? ???? ??????

  191. register_dictionary("LaserMines.txt")

  192. register_cvar("Shidla", "[ZP] LaserMines v.2.8.1 Final", FCVAR_SERVER|FCVAR_SPONLY)

  193. }

  194.  

  195. public plugin_precache()

  196. {

  197. precache_sound(ENT_SOUND1);

  198. precache_sound(ENT_SOUND2);

  199. precache_sound(ENT_SOUND3);

  200. precache_sound(ENT_SOUND4);

  201. precache_sound(ENT_SOUND5);

  202. precache_sound(ENT_SOUND6);

  203. precache_sound(ENT_SOUND7);

  204. precache_model(ENT_MODELS);

  205. beam = precache_model(ENT_SPRITE1);

  206. boom = precache_model(ENT_SPRITE2);

  207. return PLUGIN_CONTINUE;

  208. }

  209.  

  210. public plugin_modules()

  211. {

  212. require_module("fakemeta");

  213. require_module("cstrike");

  214. }

  215.  

  216. public plugin_cfg()

  217. {

  218. g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);

  219. arrayset(g_havemine,0,sizeof(g_havemine));

  220. arrayset(g_deployed,0,sizeof(g_deployed));

  221. g_MaxPL = get_maxplayers();

  222.  

  223. new file[64]; get_localinfo("amxx_configsdir",file,63);

  224. format(file, 63, "%s/zp_ltm_cvars_ap.cfg", file);

  225. if(file_exists(file)) server_cmd("exec %s", file), server_exec();

  226. }

  227.  

  228. public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage)

  229. {

  230. if(get_pcvar_num(g_LBEO))

  231. {

  232. new i_Owner

  233.  

  234. // ???????? ID ??????, ??????? ???????? ????

  235. i_Owner = pev(victim, LASERMINE_OWNER)

  236.  

  237. // ???? ??????? ????, ??? ???????? ???? ? ????, ??? ???????? ?????????

  238. if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker))

  239. // ???? ??? ??? ???????? ????, ?? ????????? ? ???, ??? ?? ????????, ?? ?????????? ??????????

  240. if(i_Owner != attacker)

  241. return HAM_SUPERCEDE

  242. return PLUGIN_CONTINUE

  243. }

  244. return PLUGIN_CONTINUE

  245. }

  246.  

  247. public delaycount(id)

  248. {

  249. g_dcount[id] = floatround(get_gametime());

  250. }

  251.  

  252. bool:CheckTime(id)

  253. {

  254. g_nowtime = floatround(get_gametime()) - g_dcount[id];

  255. if(g_nowtime >= get_pcvar_num(g_LDELAY))

  256. return true;

  257. return false;

  258. }

  259.  

  260. public CreateLaserMine_Progress_b(id)

  261. {

  262. if(get_pcvar_num(g_LCMDMODE) != 0)

  263. CreateLaserMine_Progress(id);

  264. return PLUGIN_HANDLED;

  265. }

  266.  

  267. public CreateLaserMine_Progress(id)

  268. {

  269.  

  270. if(!CreateCheck(id))

  271. return PLUGIN_HANDLED;

  272. g_settinglaser[id] = true;

  273.  

  274. message_begin(MSG_ONE, 108, {0,0,0}, id);

  275. write_byte(1);

  276. write_byte(0);

  277. message_end();

  278.  

  279. set_task(1.2, "Spawn", (TASK_PLANT + id));

  280.  

  281. return PLUGIN_HANDLED;

  282. }

  283.  

  284. public ReturnLaserMine_Progress(id)

  285. {

  286.  

  287. if(!ReturnCheck(id))

  288. return PLUGIN_HANDLED;

  289. g_settinglaser[id] = true;

  290.  

  291. message_begin(MSG_ONE, 108, {0,0,0}, id);

  292. write_byte(1);

  293. write_byte(0);

  294. message_end();

  295.  

  296. set_task(1.2, "ReturnMine", (TASK_RELEASE + id));

  297.  

  298. return PLUGIN_HANDLED;

  299. }

  300.  

  301. public StopCreateLaserMine(id)

  302. {

  303.  

  304. DeleteTask(id);

  305. message_begin(MSG_ONE, 108, {0,0,0}, id);

  306. write_byte(0);

  307. write_byte(0);

  308. message_end();

  309.  

  310. return PLUGIN_HANDLED;

  311. }

  312.  

  313. public StopReturnLaserMine(id)

  314. {

  315.  

  316. DeleteTask(id);

  317. message_begin(MSG_ONE, 108, {0,0,0}, id);

  318. write_byte(0);

  319. write_byte(0);

  320. message_end();

  321.  

  322. return PLUGIN_HANDLED;

  323. }

  324.  

  325. public ReturnMine(id)

  326. {

  327. id -= TASK_RELEASE;

  328. new tgt,body,Float:vo[3],Float:to[3];

  329. get_user_aiming(id,tgt,body);

  330. if(!pev_valid(tgt)) return;

  331. pev(id,pev_origin,vo);

  332. pev(tgt,pev_origin,to);

  333. if(get_distance_f(vo,to) > 70.0) return;

  334. new EntityName[32];

  335. pev(tgt, pev_classname, EntityName, 31);

  336. if(!equal(EntityName, ENT_CLASS_NAME)) return;

  337. if(pev(tgt,LASERMINE_OWNER) != id) return;

  338. RemoveEntity(tgt);

  339.  

  340. g_havemine[id] ++;

  341. g_deployed[id] --;

  342. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  343. ShowAmmo(id)

  344.  

  345. return;

  346. }

  347.  

  348. public Spawn(id)

  349. {

  350. id -= TASK_PLANT

  351. // motor

  352. new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);

  353. if(!i_Ent)

  354. {

  355. client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity");

  356. return PLUGIN_HANDLED_MAIN;

  357. }

  358. set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);

  359.  

  360. engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);

  361.  

  362. set_pev(i_Ent,pev_solid,SOLID_NOT);

  363. set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);

  364.  

  365. set_pev(i_Ent,pev_frame,0);

  366. set_pev(i_Ent,pev_body,3);

  367. set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);

  368. set_pev(i_Ent,pev_framerate,0);

  369. set_pev(i_Ent,pev_takedamage,DAMAGE_YES);

  370. set_pev(i_Ent,pev_dmg,100.0);

  371. set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));

  372. new Float:vOrigin[3];

  373. new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],

  374. Float:vTraceEnd[3],Float:vEntAngles[3];

  375. pev(id, pev_origin, vOrigin);

  376. velocity_by_aim(id, 128, vTraceDirection);

  377. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);

  378. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);

  379. new Float:fFraction;

  380. get_tr2(0, TR_flFraction, fFraction);

  381.  

  382. // -- We hit something!

  383. if(fFraction < 1.0)

  384. {

  385. // -- Save results to be used later.

  386. get_tr2(0, TR_vecEndPos, vTraceEnd);

  387. get_tr2(0, TR_vecPlaneNormal, vNormal);

  388. }

  389.  

  390.  

  391. xs_vec_mul_scalar(vNormal, 8.0, vNormal);

  392. xs_vec_add(vTraceEnd, vNormal, vNewOrigin);

  393.  

  394. engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 });

  395. engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin);

  396.  

  397. // -- Rotate tripmine.

  398. vector_to_angle(vNormal,vEntAngles);

  399. set_pev(i_Ent,pev_angles,vEntAngles);

  400.  

  401. // -- Calculate laser end origin.

  402. new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];

  403.  

  404. xs_vec_mul_scalar(vNormal, 8192.0, vNormal);

  405. xs_vec_add(vNewOrigin, vNormal, vBeamEnd);

  406.  

  407. engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0);

  408.  

  409. get_tr2(0, TR_vecPlaneNormal, vNormal);

  410. get_tr2(0, TR_vecEndPos, vTracedBeamEnd);

  411.  

  412. // -- Save results to be used later.

  413. set_pev(i_Ent, LASERMINE_OWNER, id);

  414. set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);

  415. set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));

  416. new Float:fCurrTime = get_gametime();

  417.  

  418. set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5);

  419. set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);

  420. set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2);

  421.  

  422. PlaySound(i_Ent,POWERUP_SOUND);

  423. g_deployed[id]++;

  424. g_havemine[id]--;

  425. DeleteTask(id);

  426. ShowAmmo(id);

  427. return 1;

  428. }

  429.  

  430. stock TeamDeployedCount(id)

  431. {

  432. static i;

  433. static CsTeams:t;t = cs_get_user_team(id);

  434. static cnt;cnt=0;

  435.  

  436. for(i = 1;i <= g_MaxPL;i++)

  437. {

  438. if(is_user_connected(i))

  439. if(t == cs_get_user_team(i))

  440. cnt += g_deployed[i];

  441. }

  442.  

  443. return cnt;

  444. }

  445.  

  446. bool:CheckCanTeam(id)

  447. {

  448. new arg[5],CsTeam:num;

  449. get_pcvar_string(g_LCBT,arg,3);

  450. if(equali(arg,"Z"))

  451. {

  452. num = CsTeam:CS_TEAM_T;

  453. }

  454. else if(equali(arg,"H"))

  455. {

  456. num = CsTeam:CS_TEAM_CT;

  457. }

  458. else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH"))

  459. {

  460. num = CsTeam:CS_TEAM_UNASSIGNED;

  461. }

  462. else

  463. {

  464. num = CsTeam:CS_TEAM_UNASSIGNED;

  465. }

  466. if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id))

  467. return false;

  468. return true;

  469. }

  470.  

  471. bool:CanCheck(id,mode) // ????????: ????? ????? ??????? ????

  472. {

  473. if(!get_pcvar_num(g_LENABLE))

  474. {

  475. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE")

  476.  

  477. return false;

  478. }

  479. if(get_pcvar_num(g_LACCESS) != 0)

  480. if(!(get_user_flags(id) & ADMIN_IMMUNITY))

  481. {

  482. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS")

  483. return false;

  484. }

  485. if(!pev_user_alive(id)) return false;

  486. if(!CheckCanTeam(id))

  487. {

  488. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT")

  489. return false;

  490. }

  491. if(mode == 0)

  492. {

  493. if(g_havemine[id] <= 0)

  494. {

  495. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE")

  496. return false;

  497. }

  498. }

  499. if(mode == 1)

  500. {

  501. if(get_pcvar_num(g_LBUYMODE) == 0)

  502. {

  503. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY")

  504. return false;

  505. }

  506. if(g_havemine[id] >= get_pcvar_num(g_LAMMO))

  507. {

  508. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX")

  509. return false;

  510. }

  511. if(zp_get_user_ammo_packs(id) < get_pcvar_num(g_LCOST))

  512. {

  513. client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED")

  514. return false;

  515. }

  516. }

  517. if(!CheckTime(id))

  518. {

  519. client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS")

  520. return false;

  521. }

  522.  

  523. return true;

  524. }

  525.  

  526. bool:ReturnCheck(id)

  527. {

  528. if(!CanCheck(id,-1)) return false;

  529. if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;

  530. new tgt,body,Float:vo[3],Float:to[3];

  531. get_user_aiming(id,tgt,body);

  532. if(!pev_valid(tgt)) return false;

  533. pev(id,pev_origin,vo);

  534. pev(tgt,pev_origin,to);

  535. if(get_distance_f(vo,to) > 70.0) return false;

  536. new EntityName[32];

  537. pev(tgt, pev_classname, EntityName, 31);

  538. if(!equal(EntityName, ENT_CLASS_NAME)) return false;

  539. if(pev(tgt,LASERMINE_OWNER) != id) return false;

  540. return true;

  541. }

  542.  

  543. bool:CreateCheck(id)

  544. {

  545. if(!CanCheck(id,0)) return false;

  546.  

  547. // ???????? ?? ??????????

  548. if(!zp_has_round_started() && get_pcvar_num(g_NOROUND))

  549. {

  550. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND")

  551. return false;

  552. }

  553.  

  554. if(zp_is_nemesis_round() && get_pcvar_num(g_NEMROUND))

  555. {

  556. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NEMROUND")

  557. return false;

  558. }

  559.  

  560. if(zp_is_swarm_round())

  561. {

  562. client_print(id, print_chat, "[ZP][LM] Raj modban nem lehet lezert rakni!")

  563. return false;

  564. }

  565.  

  566. if(zp_is_survivor_round() && get_pcvar_num(g_SURVROUND))

  567. {

  568. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SURVROUND")

  569. return false;

  570. }

  571.  

  572. if(g_deployed[id] >= get_pcvar_num(g_LAMMO))

  573. {

  574. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY")

  575. return false;

  576. }

  577.  

  578. if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))

  579. {

  580. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL")

  581. return false;

  582. }

  583. new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];

  584. pev(id, pev_origin, vOrigin);

  585. velocity_by_aim(id, 128, vTraceDirection);

  586. xs_vec_add(vTraceDirection, vOrigin, vTraceEnd);

  587. engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0);

  588. new Float:fFraction,Float:vTraceNormal[3];

  589. get_tr2(0, TR_flFraction, fFraction);

  590. // -- We hit something!

  591. if(fFraction < 1.0)

  592. {

  593. // -- Save results to be used later.

  594. get_tr2(0, TR_vecEndPos, vTraceEnd);

  595. get_tr2(0, TR_vecPlaneNormal, vTraceNormal);

  596.  

  597. return true;

  598. }

  599.  

  600. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL")

  601. DeleteTask(id);

  602. // -- Did not touched something. (not solid)

  603. return false;

  604. }

  605.  

  606. public ltm_Think(i_Ent)

  607. {

  608. if(!pev_valid(i_Ent))

  609. return FMRES_IGNORED;

  610. new EntityName[32];

  611. pev(i_Ent, pev_classname, EntityName, 31);

  612. if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;

  613. // -- Entity is not a tripmine, ignoring the next...

  614. if(!equal(EntityName, ENT_CLASS_NAME))

  615. return FMRES_IGNORED;

  616.  

  617. static Float:fCurrTime;

  618. fCurrTime = get_gametime();

  619.  

  620. switch(pev(i_Ent, LASERMINE_STEP))

  621. {

  622. case POWERUP_THINK :

  623. {

  624. new Float:fPowerupTime;

  625. pev(i_Ent, LASERMINE_POWERUP, fPowerupTime);

  626.  

  627. if(fCurrTime > fPowerupTime)

  628. {

  629. set_pev(i_Ent, pev_solid, SOLID_BBOX);

  630. set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK);

  631.  

  632. PlaySound(i_Ent, ACTIVATE_SOUND);

  633. }

  634. if(get_pcvar_num(g_LGLOW)!=0)

  635. {

  636. if(get_pcvar_num(g_LCLMODE)==0)

  637. {

  638. switch (pev(i_Ent,LASERMINE_TEAM))

  639. {

  640. // ???? ?????? ?????

  641. case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5);

  642. // ???? ?????? ????????

  643. case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5);

  644. }

  645. }else

  646. {

  647. // ???? ??????, ???? ????? "?????????? ??? ????" ????

  648. set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5);

  649. }

  650. }

  651. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1);

  652. }

  653. case BEAMBREAK_THINK :

  654. {

  655. static Float:vEnd[3],Float:vOrigin[3];

  656. pev(i_Ent, pev_origin, vOrigin);

  657. pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd);

  658.  

  659. static iHit, Float:fFraction;

  660. engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0);

  661.  

  662. get_tr2(0, TR_flFraction, fFraction);

  663. iHit = get_tr2(0, TR_pHit);

  664.  

  665. // -- Something has passed the laser.

  666. if(fFraction < 1.0)

  667. {

  668. // -- Ignoring others tripmines entity.

  669. if(pev_valid(iHit))

  670. {

  671. pev(iHit, pev_classname, EntityName, 31);

  672. // ??????? ?????? ?????

  673. if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box))

  674. {

  675. set_pev(i_Ent, pev_enemy, iHit);

  676.  

  677. if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)

  678. CreateLaserDamage(i_Ent,iHit);

  679. else

  680. if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))

  681. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

  682.  

  683. if (!pev_valid(i_Ent)) // ???? ?? ?????? ?????? - ?????? ?? ??????. ??????? DJ_WEST

  684. return FMRES_IGNORED;

  685.  

  686. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));

  687. }

  688. }

  689. }

  690. if(get_pcvar_num(g_LDMGMODE)!=0)

  691. if(pev(i_Ent,LASERMINE_HITING) != iHit)

  692. set_pev(i_Ent,LASERMINE_HITING,iHit);

  693.  

  694. // -- Tripmine is still there.

  695. if(pev_valid(i_Ent))

  696. {

  697. static Float:fHealth;

  698. pev(i_Ent, pev_health, fHealth);

  699.  

  700. if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))

  701. {

  702. set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

  703. set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3));

  704. }

  705.  

  706. static Float:fBeamthink;

  707. pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink);

  708.  

  709. if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE))

  710. {

  711. DrawLaser(i_Ent, vOrigin, vEnd);

  712. set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1);

  713. }

  714. set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01);

  715. }

  716. }

  717. case EXPLOSE_THINK :

  718. {

  719. // -- Stopping entity to think

  720. set_pev(i_Ent, pev_nextthink, 0.0);

  721. PlaySound(i_Ent, STOP_SOUND);

  722. g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;

  723. CreateExplosion(i_Ent);

  724. CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))

  725. RemoveEntity (i_Ent);

  726. }

  727. }

  728.  

  729. return FMRES_IGNORED;

  730. }

  731.  

  732. PlaySound(i_Ent, i_SoundType)

  733. {

  734. switch (i_SoundType)

  735. {

  736. case POWERUP_SOUND :

  737. {

  738. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

  739. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM);

  740. }

  741. case ACTIVATE_SOUND :

  742. {

  743. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75);

  744. }

  745. case STOP_SOUND :

  746. {

  747. emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM);

  748. emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75);

  749. }

  750. }

  751. }

  752.  

  753. DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3])

  754. {

  755. new tcolor[3];

  756. new teamid = pev(i_Ent, LASERMINE_TEAM);

  757. if(get_pcvar_num(g_LCLMODE) == 0)

  758. {

  759. switch(teamid){

  760. case 1:{

  761. // ???? ???? ??? ?????

  762. tcolor[0] = Red_Zomb;

  763. tcolor[1] = Green_Zomb;

  764. tcolor[2] = Blue_Zomb;

  765. }

  766. case 2:{

  767. // ???? ???? ??? ????????

  768. tcolor[0] = Red_Hum;

  769. tcolor[1] = Green_Hum;

  770. tcolor[2] = Blue_Hum;

  771. }

  772. }

  773. }else

  774. {

  775. // ???? ???? ??? ???? ??? ?????? 1-? ??? ??? ????

  776. tcolor[0] = random_num(50 , 200);

  777. tcolor[1] = random_num(50 , 200);

  778. tcolor[2] = random_num(50 , 200);

  779. }

  780. message_begin(MSG_BROADCAST,SVC_TEMPENTITY);

  781. write_byte(TE_BEAMPOINTS);

  782. engfunc(EngFunc_WriteCoord,v_Origin[0]);

  783. engfunc(EngFunc_WriteCoord,v_Origin[1]);

  784. engfunc(EngFunc_WriteCoord,v_Origin[2]);

  785. engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random

  786. engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random

  787. engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random

  788. write_short(beam);

  789. write_byte(0);

  790. write_byte(0);

  791. write_byte(1); //Life

  792. write_byte(5); //Width

  793. write_byte(0); //wave

  794. write_byte(tcolor[0]); // r

  795. write_byte(tcolor[1]); // g

  796. write_byte(tcolor[2]); // b

  797. write_byte(get_pcvar_num(g_LCBRIGHT));

  798. write_byte(255);

  799. message_end();

  800. }

  801.  

  802. CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)

  803. {

  804. // Get given parameters

  805. new Float:vecSrc[3];

  806. pev(iCurrent, pev_origin, vecSrc);

  807.  

  808. new AtkID =pev(iCurrent,LASERMINE_OWNER);

  809. new TeamID=pev(iCurrent,LASERMINE_TEAM);

  810.  

  811. new ent = -1;

  812. new Float:tmpdmg = DmgMAX;

  813.  

  814. new Float:kickback = 0.0;

  815. // Needed for doing some nice calculations

  816. new Float:Tabsmin[3], Float:Tabsmax[3];

  817. new Float:vecSpot[3];

  818. new Float:Aabsmin[3], Float:Aabsmax[3];

  819. new Float:vecSee[3];

  820. new trRes;

  821. new Float:flFraction;

  822. new Float:vecEndPos[3];

  823. new Float:distance;

  824. new Float:origin[3], Float:vecPush[3];

  825. new Float:invlen;

  826. new Float:velocity[3];

  827. new iHitHP,iHitTeam;

  828. // Calculate falloff

  829. new Float:falloff;

  830. if(Radius > 0.0)

  831. {

  832. falloff = DmgMAX / Radius;

  833. } else {

  834. falloff = 1.0;

  835. }

  836. // Find monsters and players inside a specifiec radius

  837. while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0)

  838. {

  839. if(!pev_valid(ent)) continue;

  840. if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))

  841. {

  842. // Entity is not a player or monster, ignore it

  843. continue;

  844. }

  845. if(!pev_user_alive(ent)) continue;

  846. // Reset data

  847. kickback = 1.0;

  848. tmpdmg = DmgMAX;

  849. // The following calculations are provided by Orangutanz, THANKS!

  850. // We use absmin and absmax for the most accurate information

  851. pev(ent, pev_absmin, Tabsmin);

  852. pev(ent, pev_absmax, Tabsmax);

  853. xs_vec_add(Tabsmin,Tabsmax,Tabsmin);

  854. xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);

  855. pev(iCurrent, pev_absmin, Aabsmin);

  856. pev(iCurrent, pev_absmax, Aabsmax);

  857. xs_vec_add(Aabsmin,Aabsmax,Aabsmin);

  858. xs_vec_mul_scalar(Aabsmin,0.5,vecSee);

  859. engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes);

  860. get_tr2(trRes, TR_flFraction, flFraction);

  861. // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)

  862. if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent)

  863. {

  864. // Work out the distance between impact and entity

  865. get_tr2(trRes, TR_vecEndPos, vecEndPos);

  866. distance = get_distance_f(vecSrc, vecEndPos) * falloff;

  867. tmpdmg -= distance;

  868. if(tmpdmg < 0.0)

  869. tmpdmg = 0.0;

  870. // Kickback Effect

  871. if(kickback != 0.0)

  872. {

  873. xs_vec_sub(vecSpot,vecSee,origin);

  874. invlen = 1.0/get_distance_f(vecSpot, vecSee);

  875.  

  876. xs_vec_mul_scalar(origin,invlen,vecPush);

  877. pev(ent, pev_velocity, velocity)

  878. xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);

  879. xs_vec_mul_scalar(vecPush,kickback,vecPush);

  880. xs_vec_add(velocity,vecPush,velocity);

  881. if(tmpdmg < 60.0)

  882. {

  883. xs_vec_mul_scalar(velocity,12.0,velocity);

  884. } else {

  885. xs_vec_mul_scalar(velocity,4.0,velocity);

  886. }

  887. if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)

  888. {

  889. // There's some movement todo

  890. set_pev(ent, pev_velocity, velocity)

  891. }

  892. }

  893.  

  894. iHitHP = pev_user_health(ent) - floatround(tmpdmg)

  895. iHitTeam = int:cs_get_user_team(ent)

  896. if(iHitHP <= 0)

  897. {

  898. if(iHitTeam != TeamID)

  899. {

  900. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) + get_pcvar_num(g_LFMONEY))

  901. set_score(AtkID,ent,1,iHitHP)

  902. }else

  903. {

  904. if(get_pcvar_num(g_LFF))

  905. {

  906. zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) - get_pcvar_num(g_LFMONEY))

  907. set_score(AtkID,ent,-1,iHitHP)

  908. }

  909. }

  910. }else

  911. {

  912. if(iHitTeam != TeamID || get_pcvar_num(g_LFF))

  913. {

  914. //set_pev(Player,pev_health,iHitHP)

  915. set_user_health(ent, iHitHP)

  916. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);

  917. write_byte(floatround(tmpdmg))

  918. write_byte(floatround(tmpdmg))

  919. write_long(DMG_BULLET)

  920. engfunc(EngFunc_WriteCoord,vecSrc[0])

  921. engfunc(EngFunc_WriteCoord,vecSrc[1])

  922. engfunc(EngFunc_WriteCoord,vecSrc[2])

  923. message_end()

  924. }

  925. }

  926. }

  927. }

  928. return

  929. }

  930.  

  931. bool:pev_user_alive(ent)

  932. {

  933. new deadflag = pev(ent,pev_deadflag);

  934. if(deadflag != DEAD_NO)

  935. return false;

  936. return true;

  937. }

  938.  

  939. CreateExplosion(iCurrent)

  940. {

  941. new Float:vOrigin[3];

  942. pev(iCurrent,pev_origin,vOrigin);

  943.  

  944. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);

  945. write_byte(99); //99 = KillBeam

  946. write_short(iCurrent);

  947. message_end();

  948.  

  949. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0);

  950. write_byte(TE_EXPLOSION);

  951. engfunc(EngFunc_WriteCoord,vOrigin[0]);

  952. engfunc(EngFunc_WriteCoord,vOrigin[1]);

  953. engfunc(EngFunc_WriteCoord,vOrigin[2]);

  954. write_short(boom);

  955. write_byte(30);

  956. write_byte(15);

  957. write_byte(0);

  958. message_end();

  959. }

  960.  

  961. CreateLaserDamage(iCurrent,isHit)

  962. {

  963. if(isHit < 0) return PLUGIN_CONTINUE

  964. switch(get_pcvar_num(g_LDMGMODE))

  965. {

  966. case 1:

  967. {

  968. if(pev(iCurrent,LASERMINE_HITING) == isHit)

  969. return PLUGIN_CONTINUE

  970. }

  971. case 2:

  972. {

  973. if(pev(iCurrent,LASERMINE_HITING) == isHit)

  974. {

  975. static Float:cnt

  976. static now,htime;now = floatround(get_gametime())

  977.  

  978. pev(iCurrent,LASERMINE_COUNT,cnt)

  979. htime = floatround(cnt)

  980. if(now - htime < get_pcvar_num(g_LDSEC))

  981. {

  982. return PLUGIN_CONTINUE;

  983. }else{

  984. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())

  985. }

  986. }else

  987. {

  988. set_pev(iCurrent,LASERMINE_COUNT,get_gametime())

  989. }

  990. }

  991. }

  992.  

  993. new Float:vOrigin[3],Float:vEnd[3]

  994. pev(iCurrent,pev_origin,vOrigin)

  995. pev(iCurrent,pev_vuser1,vEnd)

  996.  

  997. new teamid = pev(iCurrent, LASERMINE_TEAM)

  998.  

  999. new szClassName[32]

  1000. new Alive,God

  1001. new iHitTeam,iHitHP,id

  1002. new hitscore

  1003.  

  1004. szClassName[0] = '^0'

  1005. pev(isHit,pev_classname,szClassName,32)

  1006. if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))

  1007. {

  1008. Alive = pev_user_alive(isHit)

  1009. God = get_user_godmode(isHit)

  1010. if(!Alive || God) return PLUGIN_CONTINUE

  1011. iHitTeam = int:cs_get_user_team(isHit)

  1012. iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)

  1013. id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]

  1014. if(iHitHP <= 0)

  1015. {

  1016. if(iHitTeam != teamid)

  1017. {

  1018. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)

  1019. hitscore = 1

  1020. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY))

  1021. set_score(id,isHit,hitscore,iHitHP)

  1022. }else

  1023. {

  1024. if(get_pcvar_num(g_LFF))

  1025. {

  1026. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)

  1027. hitscore = -1

  1028. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY))

  1029. set_score(id,isHit,hitscore,iHitHP)

  1030. }

  1031. }

  1032. }else if(iHitTeam != teamid || get_pcvar_num(g_LFF))

  1033. {

  1034. emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM)

  1035. set_user_health(isHit,iHitHP)

  1036. set_pev(iCurrent,LASERMINE_HITING,isHit);

  1037. engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);

  1038. write_byte(get_pcvar_num(g_LDMG))

  1039. write_byte(get_pcvar_num(g_LDMG))

  1040. write_long(DMG_BULLET)

  1041. engfunc(EngFunc_WriteCoord,vOrigin[0])

  1042. engfunc(EngFunc_WriteCoord,vOrigin[1])

  1043. engfunc(EngFunc_WriteCoord,vOrigin[2])

  1044. message_end()

  1045. }

  1046. }else if(equal(szClassName, ENT_CLASS_NAME3))

  1047. {

  1048. new hl;

  1049. hl = pev_user_health(isHit);

  1050. set_user_health(isHit,hl-get_pcvar_num(g_LDMG));

  1051. }

  1052. return PLUGIN_CONTINUE

  1053. }

  1054.  

  1055. stock pev_user_health(id)

  1056. {

  1057. new Float:health

  1058. pev(id,pev_health,health)

  1059. return floatround(health)

  1060. }

  1061.  

  1062. stock set_user_health(id,health)

  1063. {

  1064. health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);

  1065. }

  1066.  

  1067. stock get_user_godmode(index) {

  1068. new Float:val

  1069. pev(index, pev_takedamage, val)

  1070.  

  1071. return (val == DAMAGE_NO)

  1072. }

  1073.  

  1074. stock set_user_frags(index, frags)

  1075. {

  1076. set_pev(index, pev_frags, float(frags))

  1077.  

  1078. return 1

  1079. }

  1080.  

  1081. stock pev_user_frags(index)

  1082. {

  1083. new Float:frags;

  1084. pev(index,pev_frags,frags);

  1085. return floatround(frags);

  1086. }

  1087.  

  1088. set_score(id,target,hitscore,HP){

  1089.  

  1090. new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore

  1091. set_user_frags(id,idfrags)

  1092. new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1

  1093. set_user_frags(target,tarfrags)

  1094. new idteam = int:cs_get_user_team(id)

  1095. new iddeaths = cs_get_user_deaths(id)

  1096.  

  1097.  

  1098. message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0)

  1099. write_byte(id)

  1100. write_byte(target)

  1101. write_byte(0)

  1102. write_string(ENT_CLASS_NAME)

  1103. message_end()

  1104.  

  1105. message_begin(MSG_ALL, g_msgScoreInfo)

  1106. write_byte(id)

  1107. write_short(idfrags)

  1108. write_short(iddeaths)

  1109. write_short(0)

  1110. write_short(idteam)

  1111. message_end()

  1112.  

  1113. set_msg_block(g_msgDeathMsg, BLOCK_ONCE)

  1114.  

  1115. set_user_health(target, HP)

  1116.  

  1117. }

  1118.  

  1119. public BuyLasermine(id)

  1120. {

  1121. if(!CanCheck(id,1)) return PLUGIN_CONTINUE

  1122.  

  1123. zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LCOST))

  1124. g_havemine[id]++;

  1125.  

  1126. client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT")

  1127.  

  1128. emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  1129. ShowAmmo(id)

  1130. return PLUGIN_HANDLED

  1131. }

  1132.  

  1133. public zp_extra_item_selected(id, itemid)

  1134. {

  1135. if(itemid == g_LME)

  1136. {

  1137. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + LMCost)

  1138. BuyLasermine(id)

  1139. }

  1140. return PLUGIN_CONTINUE

  1141. }

  1142.  

  1143. ShowAmmo(id)

  1144. {

  1145. new ammo[51]

  1146. new PlugStat[ 555 char ];

  1147. formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE")

  1148. formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO))

  1149.  

  1150. message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)

  1151. write_byte(0)

  1152. write_string(ammo)

  1153. message_end()

  1154. }

  1155.  

  1156. public showInfo(id)

  1157. {

  1158. client_print(id, print_chat, "%L", id, "STR_REF")

  1159. }

  1160.  

  1161. public say_lasermine(id){

  1162. new said[32]

  1163. read_argv(1,said,31);

  1164. if(!get_pcvar_num(g_LENABLE))

  1165. {

  1166. return PLUGIN_CONTINUE

  1167. }

  1168. if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")){

  1169. BuyLasermine(id)

  1170. }else if(equali(said, "lasermine") || equali(said, "/lasermine")){

  1171. const SIZE = 1024

  1172. new msg[SIZE+1],len = 0;

  1173. len += formatex(msg[len], SIZE - len, "<html><body>")

  1174. len += formatex(msg[len], SIZE - len, "<p><b>Lezer</b></p><br/><br/>")

  1175. len += formatex(msg[len], SIZE - len, "<p>Lezert levegobe nem rakhatod.</p><br/>")

  1176. len += formatex(msg[len], SIZE - len, "<p>Ha valaki belemgya a lezeredbe azonnal meghal.</p><br/><br/>")

  1177. len += formatex(msg[len], SIZE - len, "<p><b>Lezer parancsok</b></p><br/><br/>")

  1178. len += formatex(msg[len], SIZE - len, "<p><b>Say /buy lasermine</b> vagy <b>Say /lm</b> //lezer vasarlas<br/>")

  1179. len += formatex(msg[len], SIZE - len, "<b>buy_lasermine</b> //bind ^"F2^" buy_lasermine : f2 vel vehetsz lezert<br/>")

  1180. len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</b> lezer lerakas <b>bind c +dellaser</b> lezer felveves.<br/>")

  1181. len += formatex(msg[len], SIZE - len, "</body></html>")

  1182. show_motd(id, msg, "Lasermine Entity help")

  1183. return PLUGIN_CONTINUE

  1184. }

  1185. else if(containi(said, "laser") != -1) {

  1186. showInfo(id)

  1187. return PLUGIN_CONTINUE

  1188. }

  1189. return PLUGIN_CONTINUE

  1190. }

  1191.  

  1192. public standing(id)

  1193. {

  1194. if(!g_settinglaser[id])

  1195. return PLUGIN_CONTINUE

  1196.  

  1197. set_pev(id, pev_maxspeed, 1.0)

  1198.  

  1199. return PLUGIN_CONTINUE

  1200. }

  1201.  

  1202. public ltm_PostThink(id)

  1203. {

  1204. if(!g_settinglaser[id] && plsetting[id]){

  1205. resetspeed(id)

  1206. }

  1207. else if(g_settinglaser[id] && !plsetting[id]) {

  1208. pev(id, pev_maxspeed,plspeed[id])

  1209. set_pev(id, pev_maxspeed, 1.0)

  1210. }

  1211. plsetting[id] = g_settinglaser[id]

  1212. return FMRES_IGNORED

  1213. }

  1214.  

  1215. public ltm_PreThink(id)

  1216. {

  1217. if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1)

  1218. return FMRES_IGNORED;

  1219.  

  1220. if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE))

  1221. CreateLaserMine_Progress(id)

  1222. return FMRES_IGNORED;

  1223. }

  1224.  

  1225. resetspeed(id)

  1226. {

  1227. set_pev(id, pev_maxspeed, plspeed[id])

  1228. }

  1229.  

  1230. public client_putinserver(id){

  1231. g_deployed[id] = 0;

  1232. g_havemine[id] = 0;

  1233. DeleteTask(id);

  1234. return PLUGIN_CONTINUE

  1235. }

  1236.  

  1237. public client_disconnect(id){

  1238. if(!get_pcvar_num(g_LENABLE))

  1239. return PLUGIN_CONTINUE

  1240. DeleteTask(id);

  1241. RemoveAllTripmines(id);

  1242. return PLUGIN_CONTINUE

  1243. }

  1244.  

  1245.  

  1246. public newround(id){

  1247. if(!get_pcvar_num(g_LENABLE))

  1248. return PLUGIN_CONTINUE

  1249. pev(id, pev_maxspeed,plspeed[id])

  1250. DeleteTask(id);

  1251. RemoveAllTripmines(id);

  1252. //client_print(id, print_chat, "[ZP][LM][DeBug] All Mines removied!");

  1253. delaycount(id);

  1254. SetStartAmmo(id);

  1255. return PLUGIN_CONTINUE

  1256. }

  1257.  

  1258. public endround(id)

  1259. {

  1260. if(!get_pcvar_num(g_LENABLE))

  1261. return PLUGIN_CONTINUE

  1262.  

  1263. // ???????? ??? ????? ????? ??????

  1264. DeleteTask(id);

  1265. RemoveAllTripmines(id);

  1266.  

  1267. return PLUGIN_CONTINUE

  1268. }

  1269.  

  1270. public DeathEvent(){

  1271. if(!get_pcvar_num(g_LENABLE))

  1272. return PLUGIN_CONTINUE

  1273.  

  1274. new id = read_data(2)

  1275. if(is_user_connected(id)) DeleteTask(id);

  1276. return PLUGIN_CONTINUE

  1277. }

  1278.  

  1279. public RemoveAllTripmines(i_Owner)

  1280. {

  1281. new iEnt = g_MaxPL + 1;

  1282. new clsname[32];

  1283. while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME)))

  1284. {

  1285. if(i_Owner)

  1286. {

  1287. if(pev(iEnt, LASERMINE_OWNER) != i_Owner)

  1288. continue;

  1289. clsname[0] = '^0'

  1290. pev(iEnt, pev_classname, clsname, sizeof(clsname)-1);

  1291. if(equali(clsname, ENT_CLASS_NAME))

  1292. {

  1293. PlaySound(iEnt, STOP_SOUND);

  1294. RemoveEntity(iEnt);

  1295. }

  1296. }

  1297. else

  1298. set_pev(iEnt, pev_flags, FL_KILLME);

  1299. }

  1300. g_deployed[i_Owner]=0;

  1301. }

  1302.  

  1303. SetStartAmmo(id)

  1304. {

  1305. new stammo = get_pcvar_num(g_LSTAMMO);

  1306. if(stammo <= 0) return PLUGIN_CONTINUE;

  1307. g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id];

  1308. return PLUGIN_CONTINUE;

  1309. }

  1310.  

  1311. public CutDeploy_onDamage(id)

  1312. {

  1313. if(get_user_health(id) < 1)

  1314. DeleteTask(id);

  1315. }

  1316.  

  1317. DeleteTask(id)

  1318. {

  1319. if(task_exists((TASK_PLANT + id)))

  1320. {

  1321. remove_task((TASK_PLANT + id))

  1322. }

  1323. if(task_exists((TASK_RELEASE + id)))

  1324. {

  1325. remove_task((TASK_RELEASE + id))

  1326. }

  1327. g_settinglaser[id] = false

  1328. return PLUGIN_CONTINUE;

  1329. }

  1330.  

  1331. stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)

  1332. {

  1333. static Float:RenderColor[3];

  1334. RenderColor[0] = float(r);

  1335. RenderColor[1] = float(g);

  1336. RenderColor[2] = float(b);

  1337.  

  1338. set_pev(entity, pev_renderfx, fx);

  1339. set_pev(entity, pev_rendercolor, RenderColor);

  1340. set_pev(entity, pev_rendermode, render);

  1341. set_pev(entity, pev_renderamt, float(amount));

  1342.  

  1343. return 1

  1344. }

  1345.  

  1346. // Gets offset data

  1347. get_offset_value(id, type)

  1348. {

  1349. new key = -1;

  1350. switch(type)

  1351. {

  1352. case OFFSET_TEAM: key = OFFSET_TEAM;

  1353. case OFFSET_MONEY:

  1354. key = OFFSET_MONEY;

  1355. case OFFSET_DEATH: key = OFFSET_DEATH;

  1356. }

  1357. if(key != -1)

  1358. {

  1359. if(is_amd64_server()) key += 25;

  1360. return get_pdata_int(id, key);

  1361. }

  1362. return -1;

  1363. }


Köszi előre is, és remélem nem lesz törölve;)

_________________
[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]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombie Plague Lézer
HozzászólásElküldve:2012.06.11. 14:21 
Offline
Imperátor
Avatar

Csatlakozott:2009.04.21. 09:33
Hozzászólások:3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Csak az offokat törlöm. (Ebben is van, de még hagyom)
Igen Alienen pont úgy működött. Azután módosítottam a dolgot: Csak Alien tudta sebezni a tornyodat. (Igen, ki is írta)
Amit ő kér, az más: Ránézel, s írja ki, kié a lézer. Ilyen is volt később Alienen, de hamarosan meg lehet majd tekinteni, mivel felnyomom szeróra a mókát. [reklám vége]

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombie Plague Lézer
HozzászólásElküldve:2012.06.14. 22:53 
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
Na várom azt a bátor embert aki megcsinálja nekem . :oops:

_________________
[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]


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


Ki van itt

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