hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.05. 14:46



Jelenlévő felhasználók

Jelenleg 404 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 403 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  [ 11 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 14:19 
Offline
Nagyúr

Csatlakozott: 2014.05.10. 16:41
Hozzászólások: 721
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 64 alkalommal
Sziasztok ez miért nem jó. a plugin amiben benne van le fordúl de a játékban nem adja oda a cuccokat.
inc benne van. sx
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. case 5: {
  3. if(pont[id] >= 60)
  4. {
  5. callfunc_begin("zp_extra_item_selected","norecoil.amxx")
  6. callfunc_push_int(id)
  7. callfunc_push_int(0)
  8. callfunc_end()
  9. pont[id] -= 60
  10. }
  11. else ColorChat(id, RED, "Sajnos nem sikerült, nincs elég pontod!")
  12. }
  13. }
  14.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 14:22 
Offline
Félisten
Avatar

Csatlakozott: 2013.12.30. 12:26
Hozzászólások: 987
Megköszönt másnak: 34 alkalommal
Megköszönték neki: 133 alkalommal
rossz a norecoil plugin?

_________________
Kép
Pár pluginom:
LCAW Frag Bolt
S E C R E T (78%...)
KépKép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 14:38 
Offline
Nagyúr

Csatlakozott: 2014.05.10. 16:41
Hozzászólások: 721
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 64 alkalommal
zp.s :) de ez van a janus.amxx nél annál se megy!:( Mit tehetek?

SMA Forráskód: [ Mindet kijelol ]
  1. formatex(szText, charsmax(szText), "\wJanus \y12 \r| \y(%d/250) Pont \d(3.2 DMG)", pont[id])
  2. menu_additem(menu, szText, "5", 0);
  3. case 5: {
  4. if(pont[id] >= 250)
  5. {
  6. callfunc_begin("zp_extra_item_selected","janus.amxx")
  7. callfunc_push_int(id)
  8. callfunc_push_int(0)
  9. callfunc_end()
  10. pont[id] -= 250
  11. }
  12. else ColorChat(id, RED, "Sajnos nem sikerült, nincs elég pontod!")
  13. }
  14. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 14:53 
Offline
Félisten
Avatar

Csatlakozott: 2013.12.30. 12:26
Hozzászólások: 987
Megköszönt másnak: 34 alkalommal
Megköszönték neki: 133 alkalommal
inkább a norecoil és janus sma-kat mutasd :D

_________________
Kép
Pár pluginom:
LCAW Frag Bolt
S E C R E T (78%...)
KépKép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 15:21 
Offline
Nagyúr

Csatlakozott: 2014.05.10. 16:41
Hozzászólások: 721
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 64 alkalommal
Janus:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fakemeta_util>
  5. #include <fun>
  6. #include <hamsandwich>
  7. #include <xs>
  8. #include <cstrike>
  9. #include <zombieplague>
  10.  
  11. #define ENG_NULLENT -1
  12. #define EV_INT_WEAPONKEY EV_INT_impulse
  13. #define JANUS11_WEAPONKEY 702453
  14. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  15.  
  16. const USE_STOPPED = 0
  17. const OFFSET_ACTIVE_ITEM = 373
  18. const OFFSET_WEAPONOWNER = 41
  19. const OFFSET_LINUX = 5
  20. const OFFSET_LINUX_WEAPONS = 4
  21.  
  22. #if cellbits == 32
  23. const OFFSET_CLIPAMMO = 51
  24. #else
  25. const OFFSET_CLIPAMMO = 65
  26. #endif
  27.  
  28. #define WEAP_LINUX_XTRA_OFF 4
  29. #define m_fKnown 44
  30. #define m_flNextPrimaryAttack 46
  31. #define m_flNextSecondaryAttack 47
  32. #define m_flTimeWeaponIdle 48
  33. #define m_iClip 51
  34. #define m_fInReload 54
  35. #define m_fInSpecialReload 55
  36. #define PLAYER_LINUX_XTRA_OFF 5
  37. #define m_flNextAttack 83
  38.  
  39. #define JANUS11_SHOOT1 2
  40. #define JANUS11_DRAW 6
  41. #define JANUS11_RELOAD_AFTER 4
  42. #define janus11_READY 15
  43.  
  44. new gmsgWeaponList, sTrail
  45.  
  46. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  47.  
  48. new const Fire_Sounds[][] = { "weapons/janus11-1.wav", "weapons/janus11-1.wav", "weapons/janus11-1.wav"}
  49.  
  50. new JANUS11_V_MODEL[64] = "models/v_janus11.mdl"
  51. new JANUS11_P_MODEL[64] = "models/p_janus11.mdl"
  52. new JANUS11_W_MODEL[64] = "models/w_janus11.mdl"
  53. new const GRENADE_MODEL[] = "models/grenade.mdl"
  54.  
  55. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  56.  
  57. new cvar_dmg1_janus11, cvar_dmg2_janus11, cvar_recoil_janus11, cvar_transform_janus11, cvar_clip_janus11, cvar_janus11_ammo, g_has_janus11[33], g_Ham_Bot, muzzle
  58.  
  59. new g_MaxPlayers, g_orig_event_janus11, g_IsInPrimaryAttack, g_janus11
  60. new Float:cl_pushangle[33][3], m_iBlood[2]
  61. new g_clip_ammo[33], oldweap[33], g_reload[33], janus11_mode[33], janus11_signal[33], Float:StartOrigin2[3]
  62. const PRIMARY_WEAPONS_BIT_SUM =
  63. (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
  64. CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
  65. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  66. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
  67. "weapon_mp5navy", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  68. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  69. "weapon_ak47", "weapon_knife", "weapon_p90" }
  70.  
  71. public plugin_init()
  72. {
  73. register_plugin("Janus-11", "1.0", "m4m3ts")
  74. register_cvar("janus11_version", "m4m3ts", FCVAR_SERVER|FCVAR_SPONLY)
  75. register_event("CurWeapon","CurrentWeapon","be","1=1")
  76. RegisterHam(Ham_Item_AddToPlayer, "weapon_m3", "fw_JANUS11_AddToPlayer")
  77. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  78. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  79. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  80. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  81.  
  82. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  83. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  84.  
  85. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m3", "fw_JANUS11_PrimaryAttack")
  86. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m3", "fw_JANUS11_PrimaryAttack_Post", 1)
  87. RegisterHam(Ham_Weapon_Reload, "weapon_m3", "JANUS11_Reload")
  88. RegisterHam(Ham_Weapon_Reload, "weapon_m3", "JANUS11_Reload_Post", 1)
  89. RegisterHam(Ham_Weapon_WeaponIdle, "weapon_m3", "fw_janus11idleanim", 1)
  90.  
  91. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  92.  
  93. register_forward(FM_CmdStart, "fw_CmdStart")
  94. register_forward(FM_SetModel, "fw_SetModel")
  95. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  96. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  97.  
  98. gmsgWeaponList = get_user_msgid("WeaponList")
  99.  
  100. RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
  101. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  102. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  103. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  104. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  105. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  106. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  107. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  108.  
  109. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  110.  
  111. cvar_recoil_janus11 = register_cvar("zp_janus11_recoil", "0.65")
  112. cvar_clip_janus11 = register_cvar("zp_janus11_clip", "15")
  113. cvar_janus11_ammo = register_cvar("zp_janus11_ammo", "64")
  114. cvar_dmg1_janus11 = register_cvar("zp_janus11_dmg1", "15.0")
  115. cvar_dmg2_janus11 = register_cvar("zp_janus11_dmg2", "30.0")
  116. cvar_transform_janus11 = register_cvar("zp_janus11_transform", "15")
  117.  
  118. g_janus11 = zp_register_extra_item("Janus-11", 20, ZP_TEAM_HUMAN)
  119.  
  120. g_MaxPlayers = get_maxplayers()
  121. }
  122.  
  123. public plugin_precache()
  124. {
  125. precache_model(JANUS11_V_MODEL)
  126. precache_model(JANUS11_P_MODEL)
  127. precache_model(JANUS11_W_MODEL)
  128. for(new i = 0; i < sizeof Fire_Sounds; i++)
  129. precache_sound(Fire_Sounds[i])
  130.  
  131. precache_model(GRENADE_MODEL)
  132. sTrail = precache_model("sprites/laserbeam.spr")
  133. muzzle = engfunc(EngFunc_PrecacheModel, "sprites/smokepuff.spr")
  134.  
  135. precache_sound("weapons/janus11_after_reload.wav")
  136. precache_sound("weapons/janus11_change1.wav")
  137. precache_sound("weapons/janus11_change2.wav")
  138. precache_sound("weapons/janus11_draw.wav")
  139. precache_sound("weapons/janus11_insert.wav")
  140. precache_sound("weapons/janus11-4.wav")
  141. precache_sound("weapons/uts15_reload.wav")
  142.  
  143. precache_generic("sprites/weapon_janus11.txt")
  144.  
  145. precache_generic("sprites/640hud107.spr")
  146. precache_generic("sprites/640hud13.spr")
  147.  
  148. register_clcmd("weapon_janus11", "weapon_hook")
  149.  
  150. m_iBlood[0] = precache_model("sprites/blood.spr")
  151. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  152.  
  153. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  154. }
  155.  
  156. public weapon_hook(id)
  157. {
  158. engclient_cmd(id, "weapon_m3")
  159. return PLUGIN_HANDLED
  160. }
  161.  
  162. public client_putinserver(id)
  163. {
  164. if(!g_Ham_Bot && is_user_bot(id))
  165. {
  166. g_Ham_Bot = 1
  167. set_task(0.1, "Do_RegisterHam_Bot", id)
  168. }
  169. }
  170.  
  171. public Do_RegisterHam_Bot(id)
  172. {
  173. RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
  174. RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack", 1)
  175. RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
  176. }
  177.  
  178. public zp_extra_item_selected(id, itemid)
  179. {
  180. if(itemid == g_janus11) give_janus11(id)
  181. }
  182.  
  183. public nyala(id)
  184. {
  185. janus11_mode[id] = 2
  186. }
  187.  
  188. public zp_user_infected_post(id) g_has_janus11[id] = false
  189.  
  190.  
  191. public fw_PlayerKilled(id)
  192. {
  193. g_has_janus11[id] = false
  194. }
  195.  
  196. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  197. {
  198. if(!is_user_alive(iAttacker))
  199. return
  200.  
  201. new g_currentweapon = get_user_weapon(iAttacker)
  202.  
  203. if(g_currentweapon != CSW_M3 || !g_has_janus11[iAttacker])
  204. return
  205.  
  206. if(janus11_mode[iAttacker] == 3) SetHamParamFloat(3, get_pcvar_float(cvar_dmg2_janus11))
  207. else SetHamParamFloat(3, get_pcvar_float(cvar_dmg1_janus11))
  208.  
  209.  
  210. static Float:flEnd[3]
  211. get_tr2(ptr, TR_vecEndPos, flEnd)
  212.  
  213. if(!is_user_alive(iEnt))
  214. {
  215. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  216. write_byte(TE_DECAL)
  217. write_coord_f(flEnd[0])
  218. write_coord_f(flEnd[1])
  219. write_coord_f(flEnd[2])
  220. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  221. write_short(iEnt)
  222. message_end()
  223.  
  224. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  225. write_byte(TE_WORLDDECAL)
  226. write_coord_f(flEnd[0])
  227. write_coord_f(flEnd[1])
  228. write_coord_f(flEnd[2])
  229. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  230. message_end()
  231.  
  232. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  233. write_byte(TE_GUNSHOTDECAL)
  234. write_coord_f(flEnd[0])
  235. write_coord_f(flEnd[1])
  236. write_coord_f(flEnd[2])
  237. write_short(iAttacker)
  238. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  239. message_end()
  240. }
  241.  
  242. if(janus11_mode[iAttacker] == 3)
  243. {
  244. get_position(iAttacker, 20.0, 5.0, 5.0, StartOrigin2)
  245.  
  246. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  247. write_byte(TE_BEAMPOINTS)
  248. engfunc(EngFunc_WriteCoord, StartOrigin2[0])
  249. engfunc(EngFunc_WriteCoord, StartOrigin2[1])
  250. engfunc(EngFunc_WriteCoord, StartOrigin2[2] - 10.0)
  251. engfunc(EngFunc_WriteCoord, flEnd[0])
  252. engfunc(EngFunc_WriteCoord, flEnd[1])
  253. engfunc(EngFunc_WriteCoord, flEnd[2])
  254. write_short(sTrail)
  255. write_byte(0) // start frame
  256. write_byte(0) // framerate
  257. write_byte(5) // life
  258. write_byte(5) // line width
  259. write_byte(0) // amplitude
  260. write_byte(220)
  261. write_byte(88)
  262. write_byte(0) // blue
  263. write_byte(255) // brightness
  264. write_byte(0) // speed
  265. message_end()
  266. }
  267. }
  268.  
  269. public fwPrecacheEvent_Post(type, const name[])
  270. {
  271. if (equal("events/m3.sc", name))
  272. {
  273. g_orig_event_janus11 = get_orig_retval()
  274. return FMRES_HANDLED
  275. }
  276. return FMRES_IGNORED
  277. }
  278.  
  279. public client_connect(id)
  280. {
  281. g_has_janus11[id] = false
  282. }
  283.  
  284. public client_disconnect(id)
  285. {
  286. g_has_janus11[id] = false
  287. }
  288.  
  289. public fw_SetModel(entity, model[])
  290. {
  291. if(!is_valid_ent(entity))
  292. return FMRES_IGNORED
  293.  
  294. static szClassName[33]
  295. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  296.  
  297. if(!equal(szClassName, "weaponbox"))
  298. return FMRES_IGNORED
  299.  
  300. static iOwner
  301.  
  302. iOwner = entity_get_edict(entity, EV_ENT_owner)
  303.  
  304. if(equal(model, "models/w_m3.mdl"))
  305. {
  306. static iStoredAugID
  307.  
  308. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_m3", entity)
  309.  
  310. if(!is_valid_ent(iStoredAugID))
  311. return FMRES_IGNORED
  312.  
  313. if(g_has_janus11[iOwner])
  314. {
  315. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, JANUS11_WEAPONKEY)
  316.  
  317. g_has_janus11[iOwner] = false
  318.  
  319. entity_set_model(entity, JANUS11_W_MODEL)
  320.  
  321. return FMRES_SUPERCEDE
  322. }
  323. }
  324. return FMRES_IGNORED
  325. }
  326.  
  327. public give_janus11(id)
  328. {
  329. drop_weapons(id, 1)
  330. new iWep2 = give_item(id,"weapon_m3")
  331. if( iWep2 > 0 )
  332. {
  333. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_janus11))
  334. cs_set_user_bpammo (id, CSW_M3, get_pcvar_num(cvar_janus11_ammo))
  335. UTIL_PlayWeaponAnimation(id, JANUS11_DRAW)
  336. set_weapons_timeidle(id, CSW_M3, 1.0)
  337. set_player_nextattackx(id, 1.0)
  338. }
  339. g_has_janus11[id] = true
  340. janus11_mode[id] = 1
  341. janus11_signal[id] = 0
  342. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  343. write_string("weapon_janus11")
  344. write_byte(5)
  345. write_byte(32)
  346. write_byte(-1)
  347. write_byte(-1)
  348. write_byte(0)
  349. write_byte(5)
  350. write_byte(21)
  351. write_byte(0)
  352. message_end()
  353. }
  354.  
  355. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  356. {
  357. if (victim != attacker && is_user_connected(attacker))
  358. {
  359. if(get_user_weapon(attacker) == CSW_M3)
  360. {
  361. if(g_has_janus11[attacker])
  362. {
  363. if(janus11_mode[attacker] != 3)
  364. {
  365. janus11_signal[attacker] ++
  366. }
  367. }
  368. }
  369. }
  370. }
  371.  
  372. public fw_JANUS11_AddToPlayer(janus11, id)
  373. {
  374. if(!is_valid_ent(janus11) || !is_user_connected(id))
  375. return HAM_IGNORED
  376.  
  377. if(entity_get_int(janus11, EV_INT_WEAPONKEY) == JANUS11_WEAPONKEY)
  378. {
  379. g_has_janus11[id] = true
  380.  
  381. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  382. write_string("weapon_janus11")
  383. write_byte(5)
  384. write_byte(32)
  385. write_byte(-1)
  386. write_byte(-1)
  387. write_byte(0)
  388. write_byte(5)
  389. write_byte(21)
  390. write_byte(0)
  391. message_end()
  392.  
  393. entity_set_int(janus11, EV_INT_WEAPONKEY, 0)
  394.  
  395. return HAM_HANDLED
  396. }
  397. return HAM_IGNORED
  398. }
  399.  
  400. public fw_UseStationary_Post(entity, caller, activator, use_type)
  401. {
  402. if (use_type == USE_STOPPED && is_user_connected(caller))
  403. replace_weapon_models(caller, get_user_weapon(caller))
  404. }
  405.  
  406. public fw_Item_Deploy_Post(weapon_ent)
  407. {
  408. static owner
  409. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  410.  
  411. static weaponid
  412. weaponid = cs_get_weapon_id(weapon_ent)
  413.  
  414. replace_weapon_models(owner, weaponid)
  415. }
  416.  
  417. public CurrentWeapon(id)
  418. {
  419. if( read_data(2) != CSW_M3 ) {
  420. if( g_reload[id] ) {
  421. g_reload[id] = 0
  422. remove_task( id + 1331 )
  423. }
  424. }
  425. replace_weapon_models(id, read_data(2))
  426. }
  427.  
  428. replace_weapon_models(id, weaponid)
  429. {
  430. switch (weaponid)
  431. {
  432. case CSW_M3:
  433. {
  434. if(g_has_janus11[id])
  435. {
  436. set_pev(id, pev_viewmodel2, JANUS11_V_MODEL)
  437. set_pev(id, pev_weaponmodel2, JANUS11_P_MODEL)
  438. if(oldweap[id] != CSW_M3)
  439. {
  440. if(janus11_mode[id] == 1) UTIL_PlayWeaponAnimation(id, JANUS11_DRAW)
  441. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 16)
  442. if(janus11_mode[id] == 3) UTIL_PlayWeaponAnimation(id, 9)
  443. set_weapons_timeidle(id, CSW_M3, 1.0)
  444. set_player_nextattackx(id, 1.0)
  445.  
  446. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  447. write_string("weapon_janus11")
  448. write_byte(5)
  449. write_byte(32)
  450. write_byte(-1)
  451. write_byte(-1)
  452. write_byte(0)
  453. write_byte(5)
  454. write_byte(CSW_M3)
  455. message_end()
  456. }
  457. }
  458. }
  459. }
  460. oldweap[id] = weaponid
  461. }
  462.  
  463. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  464. {
  465. if(!is_user_alive(Player) || get_user_weapon(Player) != CSW_M3 || !g_has_janus11[Player])
  466. return FMRES_IGNORED
  467.  
  468. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  469. return FMRES_HANDLED
  470. }
  471.  
  472. public fw_JANUS11_PrimaryAttack(Weapon)
  473. {
  474. new Player = get_pdata_cbase(Weapon, 41, 4)
  475.  
  476. if (!g_has_janus11[Player])
  477. return
  478.  
  479. g_IsInPrimaryAttack = 1
  480. pev(Player,pev_punchangle,cl_pushangle[Player])
  481.  
  482. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  483. if(janus11_mode[Player] != 3 && g_clip_ammo[Player]) mujel(Player)
  484. }
  485.  
  486. public fw_JANUS11_PrimaryAttack_Post(Weapon)
  487. {
  488. g_IsInPrimaryAttack = 0
  489. new Player = get_pdata_cbase(Weapon, 41, 4)
  490.  
  491. new szClip, szAmmo
  492. get_user_weapon(Player, szClip, szAmmo)
  493.  
  494. if(!is_user_alive(Player))
  495. return
  496.  
  497. if(g_has_janus11[Player] && janus11_mode[Player] != 3)
  498. {
  499. if (!g_clip_ammo[Player])
  500. return
  501.  
  502. g_reload[Player] = 0
  503. remove_task( Player + 1331 )
  504. new Float:push[3]
  505. pev(Player,pev_punchangle,push)
  506. xs_vec_sub(push,cl_pushangle[Player],push)
  507.  
  508. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_janus11),push)
  509. xs_vec_add(push,cl_pushangle[Player],push)
  510. set_pev(Player,pev_punchangle,push)
  511.  
  512. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  513.  
  514. if(janus11_signal[Player] >= get_pcvar_num(cvar_transform_janus11))
  515. {
  516. janus11_mode[Player] = 2
  517. }
  518.  
  519. if(janus11_mode[Player] == 2) UTIL_PlayWeaponAnimation(Player, 15)
  520. else UTIL_PlayWeaponAnimation(Player, JANUS11_SHOOT1)
  521.  
  522. set_weapons_timeidle(Player, CSW_M3, 0.7)
  523. set_player_nextattackx(Player, 0.7)
  524. }
  525. else
  526. {
  527. if(!g_has_janus11[Player])
  528. return
  529.  
  530. new Float:push[3]
  531. pev(Player,pev_punchangle,push)
  532. xs_vec_sub(push,cl_pushangle[Player],push)
  533.  
  534. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_janus11),push)
  535. xs_vec_add(push,cl_pushangle[Player],push)
  536. set_pev(Player,pev_punchangle,push)
  537.  
  538. emit_sound(Player, CHAN_WEAPON, "weapons/janus11-4.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  539.  
  540. fm_set_weapon_ammo(Weapon, szClip++)
  541. set_weapons_timeidle(Player, CSW_M3, 0.45)
  542. set_player_nextattackx(Player, 0.45)
  543. UTIL_PlayWeaponAnimation(Player, 8)
  544. }
  545. }
  546.  
  547. public fw_CmdStart(id, uc_handle, seed)
  548. {
  549. new ammo, clip, weapon = get_user_weapon(id, clip, ammo)
  550. if (!g_has_janus11[id] || weapon != CSW_M3 || !is_user_alive(id))
  551. return
  552.  
  553. static CurButton
  554. CurButton = get_uc(uc_handle, UC_Buttons)
  555.  
  556. if(CurButton & IN_ATTACK)
  557. {
  558. new wpn = fm_get_user_weapon_entity(id, get_user_weapon(id))
  559.  
  560. new Id = pev( wpn, pev_owner ), clip, bpammo
  561. get_user_weapon( Id, clip, bpammo )
  562. if( g_has_janus11[ Id ] ) {
  563. if( clip >= 2 ) {
  564. if( g_reload[Id] ) {
  565. remove_task( Id + 1331 )
  566. g_reload[Id] = 0
  567. UTIL_PlayWeaponAnimation(Id,JANUS11_SHOOT1)
  568. emit_sound(Id, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  569. push(id)
  570. set_weapons_timeidle(id, CSW_M3, 0.7)
  571. set_player_nextattackx(id, 0.7)
  572.  
  573. ExecuteHamB(Ham_Weapon_PrimaryAttack, wpn)
  574. }
  575. }
  576. else if( clip == 1 )
  577. {
  578. if(get_pdata_float(Id, 83, 4) <= 0.3)
  579. {
  580. if( g_reload[Id] ) {
  581. remove_task( Id + 1331 )
  582. g_reload[Id] = 0
  583. UTIL_PlayWeaponAnimation(Id,JANUS11_SHOOT1)
  584. emit_sound(Id, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  585. push(id)
  586. set_weapons_timeidle(id, CSW_M3, 0.7)
  587. set_player_nextattackx(id, 0.7)
  588.  
  589. ExecuteHamB(Ham_Weapon_PrimaryAttack, wpn)
  590. }
  591. }
  592. }
  593. }
  594. }
  595.  
  596. else if(CurButton & IN_ATTACK2)
  597. {
  598. if(janus11_mode[id] == 2 && get_pdata_float(id, 83, 5) <= 0.0)
  599. {
  600. new clip, bpammo, weapon = find_ent_by_owner( -1, "weapon_m3", id )
  601. get_user_weapon(id, clip, bpammo )
  602.  
  603. if(clip == 0) cs_set_weapon_ammo( weapon, 1 )
  604.  
  605. remove_task(id)
  606. remove_task( id + 1331 )
  607. g_reload[id] = 0
  608. UTIL_PlayWeaponAnimation(id, 1)
  609. janus11_mode[id] = 3
  610. set_weapons_timeidle(id, CSW_M3, 1.7)
  611. set_player_nextattackx(id, 1.7)
  612. set_task(7.4, "back_normal", id)
  613. set_task(7.4, "back_normal2", id)
  614. }
  615. }
  616. }
  617.  
  618. public mujel(id)
  619. {
  620. static Float:Origin[3], TE_FLAG
  621. get_position(id, 32.0, 6.0, -15.0, Origin)
  622.  
  623. TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  624. TE_FLAG |= TE_EXPLFLAG_NOSOUND
  625. TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  626.  
  627. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, Origin, id)
  628. write_byte(TE_EXPLOSION)
  629. engfunc(EngFunc_WriteCoord, Origin[0])
  630. engfunc(EngFunc_WriteCoord, Origin[1])
  631. engfunc(EngFunc_WriteCoord, Origin[2])
  632. write_short(muzzle)
  633. write_byte(6)
  634. write_byte(40)
  635. write_byte(TE_FLAG)
  636. message_end()
  637. }
  638.  
  639. public back_normal(id)
  640. {
  641. if(get_user_weapon(id) != CSW_M3 || !g_has_janus11[id])
  642. return
  643.  
  644. UTIL_PlayWeaponAnimation(id, 10)
  645. set_weapons_timeidle(id, CSW_M3, 1.4)
  646. set_player_nextattackx(id, 1.4)
  647. }
  648.  
  649. public back_normal2(id)
  650. {
  651. janus11_mode[id] = 1
  652. janus11_signal[id] = 0
  653. }
  654.  
  655. public fw_janus11idleanim(Weapon)
  656. {
  657. new id = get_pdata_cbase(Weapon, 41, 4)
  658.  
  659. if(!is_user_alive(id) || !g_has_janus11[id] || get_user_weapon(id) != CSW_M3)
  660. return HAM_IGNORED;
  661.  
  662. if(janus11_mode[id] == 1 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  663. {
  664. UTIL_PlayWeaponAnimation(id, 0)
  665. set_pdata_float(Weapon, 48, 20.0, 4)
  666. return HAM_SUPERCEDE;
  667. }
  668.  
  669. if(janus11_mode[id] == 3 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  670. {
  671. UTIL_PlayWeaponAnimation(id, 7)
  672. set_pdata_float(Weapon, 48, 20.0, 4)
  673. return HAM_SUPERCEDE;
  674. }
  675.  
  676. if(janus11_mode[id] == 2 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  677. {
  678. UTIL_PlayWeaponAnimation(id, 11)
  679. set_pdata_float(Weapon, 48, 20.0, 4)
  680. return HAM_SUPERCEDE;
  681. }
  682.  
  683. return HAM_IGNORED;
  684. }
  685.  
  686. public push(id)
  687. {
  688. static Float:vektor[3]
  689. vektor[0] = -3.0
  690. vektor[1] = 0.0
  691. vektor[2] = 0.0
  692.  
  693. set_pev(id, pev_punchangle, vektor)
  694. }
  695.  
  696. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  697. {
  698. if ((eventid != g_orig_event_janus11) || !g_IsInPrimaryAttack)
  699. return FMRES_IGNORED
  700.  
  701. if (!(1 <= invoker <= g_MaxPlayers))
  702. return FMRES_IGNORED
  703.  
  704. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  705. return FMRES_SUPERCEDE
  706. }
  707.  
  708. public JANUS11_Reload( wpn ) {
  709. if(janus11_mode[pev( wpn, pev_owner )] == 3)
  710. return HAM_SUPERCEDE
  711.  
  712. if( g_has_janus11[ pev( wpn, pev_owner ) ] ) {
  713. JANUS11_Reload_Post( wpn )
  714. return HAM_SUPERCEDE
  715. }
  716. return HAM_IGNORED
  717. }
  718.  
  719. public JANUS11_Reload_Post(weapon) {
  720. new id = pev( weapon, pev_owner )
  721. if(janus11_mode[id] == 3)
  722. return HAM_SUPERCEDE
  723. new clip, bpammo
  724. get_user_weapon(id, clip, bpammo )
  725. if( g_has_janus11[ id ] && clip < get_pcvar_num(cvar_clip_janus11) && bpammo > 0 ) {
  726. if(!task_exists( id+1331 )) set_task( 0.1, "reload", id+1331 )
  727. }
  728. return HAM_IGNORED
  729. }
  730.  
  731. public reload( id ) {
  732. id -= 1331
  733. new clip, bpammo, weapon = find_ent_by_owner( -1, "weapon_m3", id )
  734. get_user_weapon(id, clip, bpammo )
  735. if(!g_reload[id]) {
  736. UTIL_PlayWeaponAnimation( id, 5 )
  737. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 14)
  738. else UTIL_PlayWeaponAnimation(id, 5)
  739. g_reload[id] = 1
  740. set_reload_timeidle(id, CSW_M3, 0.2)
  741. set_task( 0.5, "reload", id+1331 )
  742. return
  743. }
  744.  
  745. if( clip > get_pcvar_num(cvar_clip_janus11)-1 || bpammo < 1 ) {
  746. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 13)
  747. else UTIL_PlayWeaponAnimation(id, 4)
  748. g_reload[id] = 0
  749. set_reload_timeidle(id, CSW_M3, 0.9)
  750. return
  751. }
  752. cs_set_user_bpammo( id, CSW_M3, bpammo - 1 )
  753. cs_set_weapon_ammo( weapon, clip + 1 )
  754. set_reload_timeidle(id, CSW_M3, 0.6)
  755. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 12)
  756. else UTIL_PlayWeaponAnimation(id, 3)
  757. set_task( 0.4, "reload", id+1331 )
  758. emit_sound(id, CHAN_WEAPON, "weapons/uts15_reload.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  759. }
  760.  
  761. stock fm_cs_get_current_weapon_ent(id)
  762. {
  763. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  764. }
  765.  
  766. stock fm_set_weapon_ammo(entity, amount)
  767. {
  768. set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
  769. }
  770.  
  771. stock fm_cs_get_weapon_ent_owner(ent)
  772. {
  773. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  774. }
  775.  
  776. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  777. {
  778. set_pev(Player, pev_weaponanim, Sequence)
  779.  
  780. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  781. write_byte(Sequence)
  782. write_byte(pev(Player, pev_body))
  783. message_end()
  784. }
  785.  
  786. stock set_player_nextattackx(id, Float:nexttime)
  787. {
  788. if(!is_user_alive(id))
  789. return
  790.  
  791. set_pdata_float(id, m_flNextAttack, nexttime, 5)
  792. }
  793.  
  794. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  795. {
  796. new Float:vfEnd[3], viEnd[3]
  797. get_user_origin(id, viEnd, 3)
  798. IVecFVec(viEnd, vfEnd)
  799.  
  800. new Float:fOrigin[3], Float:fAngle[3]
  801.  
  802. pev(id, pev_origin, fOrigin)
  803. pev(id, pev_view_ofs, fAngle)
  804.  
  805. xs_vec_add(fOrigin, fAngle, fOrigin)
  806.  
  807. new Float:fAttack[3]
  808.  
  809. xs_vec_sub(vfEnd, fOrigin, fAttack)
  810. xs_vec_sub(vfEnd, fOrigin, fAttack)
  811.  
  812. new Float:fRate
  813.  
  814. fRate = fDis / vector_length(fAttack)
  815. xs_vec_mul_scalar(fAttack, fRate, fAttack)
  816.  
  817. xs_vec_add(fOrigin, fAttack, output)
  818. }
  819.  
  820. stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle)
  821. {
  822. if(!is_user_alive(id))
  823. return
  824.  
  825. static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
  826. if(!pev_valid(entwpn))
  827. return
  828.  
  829. set_pdata_float(entwpn, 46, TimeIdle, WEAP_LINUX_XTRA_OFF)
  830. set_pdata_float(entwpn, 47, TimeIdle, WEAP_LINUX_XTRA_OFF)
  831. set_pdata_float(entwpn, 48, TimeIdle + 1.0, WEAP_LINUX_XTRA_OFF)
  832. }
  833.  
  834. stock set_reload_timeidle(id, WeaponId ,Float:TimeIdle)
  835. {
  836. if(!is_user_alive(id))
  837. return
  838.  
  839. static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
  840. if(!pev_valid(entwpn))
  841. return
  842.  
  843. set_pdata_float(entwpn, 48, TimeIdle + 1.0, WEAP_LINUX_XTRA_OFF)
  844. }
  845.  
  846. stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
  847. {
  848. new_velocity[0] = origin2[0] - origin1[0]
  849. new_velocity[1] = origin2[1] - origin1[1]
  850. new_velocity[2] = origin2[2] - origin1[2]
  851. new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
  852. new_velocity[0] *= num
  853. new_velocity[1] *= num
  854. new_velocity[2] *= num
  855.  
  856. return 1;
  857. }
  858.  
  859. stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
  860. {
  861. static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
  862.  
  863. pev(id, pev_origin, vOrigin)
  864. pev(id, pev_view_ofs, vUp) //for player
  865. xs_vec_add(vOrigin, vUp, vOrigin)
  866. pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
  867.  
  868. angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors
  869. angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight)
  870. angle_vector(vAngle,ANGLEVECTOR_UP, vUp)
  871.  
  872. vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
  873. vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
  874. vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
  875. }
  876.  
  877.  
  878. stock drop_weapons(id, dropwhat)
  879. {
  880. static weapons[32], num, i, weaponid
  881. num = 0
  882. get_user_weapons(id, weapons, num)
  883.  
  884. for (i = 0; i < num; i++)
  885. {
  886. weaponid = weapons[i]
  887.  
  888. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  889. {
  890. static wname[32]
  891. get_weaponname(weaponid, wname, sizeof wname - 1)
  892. engclient_cmd(id, "drop", wname)
  893. }
  894. }
  895. }


Recoil:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fakemeta_util>
  5. #include <fun>
  6. #include <hamsandwich>
  7. #include <xs>
  8. #include <cstrike>
  9. #include <zombieplague>
  10.  
  11. #define ENG_NULLENT -1
  12. #define EV_INT_WEAPONKEY EV_INT_impulse
  13. #define JANUS11_WEAPONKEY 702453
  14. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  15.  
  16. const USE_STOPPED = 0
  17. const OFFSET_ACTIVE_ITEM = 373
  18. const OFFSET_WEAPONOWNER = 41
  19. const OFFSET_LINUX = 5
  20. const OFFSET_LINUX_WEAPONS = 4
  21.  
  22. #if cellbits == 32
  23. const OFFSET_CLIPAMMO = 51
  24. #else
  25. const OFFSET_CLIPAMMO = 65
  26. #endif
  27.  
  28. #define WEAP_LINUX_XTRA_OFF 4
  29. #define m_fKnown 44
  30. #define m_flNextPrimaryAttack 46
  31. #define m_flNextSecondaryAttack 47
  32. #define m_flTimeWeaponIdle 48
  33. #define m_iClip 51
  34. #define m_fInReload 54
  35. #define m_fInSpecialReload 55
  36. #define PLAYER_LINUX_XTRA_OFF 5
  37. #define m_flNextAttack 83
  38.  
  39. #define JANUS11_SHOOT1 2
  40. #define JANUS11_DRAW 6
  41. #define JANUS11_RELOAD_AFTER 4
  42. #define janus11_READY 15
  43.  
  44. new gmsgWeaponList, sTrail
  45.  
  46. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  47.  
  48. new const Fire_Sounds[][] = { "weapons/janus11-1.wav", "weapons/janus11-1.wav", "weapons/janus11-1.wav"}
  49.  
  50. new JANUS11_V_MODEL[64] = "models/v_janus11.mdl"
  51. new JANUS11_P_MODEL[64] = "models/p_janus11.mdl"
  52. new JANUS11_W_MODEL[64] = "models/w_janus11.mdl"
  53. new const GRENADE_MODEL[] = "models/grenade.mdl"
  54.  
  55. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  56.  
  57. new cvar_dmg1_janus11, cvar_dmg2_janus11, cvar_recoil_janus11, cvar_transform_janus11, cvar_clip_janus11, cvar_janus11_ammo, g_has_janus11[33], g_Ham_Bot, muzzle
  58.  
  59. new g_MaxPlayers, g_orig_event_janus11, g_IsInPrimaryAttack, g_janus11
  60. new Float:cl_pushangle[33][3], m_iBlood[2]
  61. new g_clip_ammo[33], oldweap[33], g_reload[33], janus11_mode[33], janus11_signal[33], Float:StartOrigin2[3]
  62. const PRIMARY_WEAPONS_BIT_SUM =
  63. (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
  64. CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
  65. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  66. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
  67. "weapon_mp5navy", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  68. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  69. "weapon_ak47", "weapon_knife", "weapon_p90" }
  70.  
  71. public plugin_init()
  72. {
  73. register_plugin("Janus-11", "1.0", "m4m3ts")
  74. register_cvar("janus11_version", "m4m3ts", FCVAR_SERVER|FCVAR_SPONLY)
  75. register_event("CurWeapon","CurrentWeapon","be","1=1")
  76. RegisterHam(Ham_Item_AddToPlayer, "weapon_m3", "fw_JANUS11_AddToPlayer")
  77. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  78. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  79. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  80. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  81.  
  82. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  83. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  84.  
  85. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m3", "fw_JANUS11_PrimaryAttack")
  86. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m3", "fw_JANUS11_PrimaryAttack_Post", 1)
  87. RegisterHam(Ham_Weapon_Reload, "weapon_m3", "JANUS11_Reload")
  88. RegisterHam(Ham_Weapon_Reload, "weapon_m3", "JANUS11_Reload_Post", 1)
  89. RegisterHam(Ham_Weapon_WeaponIdle, "weapon_m3", "fw_janus11idleanim", 1)
  90.  
  91. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  92.  
  93. register_forward(FM_CmdStart, "fw_CmdStart")
  94. register_forward(FM_SetModel, "fw_SetModel")
  95. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  96. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  97.  
  98. gmsgWeaponList = get_user_msgid("WeaponList")
  99.  
  100. RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
  101. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  102. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  103. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  104. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  105. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  106. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  107. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  108.  
  109. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  110.  
  111. cvar_recoil_janus11 = register_cvar("zp_janus11_recoil", "0.65")
  112. cvar_clip_janus11 = register_cvar("zp_janus11_clip", "15")
  113. cvar_janus11_ammo = register_cvar("zp_janus11_ammo", "64")
  114. cvar_dmg1_janus11 = register_cvar("zp_janus11_dmg1", "15.0")
  115. cvar_dmg2_janus11 = register_cvar("zp_janus11_dmg2", "30.0")
  116. cvar_transform_janus11 = register_cvar("zp_janus11_transform", "15")
  117.  
  118. g_janus11 = zp_register_extra_item("Janus-11", 20, ZP_TEAM_HUMAN)
  119.  
  120. g_MaxPlayers = get_maxplayers()
  121. }
  122.  
  123. public plugin_precache()
  124. {
  125. precache_model(JANUS11_V_MODEL)
  126. precache_model(JANUS11_P_MODEL)
  127. precache_model(JANUS11_W_MODEL)
  128. for(new i = 0; i < sizeof Fire_Sounds; i++)
  129. precache_sound(Fire_Sounds[i])
  130.  
  131. precache_model(GRENADE_MODEL)
  132. sTrail = precache_model("sprites/laserbeam.spr")
  133. muzzle = engfunc(EngFunc_PrecacheModel, "sprites/smokepuff.spr")
  134.  
  135. precache_sound("weapons/janus11_after_reload.wav")
  136. precache_sound("weapons/janus11_change1.wav")
  137. precache_sound("weapons/janus11_change2.wav")
  138. precache_sound("weapons/janus11_draw.wav")
  139. precache_sound("weapons/janus11_insert.wav")
  140. precache_sound("weapons/janus11-4.wav")
  141. precache_sound("weapons/uts15_reload.wav")
  142.  
  143. precache_generic("sprites/weapon_janus11.txt")
  144.  
  145. precache_generic("sprites/640hud107.spr")
  146. precache_generic("sprites/640hud13.spr")
  147.  
  148. register_clcmd("weapon_janus11", "weapon_hook")
  149.  
  150. m_iBlood[0] = precache_model("sprites/blood.spr")
  151. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  152.  
  153. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  154. }
  155.  
  156. public weapon_hook(id)
  157. {
  158. engclient_cmd(id, "weapon_m3")
  159. return PLUGIN_HANDLED
  160. }
  161.  
  162. public client_putinserver(id)
  163. {
  164. if(!g_Ham_Bot && is_user_bot(id))
  165. {
  166. g_Ham_Bot = 1
  167. set_task(0.1, "Do_RegisterHam_Bot", id)
  168. }
  169. }
  170.  
  171. public Do_RegisterHam_Bot(id)
  172. {
  173. RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
  174. RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack", 1)
  175. RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
  176. }
  177.  
  178. public zp_extra_item_selected(id, itemid)
  179. {
  180. if(itemid == g_janus11) give_janus11(id)
  181. }
  182.  
  183. public nyala(id)
  184. {
  185. janus11_mode[id] = 2
  186. }
  187.  
  188. public zp_user_infected_post(id) g_has_janus11[id] = false
  189.  
  190.  
  191. public fw_PlayerKilled(id)
  192. {
  193. g_has_janus11[id] = false
  194. }
  195.  
  196. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  197. {
  198. if(!is_user_alive(iAttacker))
  199. return
  200.  
  201. new g_currentweapon = get_user_weapon(iAttacker)
  202.  
  203. if(g_currentweapon != CSW_M3 || !g_has_janus11[iAttacker])
  204. return
  205.  
  206. if(janus11_mode[iAttacker] == 3) SetHamParamFloat(3, get_pcvar_float(cvar_dmg2_janus11))
  207. else SetHamParamFloat(3, get_pcvar_float(cvar_dmg1_janus11))
  208.  
  209.  
  210. static Float:flEnd[3]
  211. get_tr2(ptr, TR_vecEndPos, flEnd)
  212.  
  213. if(!is_user_alive(iEnt))
  214. {
  215. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  216. write_byte(TE_DECAL)
  217. write_coord_f(flEnd[0])
  218. write_coord_f(flEnd[1])
  219. write_coord_f(flEnd[2])
  220. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  221. write_short(iEnt)
  222. message_end()
  223.  
  224. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  225. write_byte(TE_WORLDDECAL)
  226. write_coord_f(flEnd[0])
  227. write_coord_f(flEnd[1])
  228. write_coord_f(flEnd[2])
  229. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  230. message_end()
  231.  
  232. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  233. write_byte(TE_GUNSHOTDECAL)
  234. write_coord_f(flEnd[0])
  235. write_coord_f(flEnd[1])
  236. write_coord_f(flEnd[2])
  237. write_short(iAttacker)
  238. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  239. message_end()
  240. }
  241.  
  242. if(janus11_mode[iAttacker] == 3)
  243. {
  244. get_position(iAttacker, 20.0, 5.0, 5.0, StartOrigin2)
  245.  
  246. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  247. write_byte(TE_BEAMPOINTS)
  248. engfunc(EngFunc_WriteCoord, StartOrigin2[0])
  249. engfunc(EngFunc_WriteCoord, StartOrigin2[1])
  250. engfunc(EngFunc_WriteCoord, StartOrigin2[2] - 10.0)
  251. engfunc(EngFunc_WriteCoord, flEnd[0])
  252. engfunc(EngFunc_WriteCoord, flEnd[1])
  253. engfunc(EngFunc_WriteCoord, flEnd[2])
  254. write_short(sTrail)
  255. write_byte(0) // start frame
  256. write_byte(0) // framerate
  257. write_byte(5) // life
  258. write_byte(5) // line width
  259. write_byte(0) // amplitude
  260. write_byte(220)
  261. write_byte(88)
  262. write_byte(0) // blue
  263. write_byte(255) // brightness
  264. write_byte(0) // speed
  265. message_end()
  266. }
  267. }
  268.  
  269. public fwPrecacheEvent_Post(type, const name[])
  270. {
  271. if (equal("events/m3.sc", name))
  272. {
  273. g_orig_event_janus11 = get_orig_retval()
  274. return FMRES_HANDLED
  275. }
  276. return FMRES_IGNORED
  277. }
  278.  
  279. public client_connect(id)
  280. {
  281. g_has_janus11[id] = false
  282. }
  283.  
  284. public client_disconnect(id)
  285. {
  286. g_has_janus11[id] = false
  287. }
  288.  
  289. public fw_SetModel(entity, model[])
  290. {
  291. if(!is_valid_ent(entity))
  292. return FMRES_IGNORED
  293.  
  294. static szClassName[33]
  295. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  296.  
  297. if(!equal(szClassName, "weaponbox"))
  298. return FMRES_IGNORED
  299.  
  300. static iOwner
  301.  
  302. iOwner = entity_get_edict(entity, EV_ENT_owner)
  303.  
  304. if(equal(model, "models/w_m3.mdl"))
  305. {
  306. static iStoredAugID
  307.  
  308. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_m3", entity)
  309.  
  310. if(!is_valid_ent(iStoredAugID))
  311. return FMRES_IGNORED
  312.  
  313. if(g_has_janus11[iOwner])
  314. {
  315. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, JANUS11_WEAPONKEY)
  316.  
  317. g_has_janus11[iOwner] = false
  318.  
  319. entity_set_model(entity, JANUS11_W_MODEL)
  320.  
  321. return FMRES_SUPERCEDE
  322. }
  323. }
  324. return FMRES_IGNORED
  325. }
  326.  
  327. public give_janus11(id)
  328. {
  329. drop_weapons(id, 1)
  330. new iWep2 = give_item(id,"weapon_m3")
  331. if( iWep2 > 0 )
  332. {
  333. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_janus11))
  334. cs_set_user_bpammo (id, CSW_M3, get_pcvar_num(cvar_janus11_ammo))
  335. UTIL_PlayWeaponAnimation(id, JANUS11_DRAW)
  336. set_weapons_timeidle(id, CSW_M3, 1.0)
  337. set_player_nextattackx(id, 1.0)
  338. }
  339. g_has_janus11[id] = true
  340. janus11_mode[id] = 1
  341. janus11_signal[id] = 0
  342. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  343. write_string("weapon_janus11")
  344. write_byte(5)
  345. write_byte(32)
  346. write_byte(-1)
  347. write_byte(-1)
  348. write_byte(0)
  349. write_byte(5)
  350. write_byte(21)
  351. write_byte(0)
  352. message_end()
  353. }
  354.  
  355. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  356. {
  357. if (victim != attacker && is_user_connected(attacker))
  358. {
  359. if(get_user_weapon(attacker) == CSW_M3)
  360. {
  361. if(g_has_janus11[attacker])
  362. {
  363. if(janus11_mode[attacker] != 3)
  364. {
  365. janus11_signal[attacker] ++
  366. }
  367. }
  368. }
  369. }
  370. }
  371.  
  372. public fw_JANUS11_AddToPlayer(janus11, id)
  373. {
  374. if(!is_valid_ent(janus11) || !is_user_connected(id))
  375. return HAM_IGNORED
  376.  
  377. if(entity_get_int(janus11, EV_INT_WEAPONKEY) == JANUS11_WEAPONKEY)
  378. {
  379. g_has_janus11[id] = true
  380.  
  381. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  382. write_string("weapon_janus11")
  383. write_byte(5)
  384. write_byte(32)
  385. write_byte(-1)
  386. write_byte(-1)
  387. write_byte(0)
  388. write_byte(5)
  389. write_byte(21)
  390. write_byte(0)
  391. message_end()
  392.  
  393. entity_set_int(janus11, EV_INT_WEAPONKEY, 0)
  394.  
  395. return HAM_HANDLED
  396. }
  397. return HAM_IGNORED
  398. }
  399.  
  400. public fw_UseStationary_Post(entity, caller, activator, use_type)
  401. {
  402. if (use_type == USE_STOPPED && is_user_connected(caller))
  403. replace_weapon_models(caller, get_user_weapon(caller))
  404. }
  405.  
  406. public fw_Item_Deploy_Post(weapon_ent)
  407. {
  408. static owner
  409. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  410.  
  411. static weaponid
  412. weaponid = cs_get_weapon_id(weapon_ent)
  413.  
  414. replace_weapon_models(owner, weaponid)
  415. }
  416.  
  417. public CurrentWeapon(id)
  418. {
  419. if( read_data(2) != CSW_M3 ) {
  420. if( g_reload[id] ) {
  421. g_reload[id] = 0
  422. remove_task( id + 1331 )
  423. }
  424. }
  425. replace_weapon_models(id, read_data(2))
  426. }
  427.  
  428. replace_weapon_models(id, weaponid)
  429. {
  430. switch (weaponid)
  431. {
  432. case CSW_M3:
  433. {
  434. if(g_has_janus11[id])
  435. {
  436. set_pev(id, pev_viewmodel2, JANUS11_V_MODEL)
  437. set_pev(id, pev_weaponmodel2, JANUS11_P_MODEL)
  438. if(oldweap[id] != CSW_M3)
  439. {
  440. if(janus11_mode[id] == 1) UTIL_PlayWeaponAnimation(id, JANUS11_DRAW)
  441. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 16)
  442. if(janus11_mode[id] == 3) UTIL_PlayWeaponAnimation(id, 9)
  443. set_weapons_timeidle(id, CSW_M3, 1.0)
  444. set_player_nextattackx(id, 1.0)
  445.  
  446. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  447. write_string("weapon_janus11")
  448. write_byte(5)
  449. write_byte(32)
  450. write_byte(-1)
  451. write_byte(-1)
  452. write_byte(0)
  453. write_byte(5)
  454. write_byte(CSW_M3)
  455. message_end()
  456. }
  457. }
  458. }
  459. }
  460. oldweap[id] = weaponid
  461. }
  462.  
  463. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  464. {
  465. if(!is_user_alive(Player) || get_user_weapon(Player) != CSW_M3 || !g_has_janus11[Player])
  466. return FMRES_IGNORED
  467.  
  468. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  469. return FMRES_HANDLED
  470. }
  471.  
  472. public fw_JANUS11_PrimaryAttack(Weapon)
  473. {
  474. new Player = get_pdata_cbase(Weapon, 41, 4)
  475.  
  476. if (!g_has_janus11[Player])
  477. return
  478.  
  479. g_IsInPrimaryAttack = 1
  480. pev(Player,pev_punchangle,cl_pushangle[Player])
  481.  
  482. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  483. if(janus11_mode[Player] != 3 && g_clip_ammo[Player]) mujel(Player)
  484. }
  485.  
  486. public fw_JANUS11_PrimaryAttack_Post(Weapon)
  487. {
  488. g_IsInPrimaryAttack = 0
  489. new Player = get_pdata_cbase(Weapon, 41, 4)
  490.  
  491. new szClip, szAmmo
  492. get_user_weapon(Player, szClip, szAmmo)
  493.  
  494. if(!is_user_alive(Player))
  495. return
  496.  
  497. if(g_has_janus11[Player] && janus11_mode[Player] != 3)
  498. {
  499. if (!g_clip_ammo[Player])
  500. return
  501.  
  502. g_reload[Player] = 0
  503. remove_task( Player + 1331 )
  504. new Float:push[3]
  505. pev(Player,pev_punchangle,push)
  506. xs_vec_sub(push,cl_pushangle[Player],push)
  507.  
  508. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_janus11),push)
  509. xs_vec_add(push,cl_pushangle[Player],push)
  510. set_pev(Player,pev_punchangle,push)
  511.  
  512. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  513.  
  514. if(janus11_signal[Player] >= get_pcvar_num(cvar_transform_janus11))
  515. {
  516. janus11_mode[Player] = 2
  517. }
  518.  
  519. if(janus11_mode[Player] == 2) UTIL_PlayWeaponAnimation(Player, 15)
  520. else UTIL_PlayWeaponAnimation(Player, JANUS11_SHOOT1)
  521.  
  522. set_weapons_timeidle(Player, CSW_M3, 0.7)
  523. set_player_nextattackx(Player, 0.7)
  524. }
  525. else
  526. {
  527. if(!g_has_janus11[Player])
  528. return
  529.  
  530. new Float:push[3]
  531. pev(Player,pev_punchangle,push)
  532. xs_vec_sub(push,cl_pushangle[Player],push)
  533.  
  534. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_janus11),push)
  535. xs_vec_add(push,cl_pushangle[Player],push)
  536. set_pev(Player,pev_punchangle,push)
  537.  
  538. emit_sound(Player, CHAN_WEAPON, "weapons/janus11-4.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  539.  
  540. fm_set_weapon_ammo(Weapon, szClip++)
  541. set_weapons_timeidle(Player, CSW_M3, 0.45)
  542. set_player_nextattackx(Player, 0.45)
  543. UTIL_PlayWeaponAnimation(Player, 8)
  544. }
  545. }
  546.  
  547. public fw_CmdStart(id, uc_handle, seed)
  548. {
  549. new ammo, clip, weapon = get_user_weapon(id, clip, ammo)
  550. if (!g_has_janus11[id] || weapon != CSW_M3 || !is_user_alive(id))
  551. return
  552.  
  553. static CurButton
  554. CurButton = get_uc(uc_handle, UC_Buttons)
  555.  
  556. if(CurButton & IN_ATTACK)
  557. {
  558. new wpn = fm_get_user_weapon_entity(id, get_user_weapon(id))
  559.  
  560. new Id = pev( wpn, pev_owner ), clip, bpammo
  561. get_user_weapon( Id, clip, bpammo )
  562. if( g_has_janus11[ Id ] ) {
  563. if( clip >= 2 ) {
  564. if( g_reload[Id] ) {
  565. remove_task( Id + 1331 )
  566. g_reload[Id] = 0
  567. UTIL_PlayWeaponAnimation(Id,JANUS11_SHOOT1)
  568. emit_sound(Id, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  569. push(id)
  570. set_weapons_timeidle(id, CSW_M3, 0.7)
  571. set_player_nextattackx(id, 0.7)
  572.  
  573. ExecuteHamB(Ham_Weapon_PrimaryAttack, wpn)
  574. }
  575. }
  576. else if( clip == 1 )
  577. {
  578. if(get_pdata_float(Id, 83, 4) <= 0.3)
  579. {
  580. if( g_reload[Id] ) {
  581. remove_task( Id + 1331 )
  582. g_reload[Id] = 0
  583. UTIL_PlayWeaponAnimation(Id,JANUS11_SHOOT1)
  584. emit_sound(Id, CHAN_WEAPON, Fire_Sounds[random( sizeof(Fire_Sounds))], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  585. push(id)
  586. set_weapons_timeidle(id, CSW_M3, 0.7)
  587. set_player_nextattackx(id, 0.7)
  588.  
  589. ExecuteHamB(Ham_Weapon_PrimaryAttack, wpn)
  590. }
  591. }
  592. }
  593. }
  594. }
  595.  
  596. else if(CurButton & IN_ATTACK2)
  597. {
  598. if(janus11_mode[id] == 2 && get_pdata_float(id, 83, 5) <= 0.0)
  599. {
  600. new clip, bpammo, weapon = find_ent_by_owner( -1, "weapon_m3", id )
  601. get_user_weapon(id, clip, bpammo )
  602.  
  603. if(clip == 0) cs_set_weapon_ammo( weapon, 1 )
  604.  
  605. remove_task(id)
  606. remove_task( id + 1331 )
  607. g_reload[id] = 0
  608. UTIL_PlayWeaponAnimation(id, 1)
  609. janus11_mode[id] = 3
  610. set_weapons_timeidle(id, CSW_M3, 1.7)
  611. set_player_nextattackx(id, 1.7)
  612. set_task(7.4, "back_normal", id)
  613. set_task(7.4, "back_normal2", id)
  614. }
  615. }
  616. }
  617.  
  618. public mujel(id)
  619. {
  620. static Float:Origin[3], TE_FLAG
  621. get_position(id, 32.0, 6.0, -15.0, Origin)
  622.  
  623. TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  624. TE_FLAG |= TE_EXPLFLAG_NOSOUND
  625. TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  626.  
  627. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, Origin, id)
  628. write_byte(TE_EXPLOSION)
  629. engfunc(EngFunc_WriteCoord, Origin[0])
  630. engfunc(EngFunc_WriteCoord, Origin[1])
  631. engfunc(EngFunc_WriteCoord, Origin[2])
  632. write_short(muzzle)
  633. write_byte(6)
  634. write_byte(40)
  635. write_byte(TE_FLAG)
  636. message_end()
  637. }
  638.  
  639. public back_normal(id)
  640. {
  641. if(get_user_weapon(id) != CSW_M3 || !g_has_janus11[id])
  642. return
  643.  
  644. UTIL_PlayWeaponAnimation(id, 10)
  645. set_weapons_timeidle(id, CSW_M3, 1.4)
  646. set_player_nextattackx(id, 1.4)
  647. }
  648.  
  649. public back_normal2(id)
  650. {
  651. janus11_mode[id] = 1
  652. janus11_signal[id] = 0
  653. }
  654.  
  655. public fw_janus11idleanim(Weapon)
  656. {
  657. new id = get_pdata_cbase(Weapon, 41, 4)
  658.  
  659. if(!is_user_alive(id) || !g_has_janus11[id] || get_user_weapon(id) != CSW_M3)
  660. return HAM_IGNORED;
  661.  
  662. if(janus11_mode[id] == 1 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  663. {
  664. UTIL_PlayWeaponAnimation(id, 0)
  665. set_pdata_float(Weapon, 48, 20.0, 4)
  666. return HAM_SUPERCEDE;
  667. }
  668.  
  669. if(janus11_mode[id] == 3 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  670. {
  671. UTIL_PlayWeaponAnimation(id, 7)
  672. set_pdata_float(Weapon, 48, 20.0, 4)
  673. return HAM_SUPERCEDE;
  674. }
  675.  
  676. if(janus11_mode[id] == 2 && get_pdata_float(Weapon, 48, 4) <= 0.25)
  677. {
  678. UTIL_PlayWeaponAnimation(id, 11)
  679. set_pdata_float(Weapon, 48, 20.0, 4)
  680. return HAM_SUPERCEDE;
  681. }
  682.  
  683. return HAM_IGNORED;
  684. }
  685.  
  686. public push(id)
  687. {
  688. static Float:vektor[3]
  689. vektor[0] = -3.0
  690. vektor[1] = 0.0
  691. vektor[2] = 0.0
  692.  
  693. set_pev(id, pev_punchangle, vektor)
  694. }
  695.  
  696. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  697. {
  698. if ((eventid != g_orig_event_janus11) || !g_IsInPrimaryAttack)
  699. return FMRES_IGNORED
  700.  
  701. if (!(1 <= invoker <= g_MaxPlayers))
  702. return FMRES_IGNORED
  703.  
  704. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  705. return FMRES_SUPERCEDE
  706. }
  707.  
  708. public JANUS11_Reload( wpn ) {
  709. if(janus11_mode[pev( wpn, pev_owner )] == 3)
  710. return HAM_SUPERCEDE
  711.  
  712. if( g_has_janus11[ pev( wpn, pev_owner ) ] ) {
  713. JANUS11_Reload_Post( wpn )
  714. return HAM_SUPERCEDE
  715. }
  716. return HAM_IGNORED
  717. }
  718.  
  719. public JANUS11_Reload_Post(weapon) {
  720. new id = pev( weapon, pev_owner )
  721. if(janus11_mode[id] == 3)
  722. return HAM_SUPERCEDE
  723. new clip, bpammo
  724. get_user_weapon(id, clip, bpammo )
  725. if( g_has_janus11[ id ] && clip < get_pcvar_num(cvar_clip_janus11) && bpammo > 0 ) {
  726. if(!task_exists( id+1331 )) set_task( 0.1, "reload", id+1331 )
  727. }
  728. return HAM_IGNORED
  729. }
  730.  
  731. public reload( id ) {
  732. id -= 1331
  733. new clip, bpammo, weapon = find_ent_by_owner( -1, "weapon_m3", id )
  734. get_user_weapon(id, clip, bpammo )
  735. if(!g_reload[id]) {
  736. UTIL_PlayWeaponAnimation( id, 5 )
  737. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 14)
  738. else UTIL_PlayWeaponAnimation(id, 5)
  739. g_reload[id] = 1
  740. set_reload_timeidle(id, CSW_M3, 0.2)
  741. set_task( 0.5, "reload", id+1331 )
  742. return
  743. }
  744.  
  745. if( clip > get_pcvar_num(cvar_clip_janus11)-1 || bpammo < 1 ) {
  746. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 13)
  747. else UTIL_PlayWeaponAnimation(id, 4)
  748. g_reload[id] = 0
  749. set_reload_timeidle(id, CSW_M3, 0.9)
  750. return
  751. }
  752. cs_set_user_bpammo( id, CSW_M3, bpammo - 1 )
  753. cs_set_weapon_ammo( weapon, clip + 1 )
  754. set_reload_timeidle(id, CSW_M3, 0.6)
  755. if(janus11_mode[id] == 2) UTIL_PlayWeaponAnimation(id, 12)
  756. else UTIL_PlayWeaponAnimation(id, 3)
  757. set_task( 0.4, "reload", id+1331 )
  758. emit_sound(id, CHAN_WEAPON, "weapons/uts15_reload.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  759. }
  760.  
  761. stock fm_cs_get_current_weapon_ent(id)
  762. {
  763. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  764. }
  765.  
  766. stock fm_set_weapon_ammo(entity, amount)
  767. {
  768. set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
  769. }
  770.  
  771. stock fm_cs_get_weapon_ent_owner(ent)
  772. {
  773. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  774. }
  775.  
  776. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  777. {
  778. set_pev(Player, pev_weaponanim, Sequence)
  779.  
  780. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  781. write_byte(Sequence)
  782. write_byte(pev(Player, pev_body))
  783. message_end()
  784. }
  785.  
  786. stock set_player_nextattackx(id, Float:nexttime)
  787. {
  788. if(!is_user_alive(id))
  789. return
  790.  
  791. set_pdata_float(id, m_flNextAttack, nexttime, 5)
  792. }
  793.  
  794. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  795. {
  796. new Float:vfEnd[3], viEnd[3]
  797. get_user_origin(id, viEnd, 3)
  798. IVecFVec(viEnd, vfEnd)
  799.  
  800. new Float:fOrigin[3], Float:fAngle[3]
  801.  
  802. pev(id, pev_origin, fOrigin)
  803. pev(id, pev_view_ofs, fAngle)
  804.  
  805. xs_vec_add(fOrigin, fAngle, fOrigin)
  806.  
  807. new Float:fAttack[3]
  808.  
  809. xs_vec_sub(vfEnd, fOrigin, fAttack)
  810. xs_vec_sub(vfEnd, fOrigin, fAttack)
  811.  
  812. new Float:fRate
  813.  
  814. fRate = fDis / vector_length(fAttack)
  815. xs_vec_mul_scalar(fAttack, fRate, fAttack)
  816.  
  817. xs_vec_add(fOrigin, fAttack, output)
  818. }
  819.  
  820. stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle)
  821. {
  822. if(!is_user_alive(id))
  823. return
  824.  
  825. static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
  826. if(!pev_valid(entwpn))
  827. return
  828.  
  829. set_pdata_float(entwpn, 46, TimeIdle, WEAP_LINUX_XTRA_OFF)
  830. set_pdata_float(entwpn, 47, TimeIdle, WEAP_LINUX_XTRA_OFF)
  831. set_pdata_float(entwpn, 48, TimeIdle + 1.0, WEAP_LINUX_XTRA_OFF)
  832. }
  833.  
  834. stock set_reload_timeidle(id, WeaponId ,Float:TimeIdle)
  835. {
  836. if(!is_user_alive(id))
  837. return
  838.  
  839. static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
  840. if(!pev_valid(entwpn))
  841. return
  842.  
  843. set_pdata_float(entwpn, 48, TimeIdle + 1.0, WEAP_LINUX_XTRA_OFF)
  844. }
  845.  
  846. stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
  847. {
  848. new_velocity[0] = origin2[0] - origin1[0]
  849. new_velocity[1] = origin2[1] - origin1[1]
  850. new_velocity[2] = origin2[2] - origin1[2]
  851. new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
  852. new_velocity[0] *= num
  853. new_velocity[1] *= num
  854. new_velocity[2] *= num
  855.  
  856. return 1;
  857. }
  858.  
  859. stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
  860. {
  861. static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
  862.  
  863. pev(id, pev_origin, vOrigin)
  864. pev(id, pev_view_ofs, vUp) //for player
  865. xs_vec_add(vOrigin, vUp, vOrigin)
  866. pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
  867.  
  868. angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors
  869. angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight)
  870. angle_vector(vAngle,ANGLEVECTOR_UP, vUp)
  871.  
  872. vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
  873. vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
  874. vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
  875. }
  876.  
  877.  
  878. stock drop_weapons(id, dropwhat)
  879. {
  880. static weapons[32], num, i, weaponid
  881. num = 0
  882. get_user_weapons(id, weapons, num)
  883.  
  884. for (i = 0; i < num; i++)
  885. {
  886. weaponid = weapons[i]
  887.  
  888. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  889. {
  890. static wname[32]
  891. get_weaponname(weaponid, wname, sizeof wname - 1)
  892. engclient_cmd(id, "drop", wname)
  893. }
  894. }
  895. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 17:48 
Offline
Veterán
Avatar

Csatlakozott: 2011.11.17. 15:48
Hozzászólások: 1904
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 54 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. formatex(szText, charsmax(szText), "\wJanus \y12 \r| \y(%d/250) Pont \d(3.2 DMG)", pont[id])
  2. menu_additem(menu, szText, "5", 0);
  3. case 5: {
  4. if(pont[id] >= 250)
  5. {
  6. callfunc_begin("zp_extra_item_selected","Janus-11")
  7. callfunc_push_int(id)
  8. callfunc_push_int(0)
  9. callfunc_end()
  10. pont[id] -= 250
  11. }
  12. else ColorChat(id, RED, "Sajnos nem sikerült, nincs elég pontod!")
  13. }
  14. }

Próbáld így, ez a javított verzió .


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 18:02 
Offline
Félisten
Avatar

Csatlakozott: 2013.12.30. 12:26
Hozzászólások: 987
Megköszönt másnak: 34 alkalommal
Megköszönték neki: 133 alkalommal
szegény plugin honnan tudja, hogy mi az a Janus-11? :D

_________________
Kép
Pár pluginom:
LCAW Frag Bolt
S E C R E T (78%...)
KépKép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 20:13 
Offline
Veterán
Avatar

Csatlakozott: 2011.11.17. 15:48
Hozzászólások: 1904
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 54 alkalommal
xXlederXxHUN írta:
szegény plugin honnan tudja, hogy mi az a Janus-11? :D

SMA Forráskód: [ Mindet kijelol ]
  1. g_janus11 = zp_register_extra_item("Janus-11", 20, ZP_TEAM_HUMAN)

ebből gondoltam :D Nekem volt egy menüm, ahol ezt kellett beleírni hgoy odaadja :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 20:33 
Offline
Nagyúr

Csatlakozott: 2014.05.10. 16:41
Hozzászólások: 721
Megköszönt másnak: 43 alkalommal
Megköszönték neki: 64 alkalommal
Meg nézem!:)

SZERK: Ha úgy írom egyből errort dob..

jó meg minden megy de a pontot nem veszi le;)


A hozzászólást 1 alkalommal szerkesztették, utoljára theglorious 2015.01.03. 17:27-kor.
Dupla poszt!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Nem adja oda.?
HozzászólásElküldve: 2015.01.02. 21:16 
Offline
Veterán
Avatar

Csatlakozott: 2011.11.17. 15:48
Hozzászólások: 1904
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 54 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. formatex( szText, charsmax(szText) , " \w Janus \y 12 \r | \y (%d/250) Pont \d (3.2 DMG)" , pont [ id])
  2. 2. menu_additem ( menu, szText, "5" , 0 );
  3. 3. case 5 : {
  4. 4. if( pont[ id] >= 250 )
  5. 5. {
  6. 6. callfunc_begin ( "zp_extra_item_selected" , "Janus-11" )
  7. 7. callfunc_push_int (id)
  8. 8. callfunc_push_int (0 )
  9. 9. callfunc_end ()
  10. 10. pont[ id] = -250
  11. 11. }
  12. 12. else ColorChat ( id, RED, "Sajnos nem sikerült, nincs elég pontod!" )
  13. 13. }
  14. 14. }
  15.  

Így ? :O


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


Ki van itt

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