hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Balrog1 átírás
HozzászólásElküldve: 2013.11.22. 02:15 
Offline
Tag
Avatar

Csatlakozott: 2012.01.15. 12:09
Hozzászólások: 57
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 5 alkalommal
Sziasztok
Régebben tudtam én is hogy kell, de sajna már rég nem írkáltam plugint meg nem is modosítottam így a nagyját elfelejtettem...Így most hozzátok fordulok, hátha tudtok segíteni :)
Aki segít annak elöre is köszönöm ^^

(Balrog1-es (CSO) fegyverről van szó, úgy szeretném hogy say parancsal meglehessen venni, és hogy csak bann jogos tudja megvenni)

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta_util>
  4. #include <hamsandwich>
  5. #include <xs>
  6. #include <cstrike>
  7. #include <zombieplague>
  8.  
  9. #define ENG_NULLENT -1
  10. #define EV_INT_WEAPONKEY EV_INT_impulse
  11. #define b1_WEAPONKEY 621
  12. #define MAX_PLAYERS 32
  13. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  14.  
  15. const OFFSET_ACTIVE_ITEM = 373
  16. const OFFSET_WEAPONOWNER = 41
  17. const OFFSET_LINUX = 5
  18. const OFFSET_LINUX_WEAPONS = 4
  19.  
  20. #define WEAP_LINUX_XTRA_OFF 4
  21. #define m_fKnown 44
  22. #define m_flNextPrimaryAttack 46
  23. #define m_flTimeWeaponIdle 48
  24. #define m_iClip 51
  25. #define m_fInReload 54
  26. #define PLAYER_LINUX_XTRA_OFF 5
  27. #define m_flNextAttack 83
  28.  
  29. #define b1_SHOOT1 2
  30. #define b1_SHOOT2 3
  31. #define b1_SHOOT_EMPTY 3
  32. #define b1_RELOAD 4
  33. #define b1_DRAW 5
  34. #define b1_RELOAD_TIME 3.0
  35. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  36.  
  37. new const Fire_Sounds[][] = { "weapons/balrog1-1.wav", "weapons/balrog1-2.wav" }
  38.  
  39. new b1_V_MODEL[64] = "models/v_balrog1.mdl"
  40. new b1_P_MODEL[64] = "models/p_balrog1.mdl"
  41. new b1_W_MODEL[64] = "models/w_balrog1.mdl"
  42.  
  43. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  44.  
  45. new cvar_dmg_b1, cvar_recoil_b1, g_itemid_b1, cvar_clip_b1, cvar_spd_b1, cvar_b1_ammo, cvar_dmg_exp
  46. new g_MaxPlayers, g_orig_event_b1, g_IsInPrimaryAttack, g_iClip
  47. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  48. new g_has_b1[33], g_clip_ammo[33], oldweap[33],g_b1_TmpClip[33]
  49. new gmsgWeaponList, gMode[33], sExplo
  50.  
  51. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  52. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_deagle", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  53. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  54. "weapon_ak47", "weapon_knife", "weapon_p90" }
  55.  
  56. public plugin_init()
  57. {
  58. register_plugin("[ZP] Extra: Balrog-I", "1.0", "Barney")
  59. register_event("CurWeapon","CurrentWeapon","be","1=1")
  60. RegisterHam(Ham_Item_AddToPlayer, "weapon_deagle", "fw_b1_AddToPlayer")
  61. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  62. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  63. RegisterHam(Ham_Item_PostFrame, "weapon_deagle", "b1_ItemPostFrame")
  64. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload")
  65. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload_Post", 1)
  66. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack")
  67. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack_Post", 1)
  68. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  69. register_forward(FM_SetModel, "fw_SetModel")
  70. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  71. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  72.  
  73. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  74. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  75. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  76. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  77. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  78. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  79. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  80.  
  81. cvar_dmg_b1 = register_cvar("zp_b1_dmg", "2.5")
  82. cvar_dmg_exp = register_cvar("zp_b1_dmg_exp", "300.")
  83. cvar_recoil_b1 = register_cvar("zp_b1_recoil", "1.0")
  84. cvar_clip_b1 = register_cvar("zp_b1_clip", "10")
  85. cvar_spd_b1 = register_cvar("zp_b1_spd", "0.7")
  86. cvar_b1_ammo = register_cvar("zp_b1_ammo", "100")
  87.  
  88. g_itemid_b1 = zp_register_extra_item("Balrog-I", 0, ZP_TEAM_HUMAN)
  89. g_MaxPlayers = get_maxplayers()
  90. gmsgWeaponList = get_user_msgid("WeaponList")
  91. }
  92.  
  93. public plugin_precache()
  94. {
  95. precache_model(b1_V_MODEL)
  96. precache_model(b1_P_MODEL)
  97. precache_model(b1_W_MODEL)
  98. for(new i = 0; i < sizeof Fire_Sounds; i++)
  99. precache_sound(Fire_Sounds[i])
  100. precache_sound("weapons/balrog1_changea.wav")
  101. precache_sound("weapons/balrog1_changeb.wav")
  102. precache_sound("weapons/balrog1_draw.wav")
  103. precache_sound("weapons/balrog1_reload.wav")
  104. precache_sound("weapons/balrog1_reloadb.wav")
  105. m_iBlood[0] = precache_model("sprites/blood.spr")
  106. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  107. precache_generic("sprites/weapon_balrog1.txt")
  108. precache_generic("sprites/640hud83.spr")
  109. precache_generic("sprites/640hud4.spr")
  110. sExplo = precache_model("sprites/balrogcritical.spr")
  111. register_clcmd("weapon_balrog1", "weapon_hook")
  112.  
  113. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  114. }
  115.  
  116. public weapon_hook(id)
  117. {
  118. engclient_cmd(id, "weapon_deagle")
  119. return PLUGIN_HANDLED
  120. }
  121.  
  122. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  123. {
  124. if(!is_user_alive(iAttacker))
  125. return
  126.  
  127. new g_currentweapon = get_user_weapon(iAttacker)
  128.  
  129. if(g_currentweapon != CSW_DEAGLE) return
  130.  
  131. if(!g_has_b1[iAttacker]) return
  132.  
  133. static Float:flEnd[3]
  134. get_tr2(ptr, TR_vecEndPos, flEnd)
  135.  
  136. if(iEnt)
  137. {
  138. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  139. write_byte(TE_DECAL)
  140. write_coord_f(flEnd[0])
  141. write_coord_f(flEnd[1])
  142. write_coord_f(flEnd[2])
  143. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  144. write_short(iEnt)
  145. message_end()
  146. }
  147. else
  148. {
  149. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  150. write_byte(TE_WORLDDECAL)
  151. write_coord_f(flEnd[0])
  152. write_coord_f(flEnd[1])
  153. write_coord_f(flEnd[2])
  154. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  155. message_end()
  156. }
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_GUNSHOTDECAL)
  159. write_coord_f(flEnd[0])
  160. write_coord_f(flEnd[1])
  161. write_coord_f(flEnd[2])
  162. write_short(iAttacker)
  163. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  164. message_end()
  165. }
  166.  
  167. public zp_user_humanized_post(id)
  168. {
  169. g_has_b1[id] = false
  170. }
  171.  
  172. public plugin_natives ()
  173. {
  174. register_native("give_b1", "native_give_weapon_add", 1)
  175. }
  176. public native_give_weapon_add(id)
  177. {
  178. give_b1(id)
  179. }
  180.  
  181. public fwPrecacheEvent_Post(type, const name[])
  182. {
  183. if (equal("events/deagle.sc", name))
  184. {
  185. g_orig_event_b1 = get_orig_retval()
  186. return FMRES_HANDLED
  187. }
  188. return FMRES_IGNORED
  189. }
  190.  
  191. public client_connect(id)
  192. {
  193. g_has_b1[id] = false
  194. }
  195.  
  196. public client_disconnect(id)
  197. {
  198. g_has_b1[id] = false
  199. }
  200.  
  201. public zp_user_infected_post(id)
  202. {
  203. if (zp_get_user_zombie(id))
  204. {
  205. g_has_b1[id] = false
  206. }
  207. }
  208.  
  209. public fw_SetModel(entity, model[])
  210. {
  211. if(!is_valid_ent(entity))
  212. return FMRES_IGNORED
  213.  
  214. static szClassName[33]
  215. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  216.  
  217. if(!equal(szClassName, "weaponbox"))
  218. return FMRES_IGNORED
  219.  
  220. static iOwner
  221.  
  222. iOwner = entity_get_edict(entity, EV_ENT_owner)
  223.  
  224. if(equal(model, "models/w_deagle.mdl"))
  225. {
  226. static iStoredAugID
  227.  
  228. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_deagle", entity)
  229.  
  230. if(!is_valid_ent(iStoredAugID))
  231. return FMRES_IGNORED
  232.  
  233. if(g_has_b1[iOwner])
  234. {
  235. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, b1_WEAPONKEY)
  236.  
  237. g_has_b1[iOwner] = false
  238.  
  239. entity_set_model(entity, b1_W_MODEL)
  240.  
  241. return FMRES_SUPERCEDE
  242. }
  243. }
  244. return FMRES_IGNORED
  245. }
  246.  
  247. public give_b1(id)
  248. {
  249. drop_weapons(id, 2)
  250. new iWep2 = fm_give_item(id,"weapon_deagle")
  251. if( iWep2 > 0 )
  252. {
  253. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_b1))
  254. cs_set_user_bpammo (id, CSW_DEAGLE, get_pcvar_num(cvar_b1_ammo))
  255. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  256. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  257.  
  258. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  259. write_string("weapon_balrog1")
  260. write_byte(8)
  261. write_byte(35)
  262. write_byte(-1)
  263. write_byte(-1)
  264. write_byte(1)
  265. write_byte(1)
  266. write_byte(CSW_DEAGLE)
  267. message_end()
  268. }
  269. g_has_b1[id] = true
  270. }
  271.  
  272. public zp_extra_item_selected(id, itemid)
  273. {
  274. if(itemid != g_itemid_b1)
  275. return
  276.  
  277. give_b1(id)
  278. }
  279.  
  280. public fw_b1_AddToPlayer(b1, id)
  281. {
  282. if(!is_valid_ent(b1) || !is_user_connected(id))
  283. return HAM_IGNORED
  284.  
  285. if(entity_get_int(b1, EV_INT_WEAPONKEY) == b1_WEAPONKEY)
  286. {
  287. g_has_b1[id] = true
  288.  
  289. entity_set_int(b1, EV_INT_WEAPONKEY, 0)
  290.  
  291. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  292. write_string("weapon_balrog1")
  293. write_byte(8)
  294. write_byte(35)
  295. write_byte(-1)
  296. write_byte(-1)
  297. write_byte(1)
  298. write_byte(1)
  299. write_byte(CSW_DEAGLE)
  300. message_end()
  301.  
  302. return HAM_HANDLED
  303. }
  304. else
  305. {
  306. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  307. write_string("weapon_deagle")
  308. write_byte(8)
  309. write_byte(35)
  310. write_byte(-1)
  311. write_byte(-1)
  312. write_byte(1)
  313. write_byte(1)
  314. write_byte(CSW_DEAGLE)
  315. message_end()
  316. }
  317. return HAM_IGNORED
  318. }
  319.  
  320. public fw_Item_Deploy_Post(weapon_ent)
  321. {
  322. static owner
  323. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  324.  
  325. static weaponid
  326. weaponid = cs_get_weapon_id(weapon_ent)
  327. replace_weapon_models(owner, weaponid)
  328. }
  329.  
  330. public CurrentWeapon(id)
  331. {
  332. replace_weapon_models(id, read_data(2))
  333.  
  334. if(read_data(2) != CSW_DEAGLE || !g_has_b1[id])
  335. return
  336.  
  337. static Float:iSpeed
  338. if(g_has_b1[id])
  339. iSpeed = get_pcvar_float(cvar_spd_b1)
  340.  
  341. static weapon[32],Ent
  342. get_weaponname(read_data(2),weapon,31)
  343. Ent = find_ent_by_owner(-1,weapon,id)
  344. if(Ent)
  345. {
  346. static Float:Delay
  347. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  348. if (Delay > 0.0)
  349. {
  350. set_pdata_float(Ent, 46, Delay, 4)
  351. }
  352. }
  353. }
  354.  
  355. replace_weapon_models(id, weaponid)
  356. {
  357. switch (weaponid)
  358. {
  359. case CSW_DEAGLE:
  360. {
  361. if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
  362. return
  363.  
  364. if(g_has_b1[id])
  365. {
  366. set_pev(id, pev_viewmodel2, b1_V_MODEL)
  367. set_pev(id, pev_weaponmodel2, b1_P_MODEL)
  368. if(oldweap[id] != CSW_DEAGLE)
  369. {
  370. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  371. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  372. gMode[id] = 0
  373. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  374. write_string("weapon_balrog1")
  375. write_byte(8)
  376. write_byte(35)
  377. write_byte(-1)
  378. write_byte(-1)
  379. write_byte(1)
  380. write_byte(1)
  381. write_byte(CSW_DEAGLE)
  382. message_end()
  383. }
  384. }
  385. }
  386. }
  387. oldweap[id] = weaponid
  388. }
  389.  
  390. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  391. {
  392. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_DEAGLE || !g_has_b1[Player]))
  393. return FMRES_IGNORED
  394.  
  395. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  396. return FMRES_HANDLED
  397. }
  398.  
  399. public fw_b1_PrimaryAttack(Weapon)
  400. {
  401. new Player = get_pdata_cbase(Weapon, 41, 4)
  402.  
  403. if (!g_has_b1[Player])
  404. return
  405.  
  406. g_IsInPrimaryAttack = 1
  407. pev(Player,pev_punchangle,cl_pushangle[Player])
  408.  
  409. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  410. g_iClip = cs_get_weapon_ammo(Weapon)
  411. }
  412.  
  413. public explode(id)
  414. {
  415. if(is_user_alive(id))
  416. {
  417. new Float:originF[3]
  418. fm_get_aim_origin(id,originF)
  419. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  420. write_byte(TE_EXPLOSION)
  421. engfunc(EngFunc_WriteCoord, originF[0])
  422. engfunc(EngFunc_WriteCoord, originF[1])
  423. engfunc(EngFunc_WriteCoord, originF[2])
  424. write_short(sExplo)
  425. write_byte(20)
  426. write_byte(50)
  427. write_byte(0)
  428. message_end()
  429. new a = FM_NULLENT
  430. while((a = find_ent_in_sphere(a,originF,200.0)) != 0)
  431. {
  432. if(pev(a,pev_takedamage)!=DAMAGE_NO)
  433. {
  434. ExecuteHamB( Ham_TakeDamage, a ,id ,id, get_pcvar_float(cvar_dmg_exp), DMG_BULLET )
  435. }
  436. }
  437. }
  438. }
  439.  
  440. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  441. {
  442. if ((eventid != g_orig_event_b1) || !g_IsInPrimaryAttack)
  443. return FMRES_IGNORED
  444. if (!(1 <= invoker <= g_MaxPlayers))
  445. return FMRES_IGNORED
  446.  
  447. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  448. return FMRES_SUPERCEDE
  449. }
  450.  
  451. public fw_b1_PrimaryAttack_Post(Weapon)
  452. {
  453. g_IsInPrimaryAttack = 0
  454. new Player = get_pdata_cbase(Weapon, 41, 4)
  455.  
  456. new szClip, szAmmo
  457. get_user_weapon(Player, szClip, szAmmo)
  458.  
  459. if(!is_user_alive(Player))
  460. return
  461.  
  462. if (g_iClip <= cs_get_weapon_ammo(Weapon))
  463. return
  464.  
  465. if(g_has_b1[Player])
  466. {
  467. if (!g_clip_ammo[Player])
  468. return
  469.  
  470. new Float:push[3]
  471. pev(Player,pev_punchangle,push)
  472. xs_vec_sub(push,cl_pushangle[Player],push)
  473.  
  474. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_b1),push)
  475. xs_vec_add(push,cl_pushangle[Player],push)
  476. set_pev(Player,pev_punchangle,push)
  477. if( gMode[Player] ) {
  478. explode(Player)
  479. set_pdata_float( Player, 83, 2.0 )
  480. }
  481. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[gMode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  482. UTIL_PlayWeaponAnimation(Player, gMode[Player]?b1_SHOOT2:b1_SHOOT1)
  483. if( gMode[Player] ) gMode[Player] = 0
  484. }
  485. }
  486.  
  487. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  488. {
  489. if (victim != attacker && is_user_connected(attacker))
  490. {
  491. if(get_user_weapon(attacker) == CSW_DEAGLE)
  492. {
  493. if(g_has_b1[attacker])
  494. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_b1))
  495. }
  496. }
  497. }
  498.  
  499. stock fm_cs_get_current_weapon_ent(id)
  500. {
  501. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  502. }
  503.  
  504. stock fm_cs_get_weapon_ent_owner(ent)
  505. {
  506. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  507. }
  508.  
  509. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  510. {
  511. set_pev(Player, pev_weaponanim, Sequence)
  512.  
  513. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  514. write_byte(Sequence)
  515. write_byte(pev(Player, pev_body))
  516. message_end()
  517. }
  518.  
  519. public b1_ItemPostFrame(weapon_entity)
  520. {
  521. new id = pev(weapon_entity, pev_owner)
  522. if (!is_user_connected(id))
  523. return HAM_IGNORED
  524.  
  525. if (!g_has_b1[id])
  526. return HAM_IGNORED
  527.  
  528. static iClipExtra
  529.  
  530. iClipExtra = get_pcvar_num(cvar_clip_b1)
  531. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  532.  
  533. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE);
  534. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  535.  
  536. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  537. if( pev( id, pev_button ) & IN_ATTACK2 && flNextAttack <= 0.0) {
  538. UTIL_PlayWeaponAnimation(id, !gMode[id]?6:7 )
  539. gMode[id] = (gMode[id]?0:1)
  540. set_pdata_float( id, 83, 2.0 )
  541. }
  542. if( fInReload && flNextAttack <= 0.0 )
  543. {
  544. new j = min(iClipExtra - iClip, iBpAmmo)
  545.  
  546. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  547. cs_set_user_bpammo(id, CSW_DEAGLE, iBpAmmo-j)
  548.  
  549. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  550. fInReload = 0
  551. }
  552. return HAM_IGNORED
  553. }
  554.  
  555. public b1_Reload(weapon_entity)
  556. {
  557. new id = pev(weapon_entity, pev_owner)
  558. if (!is_user_connected(id))
  559. return HAM_IGNORED
  560.  
  561. if (!g_has_b1[id])
  562. return HAM_IGNORED
  563.  
  564. static iClipExtra
  565.  
  566. if(g_has_b1[id])
  567. iClipExtra = get_pcvar_num(cvar_clip_b1)
  568.  
  569. g_b1_TmpClip[id] = -1
  570.  
  571. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE)
  572. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  573.  
  574. if (iBpAmmo <= 0)
  575. return HAM_SUPERCEDE
  576.  
  577. if (iClip >= iClipExtra)
  578. return HAM_SUPERCEDE
  579.  
  580. g_b1_TmpClip[id] = iClip
  581.  
  582. return HAM_IGNORED
  583. }
  584.  
  585. public b1_Reload_Post(weapon_entity)
  586. {
  587. new id = pev(weapon_entity, pev_owner)
  588. if (!is_user_connected(id))
  589. return HAM_IGNORED
  590.  
  591. if (!g_has_b1[id])
  592. return HAM_IGNORED
  593.  
  594. if (g_b1_TmpClip[id] == -1)
  595. return HAM_IGNORED
  596.  
  597. set_pdata_int(weapon_entity, m_iClip, g_b1_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  598.  
  599. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, b1_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  600.  
  601. set_pdata_float(id, m_flNextAttack, b1_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  602.  
  603. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  604.  
  605. UTIL_PlayWeaponAnimation(id, gMode[id]?8:b1_RELOAD)
  606. gMode[id] = 0
  607.  
  608. return HAM_IGNORED
  609. }
  610.  
  611. stock drop_weapons(id, dropwhat)
  612. {
  613. static weapons[32], num, i, weaponid
  614. num = 0
  615. get_user_weapons(id, weapons, num)
  616.  
  617. for (i = 0; i < num; i++)
  618. {
  619. weaponid = weapons[i]
  620.  
  621. if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
  622. {
  623. static wname[32]
  624. get_weaponname(weaponid, wname, sizeof wname - 1)
  625. engclient_cmd(id, "drop", wname)
  626. }
  627. }
  628. }
  629. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  630. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  631. */
  632. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  633. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  634. */
  635.  

_________________
Ha segítettem egy Kép jól jönne :D
In-game zenelejátszó pluginom
1.Szerver:
[S.W.A.T]Különleges kommandosok FUN/PUB
2.Szerver: Konfig alatt!


A hozzászólást 1 alkalommal szerkesztették, utoljára CrB 2013.11.24. 09:36-kor.
témanév


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.23. 09:11 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
teszteld:

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta_util>
  4. #include <hamsandwich>
  5. #include <cstrike>
  6.  
  7. #define ENG_NULLENT -1
  8. #define EV_INT_WEAPONKEY EV_INT_impulse
  9. #define b1_WEAPONKEY 621
  10. #define MAX_PLAYERS 32
  11. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  12.  
  13. const OFFSET_ACTIVE_ITEM = 373
  14. const OFFSET_WEAPONOWNER = 41
  15. const OFFSET_LINUX = 5
  16. const OFFSET_LINUX_WEAPONS = 4
  17.  
  18. #define WEAP_LINUX_XTRA_OFF 4
  19. #define m_fKnown 44
  20. #define m_flNextPrimaryAttack 46
  21. #define m_flTimeWeaponIdle 48
  22. #define m_iClip 51
  23. #define m_fInReload 54
  24. #define PLAYER_LINUX_XTRA_OFF 5
  25. #define m_flNextAttack 83
  26.  
  27. #define b1_SHOOT1 2
  28. #define b1_SHOOT2 3
  29. #define b1_SHOOT_EMPTY 3
  30. #define b1_RELOAD 4
  31. #define b1_DRAW 5
  32. #define b1_RELOAD_TIME 3.0
  33. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  34.  
  35. new const Fire_Sounds[][] = { "weapons/balrog1-1.wav", "weapons/balrog1-2.wav" }
  36.  
  37. new b1_V_MODEL[64] = "models/v_balrog1.mdl"
  38. new b1_P_MODEL[64] = "models/p_balrog1.mdl"
  39. new b1_W_MODEL[64] = "models/w_balrog1.mdl"
  40.  
  41. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  42.  
  43. new cvar_dmg_b1, cvar_recoil_b1, cvar_clip_b1, cvar_spd_b1, cvar_b1_ammo, cvar_dmg_exp
  44. new g_MaxPlayers, g_orig_event_b1, g_IsInPrimaryAttack, g_iClip
  45. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  46. new g_has_b1[33], g_clip_ammo[33], oldweap[33],g_b1_TmpClip[33]
  47. new gmsgWeaponList, gMode[33], sExplo
  48.  
  49. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  50. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_deagle", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  51. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  52. "weapon_ak47", "weapon_knife", "weapon_p90" }
  53.  
  54. public plugin_init()
  55. {
  56. register_plugin("[ZP] Extra: Balrog-I", "1.0", "Barney")
  57. register_event("CurWeapon","CurrentWeapon","be","1=1")
  58. RegisterHam(Ham_Item_AddToPlayer, "weapon_deagle", "fw_b1_AddToPlayer")
  59. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  60. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  61. RegisterHam(Ham_Item_PostFrame, "weapon_deagle", "b1_ItemPostFrame")
  62. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload")
  63. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload_Post", 1)
  64. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack")
  65. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack_Post", 1)
  66. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  67. register_forward(FM_SetModel, "fw_SetModel")
  68. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  69. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  70.  
  71. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  72. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  73. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  74. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  75. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  76. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  77. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  78.  
  79. cvar_dmg_b1 = register_cvar("amx_b1_dmg", "2.5")
  80. cvar_dmg_exp = register_cvar("amx_b1_dmg_exp", "300.")
  81. cvar_recoil_b1 = register_cvar("amx_b1_recoil", "1.0")
  82. cvar_clip_b1 = register_cvar("amx_b1_clip", "10")
  83. cvar_spd_b1 = register_cvar("amx_b1_spd", "0.7")
  84. cvar_b1_ammo = register_cvar("amx_b1_ammo", "100")
  85.  
  86. register_clcmd("say /deagle", "give_b1");
  87. register_clcmd("say_team /deagle", "give_b1");
  88.  
  89. g_MaxPlayers = get_maxplayers()
  90. gmsgWeaponList = get_user_msgid("WeaponList")
  91. }
  92.  
  93. public plugin_precache()
  94. {
  95. precache_model(b1_V_MODEL)
  96. precache_model(b1_P_MODEL)
  97. precache_model(b1_W_MODEL)
  98. for(new i = 0; i < sizeof Fire_Sounds; i++)
  99. precache_sound(Fire_Sounds[i])
  100. precache_sound("weapons/balrog1_changea.wav")
  101. precache_sound("weapons/balrog1_changeb.wav")
  102. precache_sound("weapons/balrog1_draw.wav")
  103. precache_sound("weapons/balrog1_reload.wav")
  104. precache_sound("weapons/balrog1_reloadb.wav")
  105. m_iBlood[0] = precache_model("sprites/blood.spr")
  106. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  107. precache_generic("sprites/weapon_balrog1.txt")
  108. precache_generic("sprites/640hud83.spr")
  109. precache_generic("sprites/640hud4.spr")
  110. sExplo = precache_model("sprites/balrogcritical.spr")
  111. register_clcmd("weapon_balrog1", "weapon_hook")
  112.  
  113. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  114. }
  115.  
  116. public weapon_hook(id)
  117. {
  118. engclient_cmd(id, "weapon_deagle")
  119. return PLUGIN_HANDLED
  120. }
  121.  
  122. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  123. {
  124. if(!is_user_alive(iAttacker))
  125. return
  126.  
  127. new g_currentweapon = get_user_weapon(iAttacker)
  128.  
  129. if(g_currentweapon != CSW_DEAGLE) return
  130.  
  131. if(!g_has_b1[iAttacker]) return
  132.  
  133. static Float:flEnd[3]
  134. get_tr2(ptr, TR_vecEndPos, flEnd)
  135.  
  136. if(iEnt)
  137. {
  138. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  139. write_byte(TE_DECAL)
  140. write_coord_f(flEnd[0])
  141. write_coord_f(flEnd[1])
  142. write_coord_f(flEnd[2])
  143. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  144. write_short(iEnt)
  145. message_end()
  146. }
  147. else
  148. {
  149. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  150. write_byte(TE_WORLDDECAL)
  151. write_coord_f(flEnd[0])
  152. write_coord_f(flEnd[1])
  153. write_coord_f(flEnd[2])
  154. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  155. message_end()
  156. }
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_GUNSHOTDECAL)
  159. write_coord_f(flEnd[0])
  160. write_coord_f(flEnd[1])
  161. write_coord_f(flEnd[2])
  162. write_short(iAttacker)
  163. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  164. message_end()
  165. }
  166.  
  167. public plugin_natives ()
  168. {
  169. register_native("give_b1", "native_give_weapon_add", 1)
  170. }
  171. public native_give_weapon_add(id)
  172. {
  173. give_b1(id)
  174. }
  175.  
  176. public fwPrecacheEvent_Post(type, const name[])
  177. {
  178. if (equal("events/deagle.sc", name))
  179. {
  180. g_orig_event_b1 = get_orig_retval()
  181. return FMRES_HANDLED
  182. }
  183. return FMRES_IGNORED
  184. }
  185.  
  186. public client_connect(id)
  187. {
  188. g_has_b1[id] = false
  189. }
  190.  
  191. public client_disconnect(id)
  192. {
  193. g_has_b1[id] = false
  194. }
  195.  
  196. public fw_SetModel(entity, model[])
  197. {
  198. if(!is_valid_ent(entity))
  199. return FMRES_IGNORED
  200.  
  201. static szClassName[33]
  202. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  203.  
  204. if(!equal(szClassName, "weaponbox"))
  205. return FMRES_IGNORED
  206.  
  207. static iOwner
  208.  
  209. iOwner = entity_get_edict(entity, EV_ENT_owner)
  210.  
  211. if(equal(model, "models/w_deagle.mdl"))
  212. {
  213. static iStoredAugID
  214.  
  215. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_deagle", entity)
  216.  
  217. if(!is_valid_ent(iStoredAugID))
  218. return FMRES_IGNORED
  219.  
  220. if(g_has_b1[iOwner])
  221. {
  222. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, b1_WEAPONKEY)
  223.  
  224. g_has_b1[iOwner] = false
  225.  
  226. entity_set_model(entity, b1_W_MODEL)
  227.  
  228. return FMRES_SUPERCEDE
  229. }
  230. }
  231. return FMRES_IGNORED
  232. }
  233.  
  234. public give_b1(id)
  235. {
  236. if(!(get_user_flags(id) & ADMIN_BAN))
  237. {
  238. client_print(id, print_chat, "[Balrog-I] Nincs jogod ehhez a parancshoz!");
  239. return PLUGIN_HANDLED;
  240. }
  241.  
  242. drop_weapons(id, 2)
  243. new iWep2 = fm_give_item(id,"weapon_deagle")
  244. if( iWep2 > 0 )
  245. {
  246. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_b1))
  247. cs_set_user_bpammo (id, CSW_DEAGLE, get_pcvar_num(cvar_b1_ammo))
  248. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  249. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  250.  
  251. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  252. write_string("weapon_balrog1")
  253. write_byte(8)
  254. write_byte(35)
  255. write_byte(-1)
  256. write_byte(-1)
  257. write_byte(1)
  258. write_byte(1)
  259. write_byte(CSW_DEAGLE)
  260. message_end()
  261. }
  262. g_has_b1[id] = true
  263.  
  264. return PLUGIN_CONTINUE
  265. }
  266.  
  267. public fw_b1_AddToPlayer(b1, id)
  268. {
  269. if(!is_valid_ent(b1) || !is_user_connected(id))
  270. return HAM_IGNORED
  271.  
  272. if(entity_get_int(b1, EV_INT_WEAPONKEY) == b1_WEAPONKEY)
  273. {
  274. g_has_b1[id] = true
  275.  
  276. entity_set_int(b1, EV_INT_WEAPONKEY, 0)
  277.  
  278. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  279. write_string("weapon_balrog1")
  280. write_byte(8)
  281. write_byte(35)
  282. write_byte(-1)
  283. write_byte(-1)
  284. write_byte(1)
  285. write_byte(1)
  286. write_byte(CSW_DEAGLE)
  287. message_end()
  288.  
  289. return HAM_HANDLED
  290. }
  291. else
  292. {
  293. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  294. write_string("weapon_deagle")
  295. write_byte(8)
  296. write_byte(35)
  297. write_byte(-1)
  298. write_byte(-1)
  299. write_byte(1)
  300. write_byte(1)
  301. write_byte(CSW_DEAGLE)
  302. message_end()
  303. }
  304. return HAM_IGNORED
  305. }
  306.  
  307. public fw_Item_Deploy_Post(weapon_ent)
  308. {
  309. static owner
  310. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  311.  
  312. static weaponid
  313. weaponid = cs_get_weapon_id(weapon_ent)
  314. replace_weapon_models(owner, weaponid)
  315. }
  316.  
  317. public CurrentWeapon(id)
  318. {
  319. replace_weapon_models(id, read_data(2))
  320.  
  321. if(read_data(2) != CSW_DEAGLE || !g_has_b1[id])
  322. return
  323.  
  324. static Float:iSpeed
  325. if(g_has_b1[id])
  326. iSpeed = get_pcvar_float(cvar_spd_b1)
  327.  
  328. static weapon[32],Ent
  329. get_weaponname(read_data(2),weapon,31)
  330. Ent = find_ent_by_owner(-1,weapon,id)
  331. if(Ent)
  332. {
  333. static Float:Delay
  334. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  335. if (Delay > 0.0)
  336. {
  337. set_pdata_float(Ent, 46, Delay, 4)
  338. }
  339. }
  340. }
  341.  
  342. replace_weapon_models(id, weaponid)
  343. {
  344. switch (weaponid)
  345. {
  346. case CSW_DEAGLE:
  347. {
  348. if(g_has_b1[id])
  349. {
  350. set_pev(id, pev_viewmodel2, b1_V_MODEL)
  351. set_pev(id, pev_weaponmodel2, b1_P_MODEL)
  352. if(oldweap[id] != CSW_DEAGLE)
  353. {
  354. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  355. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  356. gMode[id] = 0
  357. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  358. write_string("weapon_balrog1")
  359. write_byte(8)
  360. write_byte(35)
  361. write_byte(-1)
  362. write_byte(-1)
  363. write_byte(1)
  364. write_byte(1)
  365. write_byte(CSW_DEAGLE)
  366. message_end()
  367. }
  368. }
  369. }
  370. }
  371. oldweap[id] = weaponid
  372. }
  373.  
  374. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  375. {
  376. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_DEAGLE || !g_has_b1[Player]))
  377. return FMRES_IGNORED
  378.  
  379. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  380. return FMRES_HANDLED
  381. }
  382.  
  383. public fw_b1_PrimaryAttack(Weapon)
  384. {
  385. new Player = get_pdata_cbase(Weapon, 41, 4)
  386.  
  387. if (!g_has_b1[Player])
  388. return
  389.  
  390. g_IsInPrimaryAttack = 1
  391. pev(Player,pev_punchangle,cl_pushangle[Player])
  392.  
  393. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  394. g_iClip = cs_get_weapon_ammo(Weapon)
  395. }
  396.  
  397. public explode(id)
  398. {
  399. if(is_user_alive(id))
  400. {
  401. new Float:originF[3]
  402. fm_get_aim_origin(id,originF)
  403. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  404. write_byte(TE_EXPLOSION)
  405. engfunc(EngFunc_WriteCoord, originF[0])
  406. engfunc(EngFunc_WriteCoord, originF[1])
  407. engfunc(EngFunc_WriteCoord, originF[2])
  408. write_short(sExplo)
  409. write_byte(20)
  410. write_byte(50)
  411. write_byte(0)
  412. message_end()
  413. new a = FM_NULLENT
  414. while((a = find_ent_in_sphere(a,originF,200.0)) != 0)
  415. {
  416. if(pev(a,pev_takedamage)!=DAMAGE_NO)
  417. {
  418. ExecuteHamB( Ham_TakeDamage, a ,id ,id, get_pcvar_float(cvar_dmg_exp), DMG_BULLET )
  419. }
  420. }
  421. }
  422. }
  423.  
  424. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  425. {
  426. if ((eventid != g_orig_event_b1) || !g_IsInPrimaryAttack)
  427. return FMRES_IGNORED
  428. if (!(1 <= invoker <= g_MaxPlayers))
  429. return FMRES_IGNORED
  430.  
  431. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  432. return FMRES_SUPERCEDE
  433. }
  434.  
  435. public fw_b1_PrimaryAttack_Post(Weapon)
  436. {
  437. g_IsInPrimaryAttack = 0
  438. new Player = get_pdata_cbase(Weapon, 41, 4)
  439.  
  440. new szClip, szAmmo
  441. get_user_weapon(Player, szClip, szAmmo)
  442.  
  443. if(!is_user_alive(Player))
  444. return
  445.  
  446. if (g_iClip <= cs_get_weapon_ammo(Weapon))
  447. return
  448.  
  449. if(g_has_b1[Player])
  450. {
  451. if (!g_clip_ammo[Player])
  452. return
  453.  
  454. new Float:push[3]
  455. pev(Player,pev_punchangle,push)
  456. xs_vec_sub(push,cl_pushangle[Player],push)
  457.  
  458. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_b1),push)
  459. xs_vec_add(push,cl_pushangle[Player],push)
  460. set_pev(Player,pev_punchangle,push)
  461. if( gMode[Player] ) {
  462. explode(Player)
  463. set_pdata_float( Player, 83, 2.0 )
  464. }
  465. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[gMode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  466. UTIL_PlayWeaponAnimation(Player, gMode[Player]?b1_SHOOT2:b1_SHOOT1)
  467. if( gMode[Player] ) gMode[Player] = 0
  468. }
  469. }
  470.  
  471. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  472. {
  473. if (victim != attacker && is_user_connected(attacker))
  474. {
  475. if(get_user_weapon(attacker) == CSW_DEAGLE)
  476. {
  477. if(g_has_b1[attacker])
  478. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_b1))
  479. }
  480. }
  481. }
  482.  
  483. stock fm_cs_get_current_weapon_ent(id)
  484. {
  485. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  486. }
  487.  
  488. stock fm_cs_get_weapon_ent_owner(ent)
  489. {
  490. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  491. }
  492.  
  493. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  494. {
  495. set_pev(Player, pev_weaponanim, Sequence)
  496.  
  497. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  498. write_byte(Sequence)
  499. write_byte(pev(Player, pev_body))
  500. message_end()
  501. }
  502.  
  503. public b1_ItemPostFrame(weapon_entity)
  504. {
  505. new id = pev(weapon_entity, pev_owner)
  506. if (!is_user_connected(id))
  507. return HAM_IGNORED
  508.  
  509. if (!g_has_b1[id])
  510. return HAM_IGNORED
  511.  
  512. static iClipExtra
  513.  
  514. iClipExtra = get_pcvar_num(cvar_clip_b1)
  515. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  516.  
  517. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE);
  518. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  519.  
  520. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  521. if( pev( id, pev_button ) & IN_ATTACK2 && flNextAttack <= 0.0) {
  522. UTIL_PlayWeaponAnimation(id, !gMode[id]?6:7 )
  523. gMode[id] = (gMode[id]?0:1)
  524. set_pdata_float( id, 83, 2.0 )
  525. }
  526. if( fInReload && flNextAttack <= 0.0 )
  527. {
  528. new j = min(iClipExtra - iClip, iBpAmmo)
  529.  
  530. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  531. cs_set_user_bpammo(id, CSW_DEAGLE, iBpAmmo-j)
  532.  
  533. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  534. fInReload = 0
  535. }
  536. return HAM_IGNORED
  537. }
  538.  
  539. public b1_Reload(weapon_entity)
  540. {
  541. new id = pev(weapon_entity, pev_owner)
  542. if (!is_user_connected(id))
  543. return HAM_IGNORED
  544.  
  545. if (!g_has_b1[id])
  546. return HAM_IGNORED
  547.  
  548. static iClipExtra
  549.  
  550. if(g_has_b1[id])
  551. iClipExtra = get_pcvar_num(cvar_clip_b1)
  552.  
  553. g_b1_TmpClip[id] = -1
  554.  
  555. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE)
  556. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  557.  
  558. if (iBpAmmo <= 0)
  559. return HAM_SUPERCEDE
  560.  
  561. if (iClip >= iClipExtra)
  562. return HAM_SUPERCEDE
  563.  
  564. g_b1_TmpClip[id] = iClip
  565.  
  566. return HAM_IGNORED
  567. }
  568.  
  569. public b1_Reload_Post(weapon_entity)
  570. {
  571. new id = pev(weapon_entity, pev_owner)
  572. if (!is_user_connected(id))
  573. return HAM_IGNORED
  574.  
  575. if (!g_has_b1[id])
  576. return HAM_IGNORED
  577.  
  578. if (g_b1_TmpClip[id] == -1)
  579. return HAM_IGNORED
  580.  
  581. set_pdata_int(weapon_entity, m_iClip, g_b1_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  582.  
  583. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, b1_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  584.  
  585. set_pdata_float(id, m_flNextAttack, b1_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  586.  
  587. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  588.  
  589. UTIL_PlayWeaponAnimation(id, gMode[id]?8:b1_RELOAD)
  590. gMode[id] = 0
  591.  
  592. return HAM_IGNORED
  593. }
  594.  
  595. stock drop_weapons(id, dropwhat)
  596. {
  597. static weapons[32], num, i, weaponid
  598. num = 0
  599. get_user_weapons(id, weapons, num)
  600.  
  601. for (i = 0; i < num; i++)
  602. {
  603. weaponid = weapons[i]
  604.  
  605. if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
  606. {
  607. static wname[32]
  608. get_weaponname(weaponid, wname, sizeof wname - 1)
  609. engclient_cmd(id, "drop", wname)
  610. }
  611. }
  612. }
  613.  

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


A hozzászólást 1 alkalommal szerkesztették, utoljára crazy` 2013.11.24. 12:45-kor.
javítva


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.23. 23:56 
Offline
Tag
Avatar

Csatlakozott: 2012.01.15. 12:09
Hozzászólások: 57
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 5 alkalommal
Még most se jó :S
Most meg se akarja venni, pedig jól írom be a parancsokat :(

_________________
Ha segítettem egy Kép jól jönne :D
In-game zenelejátszó pluginom
1.Szerver:
[S.W.A.T]Különleges kommandosok FUN/PUB
2.Szerver: Konfig alatt!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 10:36 
Offline
Tud valamit
Avatar

Csatlakozott: 2013.07.01. 23:32
Hozzászólások: 122
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 23 alkalommal
Szia!,
/balrogvetel
parancsal tudod lehívni!
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <engine>
  4. #include <fakemeta_util>
  5. #include <hamsandwich>
  6. #include <xs>
  7. #include <cstrike>
  8. #define ENG_NULLENT -1
  9. #define EV_INT_WEAPONKEY EV_INT_impulse
  10. #define b1_WEAPONKEY 621
  11. #define MAX_PLAYERS 32
  12. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  13.  
  14. const OFFSET_ACTIVE_ITEM = 373
  15. const OFFSET_WEAPONOWNER = 41
  16. const OFFSET_LINUX = 5
  17. const OFFSET_LINUX_WEAPONS = 4
  18.  
  19. #define WEAP_LINUX_XTRA_OFF 4
  20. #define m_fKnown 44
  21. #define m_flNextPrimaryAttack 46
  22. #define m_flTimeWeaponIdle 48
  23. #define m_iClip 51
  24. #define m_fInReload 54
  25. #define PLAYER_LINUX_XTRA_OFF 5
  26. #define m_flNextAttack 83
  27.  
  28. #define b1_SHOOT1 2
  29. #define b1_SHOOT2 3
  30. #define b1_SHOOT_EMPTY 3
  31. #define b1_RELOAD 4
  32. #define b1_DRAW 5
  33. #define b1_RELOAD_TIME 3.0
  34. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  35. #define JOG ADMIN_BAN
  36.  
  37.  
  38. new const Fire_Sounds[][] = { "weapons/balrog1-1.wav", "weapons/balrog1-2.wav" }
  39.  
  40. new b1_V_MODEL[64] = "models/v_balrog1.mdl"
  41. new b1_P_MODEL[64] = "models/p_balrog1.mdl"
  42. new b1_W_MODEL[64] = "models/w_balrog1.mdl"
  43.  
  44. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  45.  
  46. new cvar_dmg_b1, cvar_recoil_b1, g_itemid_b1, cvar_clip_b1, cvar_spd_b1, cvar_b1_ammo, cvar_dmg_exp
  47. new g_MaxPlayers, g_orig_event_b1, g_IsInPrimaryAttack, g_iClip
  48. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  49. new g_has_b1[33], g_clip_ammo[33], oldweap[33],g_b1_TmpClip[33]
  50. new gmsgWeaponList, gMode[33], sExplo
  51.  
  52. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  53. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_deagle", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  54. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  55. "weapon_ak47", "weapon_knife", "weapon_p90" }
  56.  
  57. public plugin_init()
  58. {
  59. register_plugin("[ZP] Extra: Balrog-I", "1.0", "Barney")
  60. register_event("CurWeapon","CurrentWeapon","be","1=1")
  61. RegisterHam(Ham_Item_AddToPlayer, "weapon_deagle", "fw_b1_AddToPlayer")
  62. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  63. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  64. RegisterHam(Ham_Item_PostFrame, "weapon_deagle", "b1_ItemPostFrame")
  65. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload")
  66. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload_Post", 1)
  67. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack")
  68. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack_Post", 1)
  69. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  70. register_forward(FM_SetModel, "fw_SetModel")
  71. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  72. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  73.  
  74. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  75. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  76. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  77. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  78. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  79. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  80. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  81.  
  82. cvar_dmg_b1 = register_cvar("zp_b1_dmg", "2.5")
  83. cvar_dmg_exp = register_cvar("zp_b1_dmg_exp", "300.")
  84. cvar_recoil_b1 = register_cvar("zp_b1_recoil", "1.0")
  85. cvar_clip_b1 = register_cvar("zp_b1_clip", "10")
  86. cvar_spd_b1 = register_cvar("zp_b1_spd", "0.7")
  87. cvar_b1_ammo = register_cvar("zp_b1_ammo", "100")
  88.  
  89. register_clcmd("say /balrogvetel","give_b1",ADMIN_BAN)
  90. g_MaxPlayers = get_maxplayers()
  91. gmsgWeaponList = get_user_msgid("WeaponList")
  92. }
  93.  
  94. public plugin_precache()
  95. {
  96. precache_model(b1_V_MODEL)
  97. precache_model(b1_P_MODEL)
  98. precache_model(b1_W_MODEL)
  99. for(new i = 0; i < sizeof Fire_Sounds; i++)
  100. precache_sound(Fire_Sounds[i])
  101. precache_sound("weapons/balrog1_changea.wav")
  102. precache_sound("weapons/balrog1_changeb.wav")
  103. precache_sound("weapons/balrog1_draw.wav")
  104. precache_sound("weapons/balrog1_reload.wav")
  105. precache_sound("weapons/balrog1_reloadb.wav")
  106. m_iBlood[0] = precache_model("sprites/blood.spr")
  107. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  108. precache_generic("sprites/weapon_balrog1.txt")
  109. precache_generic("sprites/640hud83.spr")
  110. precache_generic("sprites/640hud4.spr")
  111. sExplo = precache_model("sprites/balrogcritical.spr")
  112. register_clcmd("weapon_balrog1", "weapon_hook")
  113.  
  114. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  115. }
  116.  
  117. public weapon_hook(id)
  118. {
  119. engclient_cmd(id, "weapon_deagle")
  120. return PLUGIN_HANDLED
  121. }
  122.  
  123. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  124. {
  125. if(!is_user_alive(iAttacker))
  126. return
  127.  
  128. new g_currentweapon = get_user_weapon(iAttacker)
  129.  
  130. if(g_currentweapon != CSW_DEAGLE) return
  131.  
  132. if(!g_has_b1[iAttacker]) return
  133.  
  134. static Float:flEnd[3]
  135. get_tr2(ptr, TR_vecEndPos, flEnd)
  136.  
  137. if(iEnt)
  138. {
  139. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  140. write_byte(TE_DECAL)
  141. write_coord_f(flEnd[0])
  142. write_coord_f(flEnd[1])
  143. write_coord_f(flEnd[2])
  144. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  145. write_short(iEnt)
  146. message_end()
  147. }
  148. else
  149. {
  150. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  151. write_byte(TE_WORLDDECAL)
  152. write_coord_f(flEnd[0])
  153. write_coord_f(flEnd[1])
  154. write_coord_f(flEnd[2])
  155. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  156. message_end()
  157. }
  158. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  159. write_byte(TE_GUNSHOTDECAL)
  160. write_coord_f(flEnd[0])
  161. write_coord_f(flEnd[1])
  162. write_coord_f(flEnd[2])
  163. write_short(iAttacker)
  164. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  165. message_end()
  166. }
  167.  
  168. public zp_user_humanized_post(id)
  169. {
  170. g_has_b1[id] = false
  171. }
  172.  
  173. public plugin_natives ()
  174. {
  175. register_native("give_b1", "native_give_weapon_add", 1)
  176. }
  177. public native_give_weapon_add(id)
  178. {
  179. give_b1(id)
  180. }
  181.  
  182. public fwPrecacheEvent_Post(type, const name[])
  183. {
  184. if (equal("events/deagle.sc", name))
  185. {
  186. g_orig_event_b1 = get_orig_retval()
  187. return FMRES_HANDLED
  188. }
  189. return FMRES_IGNORED
  190. }
  191.  
  192. public client_connect(id)
  193. {
  194. g_has_b1[id] = false
  195. }
  196.  
  197. public client_disconnect(id)
  198. {
  199. g_has_b1[id] = false
  200. }
  201.  
  202. public fw_SetModel(entity, model[])
  203. {
  204. if(!is_valid_ent(entity))
  205. return FMRES_IGNORED
  206.  
  207. static szClassName[33]
  208. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  209.  
  210. if(!equal(szClassName, "weaponbox"))
  211. return FMRES_IGNORED
  212.  
  213. static iOwner
  214.  
  215. iOwner = entity_get_edict(entity, EV_ENT_owner)
  216.  
  217. if(equal(model, "models/w_deagle.mdl"))
  218. {
  219. static iStoredAugID
  220.  
  221. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_deagle", entity)
  222.  
  223. if(!is_valid_ent(iStoredAugID))
  224. return FMRES_IGNORED
  225.  
  226. if(g_has_b1[iOwner])
  227. {
  228. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, b1_WEAPONKEY)
  229.  
  230. g_has_b1[iOwner] = false
  231.  
  232. entity_set_model(entity, b1_W_MODEL)
  233.  
  234. return FMRES_SUPERCEDE
  235. }
  236. }
  237. return FMRES_IGNORED
  238. }
  239.  
  240. public give_b1(id)
  241. {
  242. drop_weapons(id, 2)
  243. new iWep2 = fm_give_item(id,"weapon_deagle")
  244. if( iWep2 > 0 )
  245. {
  246. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_b1))
  247. cs_set_user_bpammo (id, CSW_DEAGLE, get_pcvar_num(cvar_b1_ammo))
  248. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  249. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  250.  
  251. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  252. write_string("weapon_balrog1")
  253. write_byte(8)
  254. write_byte(35)
  255. write_byte(-1)
  256. write_byte(-1)
  257. write_byte(1)
  258. write_byte(1)
  259. write_byte(CSW_DEAGLE)
  260. message_end()
  261. }
  262. g_has_b1[id] = true
  263. }
  264.  
  265. public zp_extra_item_selected(id, itemid)
  266. {
  267. if(get_user_flags(id) && ADMIN_BAN)
  268. if(itemid != g_itemid_b1)
  269. give_b1(id)
  270. return
  271. }
  272.  
  273. public fw_b1_AddToPlayer(b1, id)
  274. {
  275. if(!is_valid_ent(b1) || !is_user_connected(id))
  276. return HAM_IGNORED
  277.  
  278. if(entity_get_int(b1, EV_INT_WEAPONKEY) == b1_WEAPONKEY)
  279. {
  280. g_has_b1[id] = true
  281.  
  282. entity_set_int(b1, EV_INT_WEAPONKEY, 0)
  283.  
  284. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  285. write_string("weapon_balrog1")
  286. write_byte(8)
  287. write_byte(35)
  288. write_byte(-1)
  289. write_byte(-1)
  290. write_byte(1)
  291. write_byte(1)
  292. write_byte(CSW_DEAGLE)
  293. message_end()
  294.  
  295. return HAM_HANDLED
  296. }
  297. else
  298. {
  299. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  300. write_string("weapon_deagle")
  301. write_byte(8)
  302. write_byte(35)
  303. write_byte(-1)
  304. write_byte(-1)
  305. write_byte(1)
  306. write_byte(1)
  307. write_byte(CSW_DEAGLE)
  308. message_end()
  309. }
  310. return HAM_IGNORED
  311. }
  312.  
  313. public fw_Item_Deploy_Post(weapon_ent)
  314. {
  315. static owner
  316. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  317.  
  318. static weaponid
  319. weaponid = cs_get_weapon_id(weapon_ent)
  320. replace_weapon_models(owner, weaponid)
  321. }
  322.  
  323. public CurrentWeapon(id)
  324. {
  325. replace_weapon_models(id, read_data(2))
  326.  
  327. if(read_data(2) != CSW_DEAGLE || !g_has_b1[id])
  328. return
  329.  
  330. static Float:iSpeed
  331. if(g_has_b1[id])
  332. iSpeed = get_pcvar_float(cvar_spd_b1)
  333.  
  334. static weapon[32],Ent
  335. get_weaponname(read_data(2),weapon,31)
  336. Ent = find_ent_by_owner(-1,weapon,id)
  337. if(Ent)
  338. {
  339. static Float:Delay
  340. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  341. if (Delay > 0.0)
  342. {
  343. set_pdata_float(Ent, 46, Delay, 4)
  344. }
  345. }
  346. }
  347.  
  348. replace_weapon_models(id, weaponid)
  349. {
  350. switch (weaponid)
  351. {
  352. case CSW_DEAGLE:
  353. {
  354. if (is_user_alive(id))
  355. return
  356.  
  357. if(g_has_b1[id])
  358. {
  359. set_pev(id, pev_viewmodel2, b1_V_MODEL)
  360. set_pev(id, pev_weaponmodel2, b1_P_MODEL)
  361. if(oldweap[id] != CSW_DEAGLE)
  362. {
  363. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  364. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  365. gMode[id] = 0
  366. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  367. write_string("weapon_balrog1")
  368. write_byte(8)
  369. write_byte(35)
  370. write_byte(-1)
  371. write_byte(-1)
  372. write_byte(1)
  373. write_byte(1)
  374. write_byte(CSW_DEAGLE)
  375. message_end()
  376. }
  377. }
  378. }
  379. }
  380. oldweap[id] = weaponid
  381. }
  382.  
  383. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  384. {
  385. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_DEAGLE || !g_has_b1[Player]))
  386. return FMRES_IGNORED
  387.  
  388. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  389. return FMRES_HANDLED
  390. }
  391.  
  392. public fw_b1_PrimaryAttack(Weapon)
  393. {
  394. new Player = get_pdata_cbase(Weapon, 41, 4)
  395.  
  396. if (!g_has_b1[Player])
  397. return
  398.  
  399. g_IsInPrimaryAttack = 1
  400. pev(Player,pev_punchangle,cl_pushangle[Player])
  401.  
  402. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  403. g_iClip = cs_get_weapon_ammo(Weapon)
  404. }
  405.  
  406. public explode(id)
  407. {
  408. if(is_user_alive(id))
  409. {
  410. new Float:originF[3]
  411. fm_get_aim_origin(id,originF)
  412. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  413. write_byte(TE_EXPLOSION)
  414. engfunc(EngFunc_WriteCoord, originF[0])
  415. engfunc(EngFunc_WriteCoord, originF[1])
  416. engfunc(EngFunc_WriteCoord, originF[2])
  417. write_short(sExplo)
  418. write_byte(20)
  419. write_byte(50)
  420. write_byte(0)
  421. message_end()
  422. new a = FM_NULLENT
  423. while((a = find_ent_in_sphere(a,originF,200.0)) != 0)
  424. {
  425. if(pev(a,pev_takedamage)!=DAMAGE_NO)
  426. {
  427. ExecuteHamB( Ham_TakeDamage, a ,id ,id, get_pcvar_float(cvar_dmg_exp), DMG_BULLET )
  428. }
  429. }
  430. }
  431. }
  432.  
  433. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  434. {
  435. if ((eventid != g_orig_event_b1) || !g_IsInPrimaryAttack)
  436. return FMRES_IGNORED
  437. if (!(1 <= invoker <= g_MaxPlayers))
  438. return FMRES_IGNORED
  439.  
  440. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  441. return FMRES_SUPERCEDE
  442. }
  443.  
  444. public fw_b1_PrimaryAttack_Post(Weapon)
  445. {
  446. g_IsInPrimaryAttack = 0
  447. new Player = get_pdata_cbase(Weapon, 41, 4)
  448.  
  449. new szClip, szAmmo
  450. get_user_weapon(Player, szClip, szAmmo)
  451.  
  452. if(!is_user_alive(Player))
  453. return
  454.  
  455. if (g_iClip <= cs_get_weapon_ammo(Weapon))
  456. return
  457.  
  458. if(g_has_b1[Player])
  459. {
  460. if (!g_clip_ammo[Player])
  461. return
  462.  
  463. new Float:push[3]
  464. pev(Player,pev_punchangle,push)
  465. xs_vec_sub(push,cl_pushangle[Player],push)
  466.  
  467. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_b1),push)
  468. xs_vec_add(push,cl_pushangle[Player],push)
  469. set_pev(Player,pev_punchangle,push)
  470. if( gMode[Player] ) {
  471. explode(Player)
  472. set_pdata_float( Player, 83, 2.0 )
  473. }
  474. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[gMode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  475. UTIL_PlayWeaponAnimation(Player, gMode[Player]?b1_SHOOT2:b1_SHOOT1)
  476. if( gMode[Player] ) gMode[Player] = 0
  477. }
  478. }
  479.  
  480. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  481. {
  482. if (victim != attacker && is_user_connected(attacker))
  483. {
  484. if(get_user_weapon(attacker) == CSW_DEAGLE)
  485. {
  486. if(g_has_b1[attacker])
  487. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_b1))
  488. }
  489. }
  490. }
  491.  
  492. stock fm_cs_get_current_weapon_ent(id)
  493. {
  494. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  495. }
  496.  
  497. stock fm_cs_get_weapon_ent_owner(ent)
  498. {
  499. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  500. }
  501.  
  502. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  503. {
  504. set_pev(Player, pev_weaponanim, Sequence)
  505.  
  506. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  507. write_byte(Sequence)
  508. write_byte(pev(Player, pev_body))
  509. message_end()
  510. }
  511.  
  512. public b1_ItemPostFrame(weapon_entity)
  513. {
  514. new id = pev(weapon_entity, pev_owner)
  515. if (!is_user_connected(id))
  516. return HAM_IGNORED
  517.  
  518. if (!g_has_b1[id])
  519. return HAM_IGNORED
  520.  
  521. static iClipExtra
  522.  
  523. iClipExtra = get_pcvar_num(cvar_clip_b1)
  524. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  525.  
  526. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE);
  527. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  528.  
  529. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  530. if( pev( id, pev_button ) & IN_ATTACK2 && flNextAttack <= 0.0) {
  531. UTIL_PlayWeaponAnimation(id, !gMode[id]?6:7 )
  532. gMode[id] = (gMode[id]?0:1)
  533. set_pdata_float( id, 83, 2.0 )
  534. }
  535. if( fInReload && flNextAttack <= 0.0 )
  536. {
  537. new j = min(iClipExtra - iClip, iBpAmmo)
  538.  
  539. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  540. cs_set_user_bpammo(id, CSW_DEAGLE, iBpAmmo-j)
  541.  
  542. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  543. fInReload = 0
  544. }
  545. return HAM_IGNORED
  546. }
  547.  
  548. public b1_Reload(weapon_entity)
  549. {
  550. new id = pev(weapon_entity, pev_owner)
  551. if (!is_user_connected(id))
  552. return HAM_IGNORED
  553.  
  554. if (!g_has_b1[id])
  555. return HAM_IGNORED
  556.  
  557. static iClipExtra
  558.  
  559. if(g_has_b1[id])
  560. iClipExtra = get_pcvar_num(cvar_clip_b1)
  561.  
  562. g_b1_TmpClip[id] = -1
  563.  
  564. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE)
  565. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  566.  
  567. if (iBpAmmo <= 0)
  568. return HAM_SUPERCEDE
  569.  
  570. if (iClip >= iClipExtra)
  571. return HAM_SUPERCEDE
  572.  
  573. g_b1_TmpClip[id] = iClip
  574.  
  575. return HAM_IGNORED
  576. }
  577.  
  578. public b1_Reload_Post(weapon_entity)
  579. {
  580. new id = pev(weapon_entity, pev_owner)
  581. if (!is_user_connected(id))
  582. return HAM_IGNORED
  583.  
  584. if (!g_has_b1[id])
  585. return HAM_IGNORED
  586.  
  587. if (g_b1_TmpClip[id] == -1)
  588. return HAM_IGNORED
  589.  
  590. set_pdata_int(weapon_entity, m_iClip, g_b1_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  591.  
  592. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, b1_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  593.  
  594. set_pdata_float(id, m_flNextAttack, b1_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  595.  
  596. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  597.  
  598. UTIL_PlayWeaponAnimation(id, gMode[id]?8:b1_RELOAD)
  599. gMode[id] = 0
  600.  
  601. return HAM_IGNORED
  602. }
  603.  
  604. stock drop_weapons(id, dropwhat)
  605. {
  606. static weapons[32], num, i, weaponid
  607. num = 0
  608. get_user_weapons(id, weapons, num)
  609.  
  610. for (i = 0; i < num; i++)
  611. {
  612. weaponid = weapons[i]
  613.  
  614. if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
  615. {
  616. static wname[32]
  617. get_weaponname(weaponid, wname, sizeof wname - 1)
  618. engclient_cmd(id, "drop", wname)
  619. }
  620. }
  621. }
  622. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  623. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  624. */
  625. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  626. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  627. */
  628.  

_________________
Kép

Ők köszönték meg InFeCt nek ezt a hozzászólást: RapperFeri (2013.11.24. 19:33)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 11:21 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
InFeCt írta:
Szia!,
/balrogvetel
parancsal tudod lehívni!
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <engine>
  4. #include <fakemeta_util>
  5. #include <hamsandwich>
  6. #include <xs>
  7. #include <cstrike>
  8. #define ENG_NULLENT -1
  9. #define EV_INT_WEAPONKEY EV_INT_impulse
  10. #define b1_WEAPONKEY 621
  11. #define MAX_PLAYERS 32
  12. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  13.  
  14. const OFFSET_ACTIVE_ITEM = 373
  15. const OFFSET_WEAPONOWNER = 41
  16. const OFFSET_LINUX = 5
  17. const OFFSET_LINUX_WEAPONS = 4
  18.  
  19. #define WEAP_LINUX_XTRA_OFF 4
  20. #define m_fKnown 44
  21. #define m_flNextPrimaryAttack 46
  22. #define m_flTimeWeaponIdle 48
  23. #define m_iClip 51
  24. #define m_fInReload 54
  25. #define PLAYER_LINUX_XTRA_OFF 5
  26. #define m_flNextAttack 83
  27.  
  28. #define b1_SHOOT1 2
  29. #define b1_SHOOT2 3
  30. #define b1_SHOOT_EMPTY 3
  31. #define b1_RELOAD 4
  32. #define b1_DRAW 5
  33. #define b1_RELOAD_TIME 3.0
  34. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  35. #define JOG ADMIN_BAN
  36.  
  37.  
  38. new const Fire_Sounds[][] = { "weapons/balrog1-1.wav", "weapons/balrog1-2.wav" }
  39.  
  40. new b1_V_MODEL[64] = "models/v_balrog1.mdl"
  41. new b1_P_MODEL[64] = "models/p_balrog1.mdl"
  42. new b1_W_MODEL[64] = "models/w_balrog1.mdl"
  43.  
  44. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  45.  
  46. new cvar_dmg_b1, cvar_recoil_b1, g_itemid_b1, cvar_clip_b1, cvar_spd_b1, cvar_b1_ammo, cvar_dmg_exp
  47. new g_MaxPlayers, g_orig_event_b1, g_IsInPrimaryAttack, g_iClip
  48. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  49. new g_has_b1[33], g_clip_ammo[33], oldweap[33],g_b1_TmpClip[33]
  50. new gmsgWeaponList, gMode[33], sExplo
  51.  
  52. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  53. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_deagle", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  54. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  55. "weapon_ak47", "weapon_knife", "weapon_p90" }
  56.  
  57. public plugin_init()
  58. {
  59. register_plugin("[ZP] Extra: Balrog-I", "1.0", "Barney")
  60. register_event("CurWeapon","CurrentWeapon","be","1=1")
  61. RegisterHam(Ham_Item_AddToPlayer, "weapon_deagle", "fw_b1_AddToPlayer")
  62. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  63. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  64. RegisterHam(Ham_Item_PostFrame, "weapon_deagle", "b1_ItemPostFrame")
  65. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload")
  66. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload_Post", 1)
  67. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack")
  68. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack_Post", 1)
  69. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  70. register_forward(FM_SetModel, "fw_SetModel")
  71. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  72. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  73.  
  74. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  75. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  76. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  77. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  78. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  79. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  80. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  81.  
  82. cvar_dmg_b1 = register_cvar("zp_b1_dmg", "2.5")
  83. cvar_dmg_exp = register_cvar("zp_b1_dmg_exp", "300.")
  84. cvar_recoil_b1 = register_cvar("zp_b1_recoil", "1.0")
  85. cvar_clip_b1 = register_cvar("zp_b1_clip", "10")
  86. cvar_spd_b1 = register_cvar("zp_b1_spd", "0.7")
  87. cvar_b1_ammo = register_cvar("zp_b1_ammo", "100")
  88.  
  89. register_clcmd("say /balrogvetel","give_b1",ADMIN_BAN)
  90. g_MaxPlayers = get_maxplayers()
  91. gmsgWeaponList = get_user_msgid("WeaponList")
  92. }
  93.  
  94. public plugin_precache()
  95. {
  96. precache_model(b1_V_MODEL)
  97. precache_model(b1_P_MODEL)
  98. precache_model(b1_W_MODEL)
  99. for(new i = 0; i < sizeof Fire_Sounds; i++)
  100. precache_sound(Fire_Sounds[i])
  101. precache_sound("weapons/balrog1_changea.wav")
  102. precache_sound("weapons/balrog1_changeb.wav")
  103. precache_sound("weapons/balrog1_draw.wav")
  104. precache_sound("weapons/balrog1_reload.wav")
  105. precache_sound("weapons/balrog1_reloadb.wav")
  106. m_iBlood[0] = precache_model("sprites/blood.spr")
  107. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  108. precache_generic("sprites/weapon_balrog1.txt")
  109. precache_generic("sprites/640hud83.spr")
  110. precache_generic("sprites/640hud4.spr")
  111. sExplo = precache_model("sprites/balrogcritical.spr")
  112. register_clcmd("weapon_balrog1", "weapon_hook")
  113.  
  114. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  115. }
  116.  
  117. public weapon_hook(id)
  118. {
  119. engclient_cmd(id, "weapon_deagle")
  120. return PLUGIN_HANDLED
  121. }
  122.  
  123. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  124. {
  125. if(!is_user_alive(iAttacker))
  126. return
  127.  
  128. new g_currentweapon = get_user_weapon(iAttacker)
  129.  
  130. if(g_currentweapon != CSW_DEAGLE) return
  131.  
  132. if(!g_has_b1[iAttacker]) return
  133.  
  134. static Float:flEnd[3]
  135. get_tr2(ptr, TR_vecEndPos, flEnd)
  136.  
  137. if(iEnt)
  138. {
  139. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  140. write_byte(TE_DECAL)
  141. write_coord_f(flEnd[0])
  142. write_coord_f(flEnd[1])
  143. write_coord_f(flEnd[2])
  144. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  145. write_short(iEnt)
  146. message_end()
  147. }
  148. else
  149. {
  150. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  151. write_byte(TE_WORLDDECAL)
  152. write_coord_f(flEnd[0])
  153. write_coord_f(flEnd[1])
  154. write_coord_f(flEnd[2])
  155. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  156. message_end()
  157. }
  158. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  159. write_byte(TE_GUNSHOTDECAL)
  160. write_coord_f(flEnd[0])
  161. write_coord_f(flEnd[1])
  162. write_coord_f(flEnd[2])
  163. write_short(iAttacker)
  164. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  165. message_end()
  166. }
  167.  
  168. public zp_user_humanized_post(id)
  169. {
  170. g_has_b1[id] = false
  171. }
  172.  
  173. public plugin_natives ()
  174. {
  175. register_native("give_b1", "native_give_weapon_add", 1)
  176. }
  177. public native_give_weapon_add(id)
  178. {
  179. give_b1(id)
  180. }
  181.  
  182. public fwPrecacheEvent_Post(type, const name[])
  183. {
  184. if (equal("events/deagle.sc", name))
  185. {
  186. g_orig_event_b1 = get_orig_retval()
  187. return FMRES_HANDLED
  188. }
  189. return FMRES_IGNORED
  190. }
  191.  
  192. public client_connect(id)
  193. {
  194. g_has_b1[id] = false
  195. }
  196.  
  197. public client_disconnect(id)
  198. {
  199. g_has_b1[id] = false
  200. }
  201.  
  202. public fw_SetModel(entity, model[])
  203. {
  204. if(!is_valid_ent(entity))
  205. return FMRES_IGNORED
  206.  
  207. static szClassName[33]
  208. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  209.  
  210. if(!equal(szClassName, "weaponbox"))
  211. return FMRES_IGNORED
  212.  
  213. static iOwner
  214.  
  215. iOwner = entity_get_edict(entity, EV_ENT_owner)
  216.  
  217. if(equal(model, "models/w_deagle.mdl"))
  218. {
  219. static iStoredAugID
  220.  
  221. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_deagle", entity)
  222.  
  223. if(!is_valid_ent(iStoredAugID))
  224. return FMRES_IGNORED
  225.  
  226. if(g_has_b1[iOwner])
  227. {
  228. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, b1_WEAPONKEY)
  229.  
  230. g_has_b1[iOwner] = false
  231.  
  232. entity_set_model(entity, b1_W_MODEL)
  233.  
  234. return FMRES_SUPERCEDE
  235. }
  236. }
  237. return FMRES_IGNORED
  238. }
  239.  
  240. public give_b1(id)
  241. {
  242. drop_weapons(id, 2)
  243. new iWep2 = fm_give_item(id,"weapon_deagle")
  244. if( iWep2 > 0 )
  245. {
  246. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_b1))
  247. cs_set_user_bpammo (id, CSW_DEAGLE, get_pcvar_num(cvar_b1_ammo))
  248. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  249. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  250.  
  251. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  252. write_string("weapon_balrog1")
  253. write_byte(8)
  254. write_byte(35)
  255. write_byte(-1)
  256. write_byte(-1)
  257. write_byte(1)
  258. write_byte(1)
  259. write_byte(CSW_DEAGLE)
  260. message_end()
  261. }
  262. g_has_b1[id] = true
  263. }
  264.  
  265. public zp_extra_item_selected(id, itemid)
  266. {
  267. if(get_user_flags(id) && ADMIN_BAN)
  268. if(itemid != g_itemid_b1)
  269. give_b1(id)
  270. return
  271. }
  272.  
  273. public fw_b1_AddToPlayer(b1, id)
  274. {
  275. if(!is_valid_ent(b1) || !is_user_connected(id))
  276. return HAM_IGNORED
  277.  
  278. if(entity_get_int(b1, EV_INT_WEAPONKEY) == b1_WEAPONKEY)
  279. {
  280. g_has_b1[id] = true
  281.  
  282. entity_set_int(b1, EV_INT_WEAPONKEY, 0)
  283.  
  284. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  285. write_string("weapon_balrog1")
  286. write_byte(8)
  287. write_byte(35)
  288. write_byte(-1)
  289. write_byte(-1)
  290. write_byte(1)
  291. write_byte(1)
  292. write_byte(CSW_DEAGLE)
  293. message_end()
  294.  
  295. return HAM_HANDLED
  296. }
  297. else
  298. {
  299. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  300. write_string("weapon_deagle")
  301. write_byte(8)
  302. write_byte(35)
  303. write_byte(-1)
  304. write_byte(-1)
  305. write_byte(1)
  306. write_byte(1)
  307. write_byte(CSW_DEAGLE)
  308. message_end()
  309. }
  310. return HAM_IGNORED
  311. }
  312.  
  313. public fw_Item_Deploy_Post(weapon_ent)
  314. {
  315. static owner
  316. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  317.  
  318. static weaponid
  319. weaponid = cs_get_weapon_id(weapon_ent)
  320. replace_weapon_models(owner, weaponid)
  321. }
  322.  
  323. public CurrentWeapon(id)
  324. {
  325. replace_weapon_models(id, read_data(2))
  326.  
  327. if(read_data(2) != CSW_DEAGLE || !g_has_b1[id])
  328. return
  329.  
  330. static Float:iSpeed
  331. if(g_has_b1[id])
  332. iSpeed = get_pcvar_float(cvar_spd_b1)
  333.  
  334. static weapon[32],Ent
  335. get_weaponname(read_data(2),weapon,31)
  336. Ent = find_ent_by_owner(-1,weapon,id)
  337. if(Ent)
  338. {
  339. static Float:Delay
  340. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  341. if (Delay > 0.0)
  342. {
  343. set_pdata_float(Ent, 46, Delay, 4)
  344. }
  345. }
  346. }
  347.  
  348. replace_weapon_models(id, weaponid)
  349. {
  350. switch (weaponid)
  351. {
  352. case CSW_DEAGLE:
  353. {
  354. if (is_user_alive(id))
  355. return
  356.  
  357. if(g_has_b1[id])
  358. {
  359. set_pev(id, pev_viewmodel2, b1_V_MODEL)
  360. set_pev(id, pev_weaponmodel2, b1_P_MODEL)
  361. if(oldweap[id] != CSW_DEAGLE)
  362. {
  363. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  364. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  365. gMode[id] = 0
  366. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  367. write_string("weapon_balrog1")
  368. write_byte(8)
  369. write_byte(35)
  370. write_byte(-1)
  371. write_byte(-1)
  372. write_byte(1)
  373. write_byte(1)
  374. write_byte(CSW_DEAGLE)
  375. message_end()
  376. }
  377. }
  378. }
  379. }
  380. oldweap[id] = weaponid
  381. }
  382.  
  383. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  384. {
  385. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_DEAGLE || !g_has_b1[Player]))
  386. return FMRES_IGNORED
  387.  
  388. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  389. return FMRES_HANDLED
  390. }
  391.  
  392. public fw_b1_PrimaryAttack(Weapon)
  393. {
  394. new Player = get_pdata_cbase(Weapon, 41, 4)
  395.  
  396. if (!g_has_b1[Player])
  397. return
  398.  
  399. g_IsInPrimaryAttack = 1
  400. pev(Player,pev_punchangle,cl_pushangle[Player])
  401.  
  402. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  403. g_iClip = cs_get_weapon_ammo(Weapon)
  404. }
  405.  
  406. public explode(id)
  407. {
  408. if(is_user_alive(id))
  409. {
  410. new Float:originF[3]
  411. fm_get_aim_origin(id,originF)
  412. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  413. write_byte(TE_EXPLOSION)
  414. engfunc(EngFunc_WriteCoord, originF[0])
  415. engfunc(EngFunc_WriteCoord, originF[1])
  416. engfunc(EngFunc_WriteCoord, originF[2])
  417. write_short(sExplo)
  418. write_byte(20)
  419. write_byte(50)
  420. write_byte(0)
  421. message_end()
  422. new a = FM_NULLENT
  423. while((a = find_ent_in_sphere(a,originF,200.0)) != 0)
  424. {
  425. if(pev(a,pev_takedamage)!=DAMAGE_NO)
  426. {
  427. ExecuteHamB( Ham_TakeDamage, a ,id ,id, get_pcvar_float(cvar_dmg_exp), DMG_BULLET )
  428. }
  429. }
  430. }
  431. }
  432.  
  433. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  434. {
  435. if ((eventid != g_orig_event_b1) || !g_IsInPrimaryAttack)
  436. return FMRES_IGNORED
  437. if (!(1 <= invoker <= g_MaxPlayers))
  438. return FMRES_IGNORED
  439.  
  440. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  441. return FMRES_SUPERCEDE
  442. }
  443.  
  444. public fw_b1_PrimaryAttack_Post(Weapon)
  445. {
  446. g_IsInPrimaryAttack = 0
  447. new Player = get_pdata_cbase(Weapon, 41, 4)
  448.  
  449. new szClip, szAmmo
  450. get_user_weapon(Player, szClip, szAmmo)
  451.  
  452. if(!is_user_alive(Player))
  453. return
  454.  
  455. if (g_iClip <= cs_get_weapon_ammo(Weapon))
  456. return
  457.  
  458. if(g_has_b1[Player])
  459. {
  460. if (!g_clip_ammo[Player])
  461. return
  462.  
  463. new Float:push[3]
  464. pev(Player,pev_punchangle,push)
  465. xs_vec_sub(push,cl_pushangle[Player],push)
  466.  
  467. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_b1),push)
  468. xs_vec_add(push,cl_pushangle[Player],push)
  469. set_pev(Player,pev_punchangle,push)
  470. if( gMode[Player] ) {
  471. explode(Player)
  472. set_pdata_float( Player, 83, 2.0 )
  473. }
  474. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[gMode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  475. UTIL_PlayWeaponAnimation(Player, gMode[Player]?b1_SHOOT2:b1_SHOOT1)
  476. if( gMode[Player] ) gMode[Player] = 0
  477. }
  478. }
  479.  
  480. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  481. {
  482. if (victim != attacker && is_user_connected(attacker))
  483. {
  484. if(get_user_weapon(attacker) == CSW_DEAGLE)
  485. {
  486. if(g_has_b1[attacker])
  487. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_b1))
  488. }
  489. }
  490. }
  491.  
  492. stock fm_cs_get_current_weapon_ent(id)
  493. {
  494. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  495. }
  496.  
  497. stock fm_cs_get_weapon_ent_owner(ent)
  498. {
  499. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  500. }
  501.  
  502. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  503. {
  504. set_pev(Player, pev_weaponanim, Sequence)
  505.  
  506. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  507. write_byte(Sequence)
  508. write_byte(pev(Player, pev_body))
  509. message_end()
  510. }
  511.  
  512. public b1_ItemPostFrame(weapon_entity)
  513. {
  514. new id = pev(weapon_entity, pev_owner)
  515. if (!is_user_connected(id))
  516. return HAM_IGNORED
  517.  
  518. if (!g_has_b1[id])
  519. return HAM_IGNORED
  520.  
  521. static iClipExtra
  522.  
  523. iClipExtra = get_pcvar_num(cvar_clip_b1)
  524. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  525.  
  526. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE);
  527. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  528.  
  529. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  530. if( pev( id, pev_button ) & IN_ATTACK2 && flNextAttack <= 0.0) {
  531. UTIL_PlayWeaponAnimation(id, !gMode[id]?6:7 )
  532. gMode[id] = (gMode[id]?0:1)
  533. set_pdata_float( id, 83, 2.0 )
  534. }
  535. if( fInReload && flNextAttack <= 0.0 )
  536. {
  537. new j = min(iClipExtra - iClip, iBpAmmo)
  538.  
  539. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  540. cs_set_user_bpammo(id, CSW_DEAGLE, iBpAmmo-j)
  541.  
  542. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  543. fInReload = 0
  544. }
  545. return HAM_IGNORED
  546. }
  547.  
  548. public b1_Reload(weapon_entity)
  549. {
  550. new id = pev(weapon_entity, pev_owner)
  551. if (!is_user_connected(id))
  552. return HAM_IGNORED
  553.  
  554. if (!g_has_b1[id])
  555. return HAM_IGNORED
  556.  
  557. static iClipExtra
  558.  
  559. if(g_has_b1[id])
  560. iClipExtra = get_pcvar_num(cvar_clip_b1)
  561.  
  562. g_b1_TmpClip[id] = -1
  563.  
  564. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE)
  565. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  566.  
  567. if (iBpAmmo <= 0)
  568. return HAM_SUPERCEDE
  569.  
  570. if (iClip >= iClipExtra)
  571. return HAM_SUPERCEDE
  572.  
  573. g_b1_TmpClip[id] = iClip
  574.  
  575. return HAM_IGNORED
  576. }
  577.  
  578. public b1_Reload_Post(weapon_entity)
  579. {
  580. new id = pev(weapon_entity, pev_owner)
  581. if (!is_user_connected(id))
  582. return HAM_IGNORED
  583.  
  584. if (!g_has_b1[id])
  585. return HAM_IGNORED
  586.  
  587. if (g_b1_TmpClip[id] == -1)
  588. return HAM_IGNORED
  589.  
  590. set_pdata_int(weapon_entity, m_iClip, g_b1_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  591.  
  592. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, b1_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  593.  
  594. set_pdata_float(id, m_flNextAttack, b1_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  595.  
  596. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  597.  
  598. UTIL_PlayWeaponAnimation(id, gMode[id]?8:b1_RELOAD)
  599. gMode[id] = 0
  600.  
  601. return HAM_IGNORED
  602. }
  603.  
  604. stock drop_weapons(id, dropwhat)
  605. {
  606. static weapons[32], num, i, weaponid
  607. num = 0
  608. get_user_weapons(id, weapons, num)
  609.  
  610. for (i = 0; i < num; i++)
  611. {
  612. weaponid = weapons[i]
  613.  
  614. if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
  615. {
  616. static wname[32]
  617. get_weaponname(weaponid, wname, sizeof wname - 1)
  618. engclient_cmd(id, "drop", wname)
  619. }
  620. }
  621. }
  622. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  623. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  624. */
  625. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  626. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
  627. */
  628.  


szerinted ha atirod "balrogvetel"-re akkor menni fog? ha hazaertem megnezem, es javitom.

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


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 11:50 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.09.23. 20:29
Hozzászólások: 325
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 87 alkalommal
Gondolom ,hogy public szerverre lenne.
Ezért kivettem belőle a zombieplague inc-t és a fölösleges függvényeket....
Tesztelve.

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta_util>
  4. #include <hamsandwich>
  5. #include <cstrike>
  6.  
  7. #define ENG_NULLENT -1
  8. #define EV_INT_WEAPONKEY EV_INT_impulse
  9. #define b1_WEAPONKEY 621
  10. #define MAX_PLAYERS 32
  11. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  12.  
  13. const OFFSET_ACTIVE_ITEM = 373
  14. const OFFSET_WEAPONOWNER = 41
  15. const OFFSET_LINUX = 5
  16. const OFFSET_LINUX_WEAPONS = 4
  17.  
  18. #define WEAP_LINUX_XTRA_OFF 4
  19. #define m_fKnown 44
  20. #define m_flNextPrimaryAttack 46
  21. #define m_flTimeWeaponIdle 48
  22. #define m_iClip 51
  23. #define m_fInReload 54
  24. #define PLAYER_LINUX_XTRA_OFF 5
  25. #define m_flNextAttack 83
  26.  
  27. #define b1_SHOOT1 2
  28. #define b1_SHOOT2 3
  29. #define b1_SHOOT_EMPTY 3
  30. #define b1_RELOAD 4
  31. #define b1_DRAW 5
  32. #define b1_RELOAD_TIME 3.0
  33. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  34.  
  35. new const Fire_Sounds[][] = { "weapons/balrog1-1.wav", "weapons/balrog1-2.wav" }
  36.  
  37. new b1_V_MODEL[64] = "models/v_balrog1.mdl"
  38. new b1_P_MODEL[64] = "models/p_balrog1.mdl"
  39. new b1_W_MODEL[64] = "models/w_balrog1.mdl"
  40.  
  41. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  42.  
  43. new cvar_dmg_b1, cvar_recoil_b1, cvar_clip_b1, cvar_spd_b1, cvar_b1_ammo, cvar_dmg_exp
  44. new g_MaxPlayers, g_orig_event_b1, g_IsInPrimaryAttack, g_iClip
  45. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  46. new g_has_b1[33], g_clip_ammo[33], oldweap[33],g_b1_TmpClip[33]
  47. new gmsgWeaponList, gMode[33], sExplo
  48.  
  49. const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
  50. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_deagle", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  51. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  52. "weapon_ak47", "weapon_knife", "weapon_p90" }
  53.  
  54. public plugin_init()
  55. {
  56. register_plugin("[ZP] Extra: Balrog-I", "1.0", "Barney")
  57. register_event("CurWeapon","CurrentWeapon","be","1=1")
  58. RegisterHam(Ham_Item_AddToPlayer, "weapon_deagle", "fw_b1_AddToPlayer")
  59. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  60. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  61. RegisterHam(Ham_Item_PostFrame, "weapon_deagle", "b1_ItemPostFrame")
  62. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload")
  63. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "b1_Reload_Post", 1)
  64. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack")
  65. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "fw_b1_PrimaryAttack_Post", 1)
  66. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  67. register_forward(FM_SetModel, "fw_SetModel")
  68. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  69. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  70.  
  71. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  72. RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  73. RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  74. RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  75. RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  76. RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  77. RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  78.  
  79. cvar_dmg_b1 = register_cvar("amx_b1_dmg", "2.5")
  80. cvar_dmg_exp = register_cvar("amx_b1_dmg_exp", "300.")
  81. cvar_recoil_b1 = register_cvar("amx_b1_recoil", "1.0")
  82. cvar_clip_b1 = register_cvar("amx_b1_clip", "10")
  83. cvar_spd_b1 = register_cvar("amx_b1_spd", "0.7")
  84. cvar_b1_ammo = register_cvar("amx_b1_ammo", "100")
  85.  
  86. register_clcmd("say /deagle", "give_b1");
  87. register_clcmd("say_team /deagle", "give_b1");
  88.  
  89. g_MaxPlayers = get_maxplayers()
  90. gmsgWeaponList = get_user_msgid("WeaponList")
  91. }
  92.  
  93. public plugin_precache()
  94. {
  95. precache_model(b1_V_MODEL)
  96. precache_model(b1_P_MODEL)
  97. precache_model(b1_W_MODEL)
  98. for(new i = 0; i < sizeof Fire_Sounds; i++)
  99. precache_sound(Fire_Sounds[i])
  100. precache_sound("weapons/balrog1_changea.wav")
  101. precache_sound("weapons/balrog1_changeb.wav")
  102. precache_sound("weapons/balrog1_draw.wav")
  103. precache_sound("weapons/balrog1_reload.wav")
  104. precache_sound("weapons/balrog1_reloadb.wav")
  105. m_iBlood[0] = precache_model("sprites/blood.spr")
  106. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  107. precache_generic("sprites/weapon_balrog1.txt")
  108. precache_generic("sprites/640hud83.spr")
  109. precache_generic("sprites/640hud4.spr")
  110. sExplo = precache_model("sprites/balrogcritical.spr")
  111. register_clcmd("weapon_balrog1", "weapon_hook")
  112.  
  113. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  114. }
  115.  
  116. public weapon_hook(id)
  117. {
  118. engclient_cmd(id, "weapon_deagle")
  119. return PLUGIN_HANDLED
  120. }
  121.  
  122. public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
  123. {
  124. if(!is_user_alive(iAttacker))
  125. return
  126.  
  127. new g_currentweapon = get_user_weapon(iAttacker)
  128.  
  129. if(g_currentweapon != CSW_DEAGLE) return
  130.  
  131. if(!g_has_b1[iAttacker]) return
  132.  
  133. static Float:flEnd[3]
  134. get_tr2(ptr, TR_vecEndPos, flEnd)
  135.  
  136. if(iEnt)
  137. {
  138. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  139. write_byte(TE_DECAL)
  140. write_coord_f(flEnd[0])
  141. write_coord_f(flEnd[1])
  142. write_coord_f(flEnd[2])
  143. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  144. write_short(iEnt)
  145. message_end()
  146. }
  147. else
  148. {
  149. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  150. write_byte(TE_WORLDDECAL)
  151. write_coord_f(flEnd[0])
  152. write_coord_f(flEnd[1])
  153. write_coord_f(flEnd[2])
  154. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  155. message_end()
  156. }
  157. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  158. write_byte(TE_GUNSHOTDECAL)
  159. write_coord_f(flEnd[0])
  160. write_coord_f(flEnd[1])
  161. write_coord_f(flEnd[2])
  162. write_short(iAttacker)
  163. write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
  164. message_end()
  165. }
  166.  
  167. public plugin_natives ()
  168. {
  169. register_native("give_b1", "native_give_weapon_add", 1)
  170. }
  171. public native_give_weapon_add(id)
  172. {
  173. give_b1(id)
  174. }
  175.  
  176. public fwPrecacheEvent_Post(type, const name[])
  177. {
  178. if (equal("events/deagle.sc", name))
  179. {
  180. g_orig_event_b1 = get_orig_retval()
  181. return FMRES_HANDLED
  182. }
  183. return FMRES_IGNORED
  184. }
  185.  
  186. public client_connect(id)
  187. {
  188. g_has_b1[id] = false
  189. }
  190.  
  191. public client_disconnect(id)
  192. {
  193. g_has_b1[id] = false
  194. }
  195.  
  196. public fw_SetModel(entity, model[])
  197. {
  198. if(!is_valid_ent(entity))
  199. return FMRES_IGNORED
  200.  
  201. static szClassName[33]
  202. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  203.  
  204. if(!equal(szClassName, "weaponbox"))
  205. return FMRES_IGNORED
  206.  
  207. static iOwner
  208.  
  209. iOwner = entity_get_edict(entity, EV_ENT_owner)
  210.  
  211. if(equal(model, "models/w_deagle.mdl"))
  212. {
  213. static iStoredAugID
  214.  
  215. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_deagle", entity)
  216.  
  217. if(!is_valid_ent(iStoredAugID))
  218. return FMRES_IGNORED
  219.  
  220. if(g_has_b1[iOwner])
  221. {
  222. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, b1_WEAPONKEY)
  223.  
  224. g_has_b1[iOwner] = false
  225.  
  226. entity_set_model(entity, b1_W_MODEL)
  227.  
  228. return FMRES_SUPERCEDE
  229. }
  230. }
  231. return FMRES_IGNORED
  232. }
  233.  
  234. public give_b1(id)
  235. {
  236. if(!(get_user_flags(id) & ADMIN_BAN))
  237. {
  238. client_print(id, print_chat, "[Balrog-I] Nincs jogod ehhez a parancshoz!");
  239. return PLUGIN_HANDLED;
  240. }
  241.  
  242. drop_weapons(id, 2)
  243. new iWep2 = fm_give_item(id,"weapon_deagle")
  244. if( iWep2 > 0 )
  245. {
  246. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_b1))
  247. cs_set_user_bpammo (id, CSW_DEAGLE, get_pcvar_num(cvar_b1_ammo))
  248. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  249. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  250.  
  251. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  252. write_string("weapon_balrog1")
  253. write_byte(8)
  254. write_byte(35)
  255. write_byte(-1)
  256. write_byte(-1)
  257. write_byte(1)
  258. write_byte(1)
  259. write_byte(CSW_DEAGLE)
  260. message_end()
  261. }
  262. g_has_b1[id] = true
  263.  
  264. return PLUGIN_CONTINUE
  265. }
  266.  
  267. public fw_b1_AddToPlayer(b1, id)
  268. {
  269. if(!is_valid_ent(b1) || !is_user_connected(id))
  270. return HAM_IGNORED
  271.  
  272. if(entity_get_int(b1, EV_INT_WEAPONKEY) == b1_WEAPONKEY)
  273. {
  274. g_has_b1[id] = true
  275.  
  276. entity_set_int(b1, EV_INT_WEAPONKEY, 0)
  277.  
  278. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  279. write_string("weapon_balrog1")
  280. write_byte(8)
  281. write_byte(35)
  282. write_byte(-1)
  283. write_byte(-1)
  284. write_byte(1)
  285. write_byte(1)
  286. write_byte(CSW_DEAGLE)
  287. message_end()
  288.  
  289. return HAM_HANDLED
  290. }
  291. else
  292. {
  293. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  294. write_string("weapon_deagle")
  295. write_byte(8)
  296. write_byte(35)
  297. write_byte(-1)
  298. write_byte(-1)
  299. write_byte(1)
  300. write_byte(1)
  301. write_byte(CSW_DEAGLE)
  302. message_end()
  303. }
  304. return HAM_IGNORED
  305. }
  306.  
  307. public fw_Item_Deploy_Post(weapon_ent)
  308. {
  309. static owner
  310. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  311.  
  312. static weaponid
  313. weaponid = cs_get_weapon_id(weapon_ent)
  314. replace_weapon_models(owner, weaponid)
  315. }
  316.  
  317. public CurrentWeapon(id)
  318. {
  319. replace_weapon_models(id, read_data(2))
  320.  
  321. if(read_data(2) != CSW_DEAGLE || !g_has_b1[id])
  322. return
  323.  
  324. static Float:iSpeed
  325. if(g_has_b1[id])
  326. iSpeed = get_pcvar_float(cvar_spd_b1)
  327.  
  328. static weapon[32],Ent
  329. get_weaponname(read_data(2),weapon,31)
  330. Ent = find_ent_by_owner(-1,weapon,id)
  331. if(Ent)
  332. {
  333. static Float:Delay
  334. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  335. if (Delay > 0.0)
  336. {
  337. set_pdata_float(Ent, 46, Delay, 4)
  338. }
  339. }
  340. }
  341.  
  342. replace_weapon_models(id, weaponid)
  343. {
  344. switch (weaponid)
  345. {
  346. case CSW_DEAGLE:
  347. {
  348. if(g_has_b1[id])
  349. {
  350. set_pev(id, pev_viewmodel2, b1_V_MODEL)
  351. set_pev(id, pev_weaponmodel2, b1_P_MODEL)
  352. if(oldweap[id] != CSW_DEAGLE)
  353. {
  354. UTIL_PlayWeaponAnimation(id, b1_DRAW)
  355. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  356. gMode[id] = 0
  357. message_begin(MSG_ONE, gmsgWeaponList, _, id)
  358. write_string("weapon_balrog1")
  359. write_byte(8)
  360. write_byte(35)
  361. write_byte(-1)
  362. write_byte(-1)
  363. write_byte(1)
  364. write_byte(1)
  365. write_byte(CSW_DEAGLE)
  366. message_end()
  367. }
  368. }
  369. }
  370. }
  371. oldweap[id] = weaponid
  372. }
  373.  
  374. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  375. {
  376. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_DEAGLE || !g_has_b1[Player]))
  377. return FMRES_IGNORED
  378.  
  379. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  380. return FMRES_HANDLED
  381. }
  382.  
  383. public fw_b1_PrimaryAttack(Weapon)
  384. {
  385. new Player = get_pdata_cbase(Weapon, 41, 4)
  386.  
  387. if (!g_has_b1[Player])
  388. return
  389.  
  390. g_IsInPrimaryAttack = 1
  391. pev(Player,pev_punchangle,cl_pushangle[Player])
  392.  
  393. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  394. g_iClip = cs_get_weapon_ammo(Weapon)
  395. }
  396.  
  397. public explode(id)
  398. {
  399. if(is_user_alive(id))
  400. {
  401. new Float:originF[3]
  402. fm_get_aim_origin(id,originF)
  403. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  404. write_byte(TE_EXPLOSION)
  405. engfunc(EngFunc_WriteCoord, originF[0])
  406. engfunc(EngFunc_WriteCoord, originF[1])
  407. engfunc(EngFunc_WriteCoord, originF[2])
  408. write_short(sExplo)
  409. write_byte(20)
  410. write_byte(50)
  411. write_byte(0)
  412. message_end()
  413. new a = FM_NULLENT
  414. while((a = find_ent_in_sphere(a,originF,200.0)) != 0)
  415. {
  416. if(pev(a,pev_takedamage)!=DAMAGE_NO)
  417. {
  418. ExecuteHamB( Ham_TakeDamage, a ,id ,id, get_pcvar_float(cvar_dmg_exp), DMG_BULLET )
  419. }
  420. }
  421. }
  422. }
  423.  
  424. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  425. {
  426. if ((eventid != g_orig_event_b1) || !g_IsInPrimaryAttack)
  427. return FMRES_IGNORED
  428. if (!(1 <= invoker <= g_MaxPlayers))
  429. return FMRES_IGNORED
  430.  
  431. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  432. return FMRES_SUPERCEDE
  433. }
  434.  
  435. public fw_b1_PrimaryAttack_Post(Weapon)
  436. {
  437. g_IsInPrimaryAttack = 0
  438. new Player = get_pdata_cbase(Weapon, 41, 4)
  439.  
  440. new szClip, szAmmo
  441. get_user_weapon(Player, szClip, szAmmo)
  442.  
  443. if(!is_user_alive(Player))
  444. return
  445.  
  446. if (g_iClip <= cs_get_weapon_ammo(Weapon))
  447. return
  448.  
  449. if(g_has_b1[Player])
  450. {
  451. if (!g_clip_ammo[Player])
  452. return
  453.  
  454. new Float:push[3]
  455. pev(Player,pev_punchangle,push)
  456. xs_vec_sub(push,cl_pushangle[Player],push)
  457.  
  458. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_b1),push)
  459. xs_vec_add(push,cl_pushangle[Player],push)
  460. set_pev(Player,pev_punchangle,push)
  461. if( gMode[Player] ) {
  462. explode(Player)
  463. set_pdata_float( Player, 83, 2.0 )
  464. }
  465. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[gMode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  466. UTIL_PlayWeaponAnimation(Player, gMode[Player]?b1_SHOOT2:b1_SHOOT1)
  467. if( gMode[Player] ) gMode[Player] = 0
  468. }
  469. }
  470.  
  471. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  472. {
  473. if (victim != attacker && is_user_connected(attacker))
  474. {
  475. if(get_user_weapon(attacker) == CSW_DEAGLE)
  476. {
  477. if(g_has_b1[attacker])
  478. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_b1))
  479. }
  480. }
  481. }
  482.  
  483. stock fm_cs_get_current_weapon_ent(id)
  484. {
  485. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  486. }
  487.  
  488. stock fm_cs_get_weapon_ent_owner(ent)
  489. {
  490. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  491. }
  492.  
  493. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  494. {
  495. set_pev(Player, pev_weaponanim, Sequence)
  496.  
  497. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  498. write_byte(Sequence)
  499. write_byte(pev(Player, pev_body))
  500. message_end()
  501. }
  502.  
  503. public b1_ItemPostFrame(weapon_entity)
  504. {
  505. new id = pev(weapon_entity, pev_owner)
  506. if (!is_user_connected(id))
  507. return HAM_IGNORED
  508.  
  509. if (!g_has_b1[id])
  510. return HAM_IGNORED
  511.  
  512. static iClipExtra
  513.  
  514. iClipExtra = get_pcvar_num(cvar_clip_b1)
  515. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  516.  
  517. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE);
  518. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  519.  
  520. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  521. if( pev( id, pev_button ) & IN_ATTACK2 && flNextAttack <= 0.0) {
  522. UTIL_PlayWeaponAnimation(id, !gMode[id]?6:7 )
  523. gMode[id] = (gMode[id]?0:1)
  524. set_pdata_float( id, 83, 2.0 )
  525. }
  526. if( fInReload && flNextAttack <= 0.0 )
  527. {
  528. new j = min(iClipExtra - iClip, iBpAmmo)
  529.  
  530. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  531. cs_set_user_bpammo(id, CSW_DEAGLE, iBpAmmo-j)
  532.  
  533. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  534. fInReload = 0
  535. }
  536. return HAM_IGNORED
  537. }
  538.  
  539. public b1_Reload(weapon_entity)
  540. {
  541. new id = pev(weapon_entity, pev_owner)
  542. if (!is_user_connected(id))
  543. return HAM_IGNORED
  544.  
  545. if (!g_has_b1[id])
  546. return HAM_IGNORED
  547.  
  548. static iClipExtra
  549.  
  550. if(g_has_b1[id])
  551. iClipExtra = get_pcvar_num(cvar_clip_b1)
  552.  
  553. g_b1_TmpClip[id] = -1
  554.  
  555. new iBpAmmo = cs_get_user_bpammo(id, CSW_DEAGLE)
  556. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  557.  
  558. if (iBpAmmo <= 0)
  559. return HAM_SUPERCEDE
  560.  
  561. if (iClip >= iClipExtra)
  562. return HAM_SUPERCEDE
  563.  
  564. g_b1_TmpClip[id] = iClip
  565.  
  566. return HAM_IGNORED
  567. }
  568.  
  569. public b1_Reload_Post(weapon_entity)
  570. {
  571. new id = pev(weapon_entity, pev_owner)
  572. if (!is_user_connected(id))
  573. return HAM_IGNORED
  574.  
  575. if (!g_has_b1[id])
  576. return HAM_IGNORED
  577.  
  578. if (g_b1_TmpClip[id] == -1)
  579. return HAM_IGNORED
  580.  
  581. set_pdata_int(weapon_entity, m_iClip, g_b1_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  582.  
  583. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, b1_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  584.  
  585. set_pdata_float(id, m_flNextAttack, b1_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  586.  
  587. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  588.  
  589. UTIL_PlayWeaponAnimation(id, gMode[id]?8:b1_RELOAD)
  590. gMode[id] = 0
  591.  
  592. return HAM_IGNORED
  593. }
  594.  
  595. stock drop_weapons(id, dropwhat)
  596. {
  597. static weapons[32], num, i, weaponid
  598. num = 0
  599. get_user_weapons(id, weapons, num)
  600.  
  601. for (i = 0; i < num; i++)
  602. {
  603. weaponid = weapons[i]
  604.  
  605. if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
  606. {
  607. static wname[32]
  608. get_weaponname(weaponid, wname, sizeof wname - 1)
  609. engclient_cmd(id, "drop", wname)
  610. }
  611. }
  612. }

Ők köszönték meg Vinnice nek ezt a hozzászólást: RapperFeri (2013.11.24. 12:04)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 11:55 
Offline
Tag
Avatar

Csatlakozott: 2012.01.15. 12:09
Hozzászólások: 57
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 5 alkalommal
InFeCt írta:
Szia!,
/balrogvetel
parancsal tudod lehívni!

Infect már megbocsáss a kifejezésért de azért ennyire hülye nem vagyok hogy ne tudjak át írni egy cmd parancsot :D
De ha így nem hívta le akkor szerinted amugy lefogja? Kétlem :/

Crazy: Köszönöm, remélem sikerülni fog, mert nagyon fontos lenne...Az utánn már csak a Balrog9 (kesztyüt) kellene megcsinálnom, de szerintem az menni fog ennek alapján :)

Vinnice: Köszönöm, nagyon jól müködik...Zsír király vagy :P :)

_________________
Ha segítettem egy Kép jól jönne :D
In-game zenelejátszó pluginom
1.Szerver:
[S.W.A.T]Különleges kommandosok FUN/PUB
2.Szerver: Konfig alatt!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 12:36 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
Amúgy van CSO fegyver átírásos Tutorial.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Balrog1 átírás
HozzászólásElküldve: 2013.11.24. 12:43 
Offline
Tud valamit
Avatar

Csatlakozott: 2013.07.01. 23:32
Hozzászólások: 122
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 23 alkalommal
RapperFeri írta:
InFeCt írta:
Szia!,
/balrogvetel
parancsal tudod lehívni!

Infect már megbocsáss a kifejezésért de azért ennyire hülye nem vagyok hogy ne tudjak át írni egy cmd parancsot :D
De ha így nem hívta le akkor szerinted amugy lefogja? Kétlem :/

Crazy: Köszönöm, remélem sikerülni fog, mert nagyon fontos lenne...Az utánn már csak a Balrog9 (kesztyüt) kellene megcsinálnom, de szerintem az menni fog ennek alapján :)

Vinnice: Köszönöm, nagyon jól müködik...Zsír király vagy :P :)



Én ezt neked pubra írtam át már megbocsáss.. :)
a fölösleges függvényeket meg köszi crazy,azt nem vettem ki :)

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


Ki van itt

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