hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.24. 13:56



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Tűzhányó Zombi
HozzászólásElküldve: 2013.07.15. 19:22 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
Valaki javítaná ezt a plugint

L 07/15/2013 - 19:07:25: [AMXX] [0] zp_class_flame.sma::on_fire (line 450)
L 07/15/2013 - 19:11:26: Invalid message id
L 07/15/2013 - 19:11:26: [AMXX] Displaying debug trace (plugin "pluginz_plug_ZPFlame_zp_class_flame.amxx")
L 07/15/2013 - 19:11:26: [AMXX] Run time error 10: native error (native "set_msg_block")

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. /*================================================================================
  3.  
  4. -----------------------------------
  5. -*- [ZP] Zombie Flame -*-
  6. -----------------------------------
  7.  
  8. ~~~~~~~~~~~~~~~
  9. - Description -
  10. ~~~~~~~~~~~~~~~
  11.  
  12. Original by jtp10181, Upgraded to zp by LARP
  13. larp.source@gmail.com (Chile) Languaje spanish!
  14.  
  15. ================================================================================*/
  16.  
  17. #include <amxmodx>
  18. #include <amxmisc>
  19. #include <cstrike>
  20. #include <engine>
  21. #include <fakemeta>
  22. #include <fun>
  23. #include <zombieplague>
  24.  
  25.  
  26. new smoke
  27. new fire
  28. new burning
  29. new isburning[33]
  30. //new flame_count[33]
  31. new tkcount[33]
  32. new gmsgDeathMsg
  33. new gmsgScoreInfo
  34. new bool:flame[33]
  35.  
  36. // Zombi Atributes
  37. new const zclass_name[] = { "Tuzhanyo Zombi" } // name
  38. new const zclass_info[] = { "Health- Speed+ Gravity-" } // description
  39. new const zclass_model[] = { "zombie_source" } // model
  40. new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
  41. const zclass_health = 8000 // health
  42. const zclass_speed = 180 // speed
  43. const Float:zclass_gravity = 1.0 // gravity
  44. const Float:zclass_knockback = 1.0 // knockback
  45.  
  46. // Class IDs
  47. new g_zflame
  48.  
  49. // Zombie Classes MUST be registered on plugin_precache
  50. public plugin_precache()
  51. {
  52. fire = precache_model("sprites/explode1.spr")
  53. smoke = precache_model("sprites/steam1.spr")
  54. burning = precache_model("sprites/xfire.spr")
  55. precache_sound("ambience/burning1.wav")
  56. precache_sound("ambience/flameburst1.wav")
  57. precache_sound("scientist/c1a0_sci_catscream.wav")
  58. precache_sound("vox/_period.wav")
  59. precache_sound("player/headshot2.wav")
  60. // Register the new class and store ID for reference
  61. g_zflame = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
  62. }
  63.  
  64. public plugin_init()
  65. {
  66. register_plugin("[ZP] Zombie Flame", "1.2", "LARP")
  67. register_cvar("amx_flamethrower_tkpunish1", "0")
  68. register_cvar("amx_flamethrower_tkpunish2", "0")
  69. register_cvar("amx_fl_hp", "10")
  70. register_logevent("round_start", 2, "1=Round_Start")
  71. register_logevent("round_end", 2, "1=Round_End")
  72. register_forward(FM_PlayerPreThink,"FM_PreThink")
  73.  
  74. }
  75. // User Infected forward
  76. public zp_user_infected_post(id, infector)
  77. {
  78.  
  79. // Check if the infected player is using our custom zombie class
  80. if (zp_get_user_zombie_class(id) == g_zflame)
  81. {
  82. new cost = get_cvar_num("amx_fl_hp");
  83. fire_flamethrower(id);
  84. client_print(id,print_chat,"[ZP] Ahhoz hogy tuzet tudj hanyni nyomj E betut. Minden egyes langcsovanal %d Hp-t vesztesz.", cost)
  85. flame[id]=true
  86. }
  87.  
  88. }
  89.  
  90. /*public cmd_flamita(id)
  91. {
  92. if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
  93. if (zp_get_user_zombie_class(id) == g_zflame)
  94. {
  95. fire_flamethrower(id)
  96. }
  97. return PLUGIN_HANDLED
  98. }*/
  99.  
  100. fire_flamethrower(id){
  101.  
  102. emit_sound(id, CHAN_WEAPON, "ambience/flameburst1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  103. //client_cmd(id, "bind mouse3 lallamitaywea")
  104. new vec[3]
  105. new aimvec[3]
  106. new velocityvec[3]
  107. new length
  108. new speed = 10
  109. get_user_origin(id,vec)
  110. get_user_origin(id,aimvec,2)
  111. new dist = get_distance(vec,aimvec)
  112.  
  113. new speed1 = 160
  114. new speed2 = 350
  115. new radius = 105
  116.  
  117. if(dist < 50){
  118. radius = 0
  119. speed = 5
  120. }
  121. else if(dist < 150){
  122. speed1 = speed2 = 1
  123. speed = 5
  124. radius = 50
  125. }
  126. else if(dist < 200){
  127. speed1 = speed2 = 1
  128. speed = 5
  129. radius = 90
  130. }
  131. else if(dist < 250){
  132. speed1 = speed2 = 90
  133. speed = 6
  134. radius = 90
  135. }
  136. else if(dist < 300){
  137. speed1 = speed2 = 140
  138. speed = 7
  139. }
  140. else if(dist < 350){
  141. speed1 = speed2 = 190
  142. speed = 7
  143. }
  144. else if(dist < 400){
  145. speed1 = 150
  146. speed2 = 240
  147. speed = 8
  148. }
  149. else if(dist < 450){
  150. speed1 = 150
  151. speed2 = 290
  152. speed = 8
  153. }
  154. else if(dist < 500){
  155. speed1 = 180
  156. speed2 = 340
  157. speed = 9
  158. }
  159. else if(dist < 550){
  160. speed1 = 180
  161. speed2 = 340
  162. speed = 10
  163. }
  164. else if(dist < 600){
  165. speed1 = 250
  166. speed2 = 360
  167. speed = 11
  168. }
  169. else if(dist < 660){
  170. speed1 = 280
  171. speed2 = 390
  172. speed = 12
  173. }
  174. velocityvec[0]=aimvec[0]-vec[0]
  175. velocityvec[1]=aimvec[1]-vec[1]
  176. velocityvec[2]=aimvec[2]-vec[2]
  177. length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])
  178. velocityvec[0]=velocityvec[0]*speed/length
  179. velocityvec[1]=velocityvec[1]*speed/length
  180. velocityvec[2]=velocityvec[2]*speed/length
  181.  
  182. new args[8]
  183. args[0] = vec[0]
  184. args[1] = vec[1]
  185. args[2] = vec[2]
  186. args[3] = velocityvec[0]
  187. args[4] = velocityvec[1]
  188. args[5] = velocityvec[2]
  189. set_task(0.1,"te_spray",0,args,8,"a",2)
  190. check_burnzone(id,vec,aimvec,speed1,speed2,radius)
  191. //set_task(0.5,"client_bind",id)
  192.  
  193. return PLUGIN_CONTINUE
  194.  
  195. }
  196.  
  197. public te_spray(args[]){
  198.  
  199. //TE_SPRAY
  200. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  201. write_byte (120) // Throws a shower of sprites or models
  202. write_coord(args[0]) // start pos
  203. write_coord(args[1])
  204. write_coord(args[2])
  205. write_coord(args[3]) // velocity
  206. write_coord(args[4])
  207. write_coord(args[5])
  208. write_short (fire) // spr
  209. write_byte (8) // count
  210. write_byte (70) // speed
  211. write_byte (100) //(noise)
  212. write_byte (5) // (rendermode)
  213. message_end()
  214.  
  215. return PLUGIN_CONTINUE
  216. }
  217.  
  218.  
  219. public sqrt(num) {
  220. new div = num
  221. new result = 1
  222. while (div > result) { // end when div == result, or just below
  223. div = (div + result) / 2 // take mean value as new divisor
  224. result = num / div
  225. }
  226. return div
  227. }
  228.  
  229. check_burnzone(id,vec[],aimvec[],speed1,speed2,radius){
  230. new maxplayers = get_maxplayers()+1
  231. new tid, tbody
  232. get_user_aiming(id,tid,tbody,550)
  233. if((tid > 0) && (tid < maxplayers)){
  234. burn_victim(tid,id,0)
  235. /*if(cvar_exists("mp_friendlyfire")){
  236. new ffcvar = get_cvar_num("mp_friendlyfire")
  237. if( (ffcvar == 0) || ((ffcvar == 1) && (get_cvar_num("amx_flamethrower_obeyffcvar") == 0)) ){
  238. if(get_user_team(tid) != get_user_team(id))
  239. burn_victim(tid,id,1)
  240. }
  241. else {
  242. if(get_user_team(tid) == get_user_team(id))
  243. burn_victim(tid,id,1)
  244. else
  245. burn_victim(tid,id,1)
  246. }
  247. }else{
  248. burn_victim(tid,id,0)
  249. }*/
  250. }
  251.  
  252. new burnvec1[3],burnvec2[3],length1
  253.  
  254. burnvec1[0]=aimvec[0]-vec[0]
  255. burnvec1[1]=aimvec[1]-vec[1]
  256. burnvec1[2]=aimvec[2]-vec[2]
  257.  
  258. length1=sqrt(burnvec1[0]*burnvec1[0]+burnvec1[1]*burnvec1[1]+burnvec1[2]*burnvec1[2])
  259. burnvec2[0]=burnvec1[0]*speed2/length1
  260. burnvec2[1]=burnvec1[1]*speed2/length1
  261. burnvec2[2]=burnvec1[2]*speed2/length1
  262. burnvec1[0]=burnvec1[0]*speed1/length1
  263. burnvec1[1]=burnvec1[1]*speed1/length1
  264. burnvec1[2]=burnvec1[2]*speed1/length1
  265. burnvec1[0] += vec[0]
  266. burnvec1[1] += vec[1]
  267. burnvec1[2] += vec[2]
  268. burnvec2[0] += vec[0]
  269. burnvec2[1] += vec[1]
  270. burnvec2[2] += vec[2]
  271.  
  272. new origin[3]
  273. for (new i=1; i<=maxplayers; i++) {
  274. if(cvar_exists("mp_friendlyfire")){
  275. new ffcvar = get_cvar_num("mp_friendlyfire")
  276. if( (ffcvar == 0) || ((ffcvar == 1) && (get_cvar_num("amx_flamethrower_obeyffcvar") == 0)) ){
  277. if(get_user_team(i) != get_user_team(id)){
  278. if((is_user_alive(i) == 1) && (i != id)){
  279. get_user_origin(i,origin)
  280. if(get_distance(origin,burnvec1) < radius)
  281. burn_victim(i,id,1)
  282. else if(get_distance(origin,burnvec2) < radius)
  283. burn_victim(i,id,1)
  284. }
  285. }
  286.  
  287. }
  288. else {
  289. if((is_user_alive(i) == 1) && (i != id)){
  290. get_user_origin(i,origin)
  291. if(get_user_team(i) == get_user_team(id)){
  292. if(get_distance(origin,burnvec1) < radius)
  293. burn_victim(i,id,1)
  294. else if(get_distance(origin,burnvec2) < radius)
  295. burn_victim(i,id,1)
  296. }else{
  297. if(get_distance(origin,burnvec1) < radius)
  298. burn_victim(i,id,1)
  299. else if(get_distance(origin,burnvec2) < radius)
  300. burn_victim(i,id,1)
  301. }
  302. }
  303. }
  304. }
  305. else {
  306. if((is_user_alive(i) == 1) && (i != id)){
  307. get_user_origin(i,origin)
  308. if(get_distance(origin,burnvec1) < radius)
  309. burn_victim(i,id,1)
  310. else if(get_distance(origin,burnvec2) < radius)
  311. burn_victim(i,id,1)
  312.  
  313. }
  314. }
  315. }
  316. return PLUGIN_CONTINUE
  317. }
  318.  
  319. burn_victim(id,killer,tk){
  320. if(isburning[id] == 1)
  321. return PLUGIN_CONTINUE
  322.  
  323. isburning[id] = 1
  324.  
  325. emit_sound(id, CHAN_ITEM, "ambience/burning1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  326.  
  327. new hp,args[4]
  328. hp = get_user_health(id)
  329. if(hp > 250)
  330. hp = 250
  331. args[0] = id
  332. args[1] = killer
  333. args[2] = tk
  334. set_task(0.3,"on_fire",451,args,4,"a",hp / 10)
  335. set_task(0.7,"fire_scream",0,args,4)
  336. set_task(5.5,"stop_firesound",0,args,4)
  337.  
  338. if(tk == 1){
  339. new namea[32]
  340. get_user_name(killer,namea,31)
  341. new teama[32]
  342. get_user_team(killer,teama,31)
  343. new players[32],pNum
  344. get_players(players,pNum,"e",teama)
  345. for(new i=0;i<pNum;i++)
  346. //client_print(players[i],print_chat,"%s megtamadta a csapattarsat",namea)
  347. client_print(players[i],print_chat,"",namea)
  348. new punish1 = get_cvar_num("amx_flamethrower_tkpunish1")
  349. new punish2 = get_cvar_num("amx_flamethrower_tkpunish2")
  350. if(punish1 > 2){
  351. user_kill(killer,0)
  352. //set_hudmessage(255,50,50, -1.0, 0.45, 0, 0.02, 10.0, 1.01, 1.1, 16)
  353. //show_hudmessage(killer,"Meg haltal^nMert megtamadtad a csapattarsadat.^nHalott vagy!")
  354. server_cmd("echo Plugin By LARP^^!", tk)
  355. }
  356.  
  357. tkcount[killer] +=1
  358. if((punish1) && (tkcount[killer] > punish2 - 1)){
  359. if(punish1 == 1 || punish1 == 3)
  360. server_cmd("echo Plugin By LARP^^!")
  361. else if(punish1 == 2 || punish1 == 4){
  362. server_cmd("echo Plugin By LARP^^!")
  363. new authida[35]
  364. get_user_authid(killer,authida,34)
  365. if (equal("4294967295",authida)){
  366. new ipa[32]
  367. get_user_ip(killer,ipa,31,1)
  368. server_cmd("echo Plugin By LARP^^!")
  369. }else{
  370. server_cmd("echo Plugin By LARP^^!")
  371. }
  372. }
  373. }
  374. }
  375. return PLUGIN_CONTINUE
  376. }
  377.  
  378. public on_fire(args[]){
  379.  
  380. new hp,rx,ry,rz,forigin[3]
  381. new id = args[0]
  382. new killer = args[1]
  383. new tk = args[2]
  384.  
  385. if(isburning[id] == 0)
  386. return PLUGIN_CONTINUE
  387.  
  388. rx = random_num(-30,30)
  389. ry = random_num(-30,30)
  390. rz = random_num(-30,30)
  391. get_user_origin(id,forigin)
  392.  
  393. //TE_SPRITE - additive sprite, plays 1 cycle
  394. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  395. write_byte( 17 )
  396. write_coord(forigin[0]+rx) // coord, coord, coord (position)
  397. write_coord(forigin[1]+ry)
  398. write_coord(forigin[2]+10+rz)
  399. write_short( burning ) // short (sprite index)
  400. write_byte( 30 ) // byte (scale in 0.1's)
  401. write_byte( 200 ) // byte (brightness)
  402. message_end()
  403.  
  404. //Smoke
  405. message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
  406. write_byte( 5 )
  407. write_coord(forigin[0]+(rx*2)) // coord, coord, coord (position)
  408. write_coord(forigin[1]+(ry*2))
  409. write_coord(forigin[2]+100+(rz*2))
  410. write_short( smoke )// short (sprite index)
  411. write_byte( 60 ) // byte (scale in 0.1's)
  412. write_byte( 15 ) // byte (framerate)
  413. message_end()
  414.  
  415. if(is_user_alive(id) == 0)
  416. return PLUGIN_CONTINUE
  417.  
  418. hp = get_user_health(id)
  419.  
  420. if((hp - 10) > 0){
  421. set_user_health(id,hp - 8)
  422. }
  423. else {
  424.  
  425. new namek[32],namev[32],authida[35],authidv[35],teama[32],teamv[32]
  426. get_user_name(id,namev,31)
  427. get_user_name(killer,namek,31)
  428. get_user_authid(id,authidv,34)
  429. get_user_authid(killer,authida,34)
  430. get_user_team(id,teamv,31)
  431. get_user_team(killer,teama,31)
  432.  
  433. //Log the Kill
  434. //log_message("^"%s<%d><%s><%s>^" megolve ^"%s<%d><%s><%s>^" a ^"tuzhanyas altal^"",
  435. //namek,get_user_userid(killer),authida,teama,namev,get_user_userid(id),authidv,teamv)
  436.  
  437. //Print message to clients
  438. //client_print(id,print_chat,"[AMXX] Megoltek teged %s's a Tuz hanyasoddal.",namek)
  439. //client_print(killer,print_chat,"[AMXX] Te megolted %s a Tuz Hanyasoddal.",namev)
  440. user_kill(id,0)
  441.  
  442. if(tk == 1){
  443. //client_print(killer,print_center,"Megolted a csapat tarsadat")
  444. server_cmd("echo Plugin By LARP^^!")
  445. }
  446. else{
  447. server_cmd("echo Plugin By LARP^^!")
  448. }
  449.  
  450. //Kill the victim and block the messages
  451. set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
  452. set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
  453. user_kill(id,1)
  454.  
  455. //Makes them stop burning
  456. isburning[id] = 0
  457.  
  458. //Update killers scorboard with new info
  459. message_begin(MSG_ALL,gmsgScoreInfo)
  460. write_byte(killer)
  461. write_short(get_user_frags(killer))
  462. write_short(get_user_deaths(killer))
  463. write_short(0)
  464. write_short(get_user_team(killer))
  465. message_end()
  466.  
  467. //Update victims scoreboard with correct info
  468. message_begin(MSG_ALL,gmsgScoreInfo)
  469. write_byte(id)
  470. write_short(get_user_frags(id))
  471. write_short(get_user_deaths(id))
  472. write_short(0)
  473. write_short(get_user_team(id))
  474. message_end()
  475.  
  476. //Replaced HUD death message
  477. message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
  478. write_byte(killer)
  479. write_byte(id)
  480. write_byte(0)
  481. write_string("flamethrower")
  482. message_end()
  483.  
  484. }
  485. return PLUGIN_CONTINUE
  486. }
  487.  
  488. public fire_scream(args[]){
  489. emit_sound(args[0], CHAN_AUTO, "player/headshot2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  490. return PLUGIN_CONTINUE
  491. }
  492.  
  493. public stop_firesound(args[]){
  494. isburning[args[0]] = 0
  495. emit_sound(args[0], CHAN_ITEM, "vox/_period.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  496. return PLUGIN_CONTINUE
  497. }
  498.  
  499. public client_connect(id){
  500. flame[id]=false
  501. return PLUGIN_CONTINUE
  502. }
  503.  
  504. public client_disconnect(id){
  505. flame[id]=false
  506. return PLUGIN_CONTINUE
  507. }
  508.  
  509. public round_start(id) {
  510. /*for (new k = 1; k <= get_maxplayers(); k++) {
  511. isburning[k] = 0
  512. new freeF = get_cvar_num("amx_flamethrower_free")
  513. if(freeF > 0)
  514. flame_count[k] = freeF
  515. }*/
  516. flame[id]=false
  517. }
  518. public round_end(id) {
  519. flame[id]=false
  520. }
  521.  
  522.  
  523.  
  524. public plugin_modules()
  525. {
  526. require_module("fun")
  527. require_module("engine")
  528. require_module("Counter-Strike")
  529.  
  530. }
  531.  
  532. public FM_PreThink(id)
  533. {
  534. if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
  535. new fl_cost = get_cvar_num("amx_fl_hp");
  536. new armr = get_user_health(id);
  537. new nzbut = get_user_button(id)
  538. new ozbut = get_user_oldbutton(id)
  539. if((zp_get_user_zombie_class(id) == g_zflame) && (nzbut & IN_USE) && !(ozbut & IN_USE))
  540. //static name[32]
  541. if(flame[id])
  542. {
  543. if(armr < fl_cost)
  544. {
  545. client_print(id,print_chat,"[ZP] Vigyazz!, Hamarosan meg fogsz halni ha folytatod a tuz hanyast!")
  546. return PLUGIN_HANDLED
  547. }
  548. set_user_health(id ,armr - fl_cost);
  549. fire_flamethrower(id);
  550. }
  551. else{
  552. if((nzbut & IN_USE) && (get_entity_flags(id) & FL_ONGROUND))
  553. flame[id]=false
  554. }
  555. return PLUGIN_CONTINUE
  556. }
  557. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  558. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1034\\ f0\\ fs16 \n\\ par }
  559. */
  560.  

_________________
Kép


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


Ki van itt

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