hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 354 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 353 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: Minigun problémák
HozzászólásElküldve: 2014.08.02. 18:49 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.05.24. 10:51
Hozzászólások: 197
Megköszönt másnak: 135 alkalommal
Megköszönték neki: 34 alkalommal
Sziasztok!

Nagyon nagy problémáim akadt ezzel a minigun pluginnal:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta_util>
  4. #include <cstrike>
  5. #include <hamsandwich>
  6. #include <zombieplague>
  7. #include <fun>
  8.  
  9. #define MAX_PLAYERS 32
  10. #define MAX_BLOOD_DISTANCE 64
  11. #define LOADUP_TIME 0.75
  12. #define SHUTDOWN_TIME 1.7
  13. #define SHAKE_FORCE -5.0 //(must be negative value)
  14. new const GUNSHOT_DECALS[] = {41, 42, 43, 44, 45} // Gunshot decal list
  15. // Plugin information
  16. new const PLUGIN[] = "[ZP] WPN Minigun"
  17. new const VERSION[] = "1.65"
  18. new const AUTHOR[] = "CLLlAgOB"
  19. // Weapon information
  20. new const g_item_name[] = { "MiniGUN!" }
  21. const g_item_cost = 30
  22. // other
  23. new bool:has_minigun[33], m249, bool:atk2[33], bool:atk1[33],bool:delay[33],bool:beackup[33],
  24. clipp[33],clipstart,g_itemid_minigun,g_fwid,g_guns_eventids_bitsum,bool:g_fix_punchangle[33],
  25. bool:frstCLIP[33],g_MaxPlayers, Float:g_lastShot[33], g_normal_trace[33],DMGMG,bool:haswhpnnmg[33],
  26. Float:g_nextSound[33], g_plAction[33],bool:canfire[33],oneround,bool:user_bot[33],bool:delayhud[33],
  27. clipstartsuv,bool:survivor[33],bool:is_alive[33],bool:is_connected[33]
  28. // Blood
  29. new g_blood
  30. new g_bloodspray
  31. // CS Player PData Offsets (win32)
  32. const OFFSET_CSTEAMS = 114
  33. // Linux diff's
  34. const OFFSET_LINUX = 5 // offsets 5 higher in Linux builds
  35. // Models
  36. new P_MODEL[] = "models/wpnmod/m134/p_minigun.mdl"
  37. new V_MODEL[] = "models/wpnmod/m134/v_minigun.mdl"
  38. new W_MODEL[] = "models/wpnmod/m134/w_minigun.mdl"
  39. // Sounds
  40. new m_SOUND[][] = {"wpnmod/minigun/hw_shoot1.wav", "wpnmod/minigun/hw_spin.wav", "wpnmod/minigun/hw_spinup.wav", "wpnmod/minigun/hw_spindown.wav"}
  41. new g_noammo_sounds[][] = {"weapons/dryfire_rifle.wav"}
  42. //no recoil
  43. new const g_guns_events[][] = {"events/m249.sc"}
  44. //connect valid?
  45. #define is_user_valid_connected(%1) (1 <= %1 <= g_MaxPlayers && is_connected[%1])
  46.  
  47. enum {
  48. anim_idle,
  49. anim_idle2,
  50. anim_gentleidle,
  51. anim_stillidle,
  52. anim_draw,
  53. anim_holster,
  54. anim_spinup,
  55. anim_spindown,
  56. anim_spinidle,
  57. anim_spinfire,
  58. anim_spinidledown
  59. }
  60.  
  61. // Types
  62. enum {
  63. act_none,
  64. act_load_up,
  65. act_run
  66. }
  67.  
  68. public plugin_precache() {
  69. precache_model(P_MODEL)
  70. precache_model(V_MODEL)
  71. precache_model(W_MODEL)
  72. precache_sound(m_SOUND[0])
  73. precache_sound(m_SOUND[1])
  74. precache_sound(m_SOUND[2])
  75. precache_sound(m_SOUND[3])
  76. g_blood = precache_model("sprites/blood.spr")
  77. g_bloodspray = precache_model("sprites/bloodspray.spr")
  78. g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)
  79. }
  80.  
  81. public plugin_init() {
  82. register_plugin(PLUGIN, VERSION, AUTHOR)
  83. clipstart = register_cvar("amx_ammo_m249","600")
  84. clipstartsuv = register_cvar("amx_ammosuv_m249","10000")
  85. m249 = register_cvar("amx_minigun_speed","0.7")
  86. DMGMG = register_cvar("amx_minigun_damage","0.35")
  87. oneround = register_cvar("amx_oneround","0")
  88. g_itemid_minigun = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_HUMAN)
  89. register_event("CurWeapon","event_curweapon","be", "1=1")
  90. register_event("DeathMsg","unminigun","a")
  91. register_forward(FM_ClientDisconnect, "fw_ClientDisconnect")
  92. register_forward(FM_CmdStart, "fwd_CmdStart")
  93. register_forward(FM_EmitSound,"fwd_emitsound")
  94. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  95. register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
  96. register_forward(FM_StartFrame, "fwd_StartFrame")
  97. register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
  98. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  99. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  100. RegisterHam(Ham_TakeDamage, "player", "player_TakeDamage")
  101. register_clcmd("drop","dropcmd", 0)
  102. g_MaxPlayers = get_maxplayers()
  103. //events
  104. register_logevent("event_start", 2, "1=Round_Start")
  105. register_event("TextMsg", "fwEvGameWillRestartIn", "a", "2=#Game_will_restart_in")
  106. register_event("HLTV", "event_start_freezetime", "a", "1=0", "2=0")
  107. unregister_forward(FM_PrecacheEvent, g_fwid, 1)
  108. }
  109.  
  110. // Client joins the game
  111. public client_putinserver(id)
  112. {
  113. // Player joined
  114. is_connected[id] = true
  115. }
  116. // Client leaving
  117. public fw_ClientDisconnect(id)
  118. {
  119. is_connected[id] = false
  120. is_alive[id] = false
  121. }
  122. public fw_PlayerSpawn_Post(id)
  123. {
  124. // Not alive or didn't join a team yet
  125. if (!is_user_alive(id) || !fm_cs_get_user_team(id))
  126. return;
  127. // Player spawned
  128. is_alive[id] = true
  129. }
  130. public fw_PlayerKilled(victim, attacker, shouldgib)
  131. {
  132. //player die
  133. is_alive[victim] = false
  134. }
  135.  
  136. public unminigun(){
  137. new id = read_data(2)
  138. if(has_minigun[id] && !is_alive[id]) {
  139. new Float:Aim[3],Float:origin[3]
  140. VelocityByAim(id, 64, Aim)
  141. entity_get_vector(id,EV_VEC_origin,origin)
  142.  
  143. origin[0] += Aim[0]
  144. origin[1] += Aim[1]
  145.  
  146. new minigun = create_entity("info_target")
  147. entity_set_string(minigun,EV_SZ_classname,"minigun")
  148. entity_set_model(minigun,W_MODEL)
  149.  
  150. entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
  151. entity_set_int(minigun,EV_INT_solid,1)
  152.  
  153. entity_set_int(minigun,EV_INT_movetype,6)
  154. entity_set_int(minigun, EV_INT_iuser1, clipp[id])
  155. entity_set_vector(minigun,EV_VEC_origin,origin)
  156. has_minigun[id] = false
  157. remowegun(id)
  158. return PLUGIN_HANDLED
  159. }
  160. return PLUGIN_CONTINUE
  161. }
  162.  
  163. //damage lvl
  164. public player_TakeDamage(victim, inflictor, attacker, Float:damage, damagetype) {
  165. if(damagetype & DMG_BULLET && haswhpnnmg[attacker] && has_minigun[attacker] == true && attacker!=victim)
  166. {
  167. damage = damage*get_pcvar_float(DMGMG)
  168. SetHamParamFloat(4, damage)
  169. return HAM_IGNORED
  170. }
  171. return HAM_IGNORED
  172. }
  173.  
  174.  
  175. public event_start_freezetime(){
  176. remove_miniguns()
  177. static iPlayers[32], iPlayersNum, i
  178. get_players(iPlayers, iPlayersNum, "a")
  179. if(get_pcvar_num(oneround)){
  180. for (i = 0; i <= iPlayersNum; ++i){
  181. if(has_minigun[iPlayers[i]]){
  182. has_minigun[iPlayers[i]] = false
  183. remowegun(iPlayers[i])
  184. removesuv(iPlayers[i])
  185. }
  186. }
  187. } else {
  188. for (i = 0; i <= iPlayersNum; ++i){
  189. g_plAction[iPlayers[i]] = false
  190. canfire[iPlayers[i]] = false
  191. frstCLIP[iPlayers[i]] = true
  192. set_task(0.1,"event_curweapon",iPlayers[i])
  193. removesuv(iPlayers[i])
  194. }
  195. }
  196. }
  197.  
  198. public removesuv(id){
  199. if(survivor[id]){
  200. has_minigun[id] = false
  201. survivor[id] = false
  202. remowegun(id)
  203. }
  204. }
  205.  
  206. // remove gun and save all guns
  207. public remowegun(id) {
  208. new wpnList[32]
  209. new number
  210. get_user_weapons(id,wpnList,number)
  211. for (new i = 0;i < number ;i++) {
  212. if (wpnList[i] == CSW_M249) {
  213. fm_strip_user_gun(id, wpnList[i])
  214. }
  215. }
  216. }
  217.  
  218. public event_start(){
  219. static iPlayers[32], iPlayersNum, i
  220. get_players(iPlayers, iPlayersNum, "a")
  221. for (i = 0; i <= iPlayersNum; ++i)
  222. canfire[iPlayers[i]] = true
  223. }
  224.  
  225.  
  226.  
  227. public fwEvGameWillRestartIn() {
  228. static iPlayers[32], iPlayersNum, i
  229. get_players(iPlayers, iPlayersNum, "a")
  230. for (i = 0; i <= iPlayersNum; ++i)
  231. has_minigun[iPlayers[i]] = false
  232. }
  233. public client_connect(id){
  234. canfire[id]= false
  235. has_minigun[id] = false
  236. g_normal_trace[id] = 0
  237. if(is_user_bot(id)) user_bot[id] = true
  238. else user_bot[id] = false
  239. }
  240.  
  241. //block sound no ammo in atack
  242. public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
  243. {
  244. if (!is_user_valid_connected(id) || !has_minigun[id])
  245. return FMRES_IGNORED;
  246. else if((equal(sample, g_noammo_sounds[0])) && has_minigun[id] && haswhpnnmg[id])
  247. {
  248. return FMRES_SUPERCEDE
  249. }
  250. return FMRES_IGNORED
  251. }
  252.  
  253. // someone bought our extra item
  254. public zp_extra_item_selected(id, itemid)
  255. {
  256. if (itemid == g_itemid_minigun) give_weapon(id,0,1)
  257. }
  258. //infect plaer
  259. public zp_user_infected_pre(player, infector){
  260. has_minigun[player] = false
  261. dropcmd(player)
  262. }
  263.  
  264. public dropcmd(id) {
  265. if(has_minigun[id] && haswhpnnmg[id] && is_alive[id]) {
  266. new Float:Aim[3],Float:origin[3]
  267. VelocityByAim(id, 64, Aim)
  268. entity_get_vector(id,EV_VEC_origin,origin)
  269.  
  270. origin[0] += Aim[0]
  271. origin[1] += Aim[1]
  272.  
  273. new minigun = create_entity("info_target")
  274. entity_set_string(minigun,EV_SZ_classname,"minigun")
  275. entity_set_model(minigun,W_MODEL)
  276.  
  277. entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
  278. entity_set_int(minigun,EV_INT_solid,1)
  279.  
  280. entity_set_int(minigun,EV_INT_movetype,6)
  281. entity_set_int(minigun, EV_INT_iuser1, clipp[id])
  282. entity_set_vector(minigun,EV_VEC_origin,origin)
  283. has_minigun[id] = false
  284. canfire[id] = false
  285. remowegun(id)
  286. g_plAction[id] = false
  287. return PLUGIN_HANDLED
  288. }
  289. return PLUGIN_CONTINUE
  290. }
  291.  
  292. public pfn_touch(ptr, ptd) {
  293. if(is_valid_ent(ptr)) {
  294. new classname[32]
  295. entity_get_string(ptr,EV_SZ_classname,classname,31)
  296.  
  297. if(equal(classname, "minigun")) {
  298. if(is_valid_ent(ptd)) {
  299. new id = ptd
  300. if(id > 0 && id < 34) {
  301. if(!has_minigun[id] && is_alive[id] && !zp_get_user_zombie(id)) {
  302. give_weapon(id,entity_get_int(ptr, EV_INT_iuser1), 0)
  303. remove_entity(ptr)
  304. }
  305. }
  306. }
  307. }
  308. }
  309. }
  310.  
  311. public remove_miniguns() {
  312. new nextitem = find_ent_by_class(-1,"minigun")
  313. while(nextitem) {
  314. remove_entity(nextitem)
  315. nextitem = find_ent_by_class(-1,"minigun")
  316. }
  317. return PLUGIN_CONTINUE
  318. }
  319.  
  320. //give wpn
  321. public give_weapon(id, ammo, frst){
  322. has_minigun[id] = true
  323. give_item(id,"weapon_m249")
  324. canfire[id] = true
  325. clipp[id] = ammo
  326. if(frst) frstCLIP[id] = true
  327. else beackup[id] = true
  328.  
  329. }
  330.  
  331.  
  332. //set models
  333. public event_curweapon(id){
  334. if(!is_alive[id] || !is_connected[id] || user_bot[id]) return;
  335. new clip, ammo, weapon = get_user_weapon(id, clip, ammo)
  336. if(zp_get_user_survivor(id) && get_pcvar_num(clipstartsuv)!=0 && !survivor[id]){
  337. survivor[id] = true
  338. give_weapon(id,0,1)
  339. }
  340. if((has_minigun[id]) && (weapon == CSW_M249)){
  341. if(g_plAction[id] != act_run && frstCLIP[id]){
  342. if(survivor[id]){
  343. clipp[id] = get_pcvar_num(clipstartsuv)
  344. } else {
  345. clipp[id] = get_pcvar_num(clipstart)
  346. }
  347. new ent = get_weapon_ent(id,weapon)
  348. if(clipp[id] < get_pcvar_num(clipstart)) clipp[id] = get_pcvar_num(clipstart)
  349. cs_set_weapon_ammo(ent, clipp[id])
  350. frstCLIP[id] = false
  351. }
  352. if(g_plAction[id] != act_run && beackup[id]){
  353. new ent = get_weapon_ent(id,weapon)
  354. cs_set_weapon_ammo(ent, clipp[id])
  355. beackup[id] = false
  356. }
  357. if(clipp[id] == 0){
  358. new ent = get_weapon_ent(id,weapon)
  359. cs_set_weapon_ammo(ent, clipp[id])
  360. }
  361. if(g_plAction[id] == act_run){
  362. clipp[id] = clip
  363. }
  364. message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id)
  365. write_byte(1)
  366. write_byte(CSW_KNIFE)
  367. write_byte(0)
  368. message_end()
  369. if(!haswhpnnmg[id]){
  370. entity_set_string(id,EV_SZ_viewmodel,V_MODEL)
  371. entity_set_string(id,EV_SZ_weaponmodel,P_MODEL)
  372. haswhpnnmg[id] = true
  373. }
  374. new Ent = get_weapon_ent(id,weapon)
  375. new Float:N_Speed
  376. if(Ent)
  377. {
  378. N_Speed = get_pcvar_float(m249)
  379. new Float:Delay = get_pdata_float( Ent, 46, 4) * N_Speed
  380. if (Delay > 0.0){
  381. set_pdata_float( Ent, 46, Delay, 4)
  382. }
  383. }
  384. ammo_hud(id)
  385. if(atk1[id]){
  386. fire_mode(id, 0)
  387. }
  388. if(atk2[id]){
  389. fire_mode(id, 1)
  390. }
  391. }
  392. if(weapon != CSW_M249) haswhpnnmg[id] = false
  393. if((has_minigun[id]) && (!haswhpnnmg[id])) g_plAction[id] = act_none
  394.  
  395. return;
  396. }
  397.  
  398. //play anim
  399. public native_playanim(player,anim)
  400. {
  401. set_pev(player, pev_weaponanim, anim)
  402. message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
  403. write_byte(anim)
  404. write_byte(pev(player, pev_body))
  405. message_end()
  406. }
  407.  
  408.  
  409. //marks on hit
  410. public native_gi_get_gunshot_decal()
  411. {
  412. return GUNSHOT_DECALS[random_num(0, sizeof(GUNSHOT_DECALS) - 1)]
  413. }
  414.  
  415. //hit bulet
  416. public testbulet(id){
  417. // Find target
  418. new aimOrigin[3], target, body
  419. get_user_origin(id, aimOrigin, 3)
  420. get_user_aiming(id, target, body)
  421.  
  422. if(target > 0 && target <= g_MaxPlayers)
  423. {
  424. new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
  425. pev(id, pev_origin, fStart)
  426.  
  427. // Get ids view direction
  428. velocity_by_aim(id, MAX_BLOOD_DISTANCE, fVel)
  429.  
  430. // Calculate position where blood should be displayed
  431. fStart[0] = float(aimOrigin[0])
  432. fStart[1] = float(aimOrigin[1])
  433. fStart[2] = float(aimOrigin[2])
  434. fEnd[0] = fStart[0]+fVel[0]
  435. fEnd[1] = fStart[1]+fVel[1]
  436. fEnd[2] = fStart[2]+fVel[2]
  437.  
  438. // Draw traceline from victims origin into ids view direction to find
  439. // the location on the wall to put some blood on there
  440. new res
  441. engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
  442. get_tr2(res, TR_vecEndPos, fRes)
  443.  
  444. // Show some blood <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->
  445. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  446. write_byte(TE_BLOODSPRITE)
  447. write_coord(floatround(fStart[0]))
  448. write_coord(floatround(fStart[1]))
  449. write_coord(floatround(fStart[2]))
  450. write_short(g_bloodspray)
  451. write_short(g_blood)
  452. write_byte(70)
  453. write_byte(random_num(1,2))
  454. message_end()
  455.  
  456.  
  457. } else {
  458. new decal = native_gi_get_gunshot_decal()
  459.  
  460. // Check if the wall hit is an entity
  461. if(target)
  462. {
  463. // Put decal on an entity
  464. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  465. write_byte(TE_DECAL)
  466. write_coord(aimOrigin[0])
  467. write_coord(aimOrigin[1])
  468. write_coord(aimOrigin[2])
  469. write_byte(decal)
  470. write_short(target)
  471. message_end()
  472. } else {
  473. // Put decal on "world" (a wall)
  474. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  475. write_byte(TE_WORLDDECAL)
  476. write_coord(aimOrigin[0])
  477. write_coord(aimOrigin[1])
  478. write_coord(aimOrigin[2])
  479. write_byte(decal)
  480. message_end()
  481. }
  482.  
  483. // Show sparcles
  484. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  485. write_byte(TE_GUNSHOTDECAL)
  486. write_coord(aimOrigin[0])
  487. write_coord(aimOrigin[1])
  488. write_coord(aimOrigin[2])
  489. write_short(id)
  490. write_byte(decal)
  491. message_end()
  492. }
  493. }
  494.  
  495.  
  496.  
  497.  
  498. //block anim standart wpn
  499. public UpdateClientData_Post( id, sendweapons, cd_handle ){
  500. if ( !is_alive[id] ) return FMRES_IGNORED;
  501. if(haswhpnnmg[id] && has_minigun[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );
  502. return FMRES_HANDLED;
  503. }
  504.  
  505. public fwd_CmdStart(id, uc_handle, seed)
  506. {
  507.  
  508. if(!is_alive[id] || !has_minigun[id]) return FMRES_IGNORED
  509. if(!canfire[id]) return FMRES_HANDLED
  510.  
  511. if(haswhpnnmg[id])
  512. {
  513. static buttons
  514. buttons = get_uc(uc_handle, UC_Buttons)
  515. if(buttons & IN_ATTACK)
  516. {
  517. atk1[id] = true
  518. atk2[id] = false
  519.  
  520.  
  521. }
  522. else if(buttons & IN_ATTACK2)
  523. {
  524. atk2[id] = true
  525. atk1[id] = false
  526. }
  527. if(atk1[id] && !atk2[id] && (g_plAction[id] == act_none || g_plAction[id] == act_load_up) && clipp[id]>0){
  528. buttons &= ~IN_ATTACK
  529. buttons &= ~IN_ATTACK2
  530. set_uc(uc_handle, UC_Buttons, buttons)
  531. fire_mode(id,0)
  532. } else if(atk2[id] || atk1[id] && clipp[id]==0){
  533. fire_mode(id,1)
  534. }
  535.  
  536. }
  537. return FMRES_IGNORED
  538. }
  539.  
  540. // in fire
  541. fire_mode(id, type) {
  542. static Float:gtime
  543. gtime = get_gametime()
  544. g_lastShot[id] = gtime
  545.  
  546. if(g_nextSound[id] <= gtime && canfire[id]) {
  547. switch(g_plAction[id]) {
  548. case act_none: {
  549. native_playanim(id, anim_spinup)
  550. emit_sound(id, CHAN_WEAPON, m_SOUND[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
  551. g_nextSound[id] = gtime + LOADUP_TIME
  552. g_plAction[id] = act_load_up
  553. }
  554. case act_load_up: {
  555. g_nextSound[id] = gtime
  556. g_plAction[id] = act_run
  557. }
  558. }
  559. }
  560.  
  561. if(g_plAction[id] == act_run) {
  562. if(type == 0 && clipp[id]>0 && atk1[id]){
  563. emit_sound(id, CHAN_WEAPON, m_SOUND[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
  564. testbulet(id)
  565. if(!delay[id]) {
  566. native_playanim(id, anim_spinfire)
  567. ammo_hud(id)
  568. set_task(0.2,"delayanim",id)
  569. delay[id] = true
  570. }
  571. }
  572. else {
  573. if(!delay[id]) {
  574. ammo_hud(id)
  575. emit_sound(id, CHAN_WEAPON, m_SOUND[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
  576. native_playanim(id, anim_spinidle)
  577. set_task(0.2,"delayanim",id)
  578. delay[id] = true
  579. }
  580. }
  581. }
  582. atk1[id] = false
  583. atk2[id] = false
  584. }
  585.  
  586. public delayanim(id){
  587. delay[id] = false
  588. }
  589.  
  590. //sound and anim
  591. public fwd_StartFrame() {
  592. static Float:gtime, id
  593.  
  594. gtime = get_gametime()
  595.  
  596. for(id = 0; id <= g_MaxPlayers; id++) {
  597. if(g_plAction[id] != act_none) {
  598.  
  599. if(!(pev(id, pev_button) & IN_ATTACK) && !(pev(id, pev_button) & IN_ATTACK2) && g_lastShot[id] + 0.2 < gtime) {
  600. native_playanim(id, anim_spinidledown)
  601. emit_sound(id, CHAN_WEAPON, m_SOUND[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
  602. g_nextSound[id] = gtime + SHUTDOWN_TIME
  603. g_plAction[id] = act_none
  604. }
  605. }
  606. }
  607. }
  608.  
  609.  
  610. // No recoil stuff
  611.  
  612. public fwPrecacheEvent(type, const name[]) {
  613. for (new i = 0; i < sizeof g_guns_events; ++i) {
  614. if (equal(g_guns_events[i], name)) {
  615. g_guns_eventids_bitsum |= (1<<get_orig_retval())
  616. return FMRES_HANDLED
  617. }
  618. }
  619.  
  620. return FMRES_IGNORED
  621. }
  622. public fwPlaybackEvent(flags, invoker, eventid) {
  623. if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_MaxPlayers) || !haswhpnnmg[invoker] || !has_minigun[invoker])
  624. return FMRES_IGNORED
  625.  
  626. g_fix_punchangle[invoker] = true
  627.  
  628. return FMRES_HANDLED
  629. }
  630.  
  631. public fwPlayerPostThink(id) {
  632. if (g_fix_punchangle[id]) {
  633. g_fix_punchangle[id] = false
  634. set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
  635. return FMRES_HANDLED
  636. }
  637.  
  638. return FMRES_IGNORED
  639. }
  640.  
  641. public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, ptr) {
  642. if (!(1 <= id <= g_MaxPlayers))
  643. return FMRES_IGNORED
  644.  
  645. if (!g_normal_trace[id]) {
  646. g_normal_trace[id] = ptr
  647. return FMRES_HANDLED
  648. }
  649. if (ptr == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_alive[id] || !haswhpnnmg[id] || !has_minigun[id])
  650. return FMRES_IGNORED
  651.  
  652. fix_recoil_trace(id, start, ptr)
  653.  
  654. return FMRES_SUPERCEDE
  655. }
  656.  
  657. // show ammo clip
  658. public ammo_hud(id) {
  659. if(!delayhud[id]) {
  660. delayhud[id] = true
  661. new AmmoHud[65]
  662. new clip = clipp[id]
  663. format(AmmoHud, 64, "Ammo: %i", clip)
  664. set_hudmessage(200, 100, 0, 1.0 , 1.0, 0, 0.1, 0.1,0.1)
  665. show_hudmessage(id,"%s",AmmoHud)
  666. set_task(0.2,"delayhutmsg",id)
  667. }
  668. }
  669.  
  670. public delayhutmsg(id){
  671. delayhud[id]= false
  672. }
  673.  
  674. //get weapon id
  675. stock get_weapon_ent(id,wpnid=0,wpnName[]="")
  676. {
  677. // who knows what wpnName will be
  678. static newName[24];
  679.  
  680. // need to find the name
  681. if(wpnid) get_weaponname(wpnid,newName,23);
  682.  
  683. // go with what we were told
  684. else formatex(newName,23,"%s",wpnName);
  685.  
  686. // prefix it if we need to
  687. if(!equal(newName,"weapon_",7))
  688. format(newName,23,"weapon_%s",newName);
  689.  
  690. return fm_find_ent_by_owner(get_maxplayers(),newName,id);
  691. }
  692. fix_recoil_trace(id, const Float:start[], ptr) {
  693. static Float:dest[3]
  694. pev(id, pev_v_angle, dest)
  695. engfunc(EngFunc_MakeVectors, dest)
  696. global_get(glb_v_forward, dest)
  697. xs_vec_mul_scalar(dest, 9999.0, dest)
  698. xs_vec_add(start, dest, dest)
  699. engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, ptr)
  700. }
  701. // Get User Team
  702. stock fm_cs_get_user_team(id)
  703. {
  704. return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
  705. }


1. A probléma az, hogy a hangja bugos, mert ha én lövök vele akkor jó a hangja, minigunos, de ha más lő vele, akkor m249-es hangja van.
2.Ha valaki túlélő akkor megkapja a ugyan a minigunt, de ha a esetleg a következő körben is valahogy túlélő lesz, akkor nem kapja meg a minigunt, tehát ha kétszer egymás után túlélő.

Hiába szerkesztek rajta, nem sikerül megoldani.Hát ha valakinek is voltak ezek a problémák?!

Valaki kérem segítsen, mert nagyon fontos lenne!

Előre is köszönöm szépen!

Üdvözlettel,
JeriQ


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 5 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole