hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 01:54



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: 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  [ 22 hozzászólás ]  Oldal 1 2 3 Következő
Szerző Üzenet
 Hozzászólás témája: sma javítást.. invaild declaration?
HozzászólásElküldve: 2013.08.05. 00:20 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.06.11. 13:32
Hozzászólások: 254
Megköszönt másnak: 31 alkalommal
Megköszönték neki: 2 alkalommal
Sziasztok.
Adott egy alap sma. ha átalakítom semmi gond sikerül, ha AKÁRMIT változtatok akkor ezt írja:
error10 invaild function or decleration.. pedig csak egy o betűt rakok bele akkor is:) gondolom valahonnan lemaradt a } avagy az enter

valaki javítaná?
köszi

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


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 07:51 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Nálam lefut.

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

Header size:           2536 bytes
Code size:            41356 bytes
Data size:            11112 bytes
Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
Total requirements:   71388 bytes
Done.

_________________
http://www.easyrankup.eu

Ők köszönték meg kiki nek ezt a hozzászólást: ltscavo (2013.08.05. 12:23)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 07:54 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
nekemis lefut, nemlehet hogy rosszul másolod ki és lemarad róla valami?

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

Header size:           2536 bytes
Code size:            41364 bytes
Data size:            11112 bytes
Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
Total requirements:   71396 bytes
Done.

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet

Ők köszönték meg crazy` nek ezt a hozzászólást: ltscavo (2013.08.05. 12:23)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 09:47 
Úgyvan ki kell törölni a hozzászólásomat NEHOGY igazam legyen mert ez igaz tapasztaltam . nem hiszem hogy a gépén átláttok..


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 09:49 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
levi1992 írta:
Úgyvan ki kell törölni a hozzászólásomat NEHOGY igazam legyen mert ez igaz tapasztaltam . nem hiszem hogy a gépén átláttok..


Te. Azért mert letölti az amxmodxet, az exét, feltelepíti a gépére, attól az sma még jó. Illetve amit leírtál annak semmi értelme nem volt.

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 09:51 
kiki írta:
levi1992 írta:
Úgyvan ki kell törölni a hozzászólásomat NEHOGY igazam legyen mert ez igaz tapasztaltam . nem hiszem hogy a gépén átláttok..


Te. Azért mert letölti az amxmodxet, az exét, feltelepíti a gépére, attól az sma még jó. Illetve amit leírtál annak semmi értelme nem volt.

Csak ezzel annyi a baj volt már rá példám $fds baromságot beírt a include mellé.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 09:58 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
levi1992 írta:
kiki írta:
levi1992 írta:
Úgyvan ki kell törölni a hozzászólásomat NEHOGY igazam legyen mert ez igaz tapasztaltam . nem hiszem hogy a gépén átláttok..


Te. Azért mert letölti az amxmodxet, az exét, feltelepíti a gépére, attól az sma még jó. Illetve amit leírtál annak semmi értelme nem volt.

Csak ezzel annyi a baj volt már rá példám $fds baromságot beírt a include mellé.


De ez most miért tartozik a témához könyörgöm? Alap includet nem kell editelni, csak saját felelősségére, ha nem ért hozzá, és bele ír valamit, ő hibája. Az itt látható forráskódba nincs hiba, ezt a saját szemeddel is megnézheted például a http://www.amxxcomp.com oldalon.

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 10:01 
Legyen akkor igazad.


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 10:14 
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
kikinek igaza van.
Ez szociális... gondolom te se kapod szét a kocsidat, ha nem értesz hozzá.
Okos ember nem nyúl olyanhoz, amihez nem ért, max akkor, ha körültekintően körbejárta a témát. Magára vessen ha egy jó kód nem fordul le neki önhibája végett.


levi1992 írta:
kiki írta:
levi1992 írta:
Úgyvan ki kell törölni a hozzászólásomat NEHOGY igazam legyen mert ez igaz tapasztaltam . nem hiszem hogy a gépén átláttok..


Te. Azért mert letölti az amxmodxet, az exét, feltelepíti a gépére, attól az sma még jó. Illetve amit leírtál annak semmi értelme nem volt.

Csak ezzel annyi a baj volt már rá példám $fds baromságot beírt a include mellé.

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.08.05. 12:22 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.06.11. 13:32
Hozzászólások: 254
Megköszönt másnak: 31 alkalommal
Megköszönték neki: 2 alkalommal
nemtudom nekem nem akarja átalakítani elküldenétek a hozzá való .inc-eket? köszönöm


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  [ 22 hozzászólás ]  Oldal 1 2 3 Következő


Ki van itt

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