hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 16 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
HozzászólásElküldve: 2013.11.02. 17:37 
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
Na ez lenne az a láncűrész amit átszeretnék írni publicra.
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. [ZP] Extra Cucc: L�ncf�r�sz
  3. Copyright (C) 2009 by meTaLiCroSS, Vi�a del Mar, Chile
  4.  
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program. If not, see <http://www.gnu.org/licenses/>.
  17.  
  18. In addition, as a special exception, the author gives permission to
  19. link the code of this program with the Half-Life Game Engine ("HL
  20. Engine") and Modified Game Libraries ("MODs") developed by Valve,
  21. L.L.C ("Valve"). You must obey the GNU General Public License in all
  22. respects for all of the code used other than the HL Engine and MODs
  23. from Valve. If you modify this file, you may extend this exception
  24. to your version of the file, but you are not obligated to do so. If
  25. you do not wish to do so, delete this exception statement from your
  26. version.
  27.  
  28. ** Credits:
  29.  
  30. - B!gBud: Some code of his Jetpack + Bazooka
  31. - jtp10181: For his AMX Ultimate Gore plugin and good blood effects
  32.  
  33. =================================================================================*/
  34.  
  35. #include <amxmodx>
  36. #include <fakemeta>
  37. #include <engine>
  38. #include <hamsandwich>
  39. #include <zombieplague>
  40.  
  41. /*================================================================================
  42.  [Customization]
  43. =================================================================================*/
  44.  
  45. // Item Cost
  46. const chainsaw_ap_cost = 30 // Mennyi ammo-ba ker�lj�n
  47.  
  48. // Custom Chainsaw Models
  49. new const chainsaw_viewmodel[] = "models/chainsaw/v_chainsaw.mdl" // View Weapon Model (v_)
  50. new const chainsaw_playermodel[] = "models/chainsaw/p_chainsaw.mdl" // Player Weapon Model (p_)
  51. new const chainsaw_worldmodel[] = "models/chainsaw/w_chainsaw.mdl" // World Weapon Model (w_)
  52.  
  53. // Custom Chainsaw Sounds
  54. new const chainsaw_sounds[][] =
  55. {
  56. "chainsaw/chainsaw_deploy.wav", // Deploy Sound (knife_deploy1.wav)
  57. "chainsaw/chainsaw_hit1.wav", // Hit 1 (knife_hit1.wav)
  58. "chainsaw/chainsaw_hit2.wav", // Hit 2 (knife_hit2.wav)
  59. "chainsaw/chainsaw_hit1.wav", // Hit 3 (knife_hit3.wav)
  60. "chainsaw/chainsaw_hit2.wav", // Hit 4 (knife_hit4.wav)
  61. "chainsaw/chainsaw_hitwall.wav", // Hit Wall (knife_hitwall1.wav)
  62. "chainsaw/chainsaw_miss.wav", // Slash 1 (knife_slash1.wav)
  63. "chainsaw/chainsaw_miss.wav", // Slash 2 (knife_slash2.wav)
  64. "chainsaw/chainsaw_stab.wav" // Stab (knife_stab1.wav)
  65. }
  66.  
  67. // Dropped Chainsaw Size
  68. new Float:chainsaw_mins[3] = { -2.0, -2.0, -2.0 }
  69. new Float:chainsaw_maxs[3] = { 2.0, 2.0, 2.0 }
  70.  
  71.  
  72. /*================================================================================
  73.  Customization ends here! Yes, that's it. Editing anything beyond
  74.  here is not officially supported. Proceed at your own risk...
  75. =================================================================================*/
  76.  
  77. // Variables
  78. new g_iItemID, g_msgCurWeapon, g_msgSayText
  79.  
  80. // Arrays
  81. new g_iHasChainsaw[33], g_iCurrentWeapon[33]
  82.  
  83. // Cvar Pointers
  84. new cvar_enable, cvar_dmgmult, cvar_oneround, cvar_sounds, cvar_dmggore, cvar_dropflags,
  85. cvar_pattack_rate, cvar_sattack_rate, cvar_pattack_recoil, cvar_sattack_recoil, cvar_body_xplode
  86.  
  87. // Flags
  88. const DROPFLAG_NORMAL = (1<<0) // "a", A l�ncf�r�szt el lehet dobni a "G" gombal
  89. const DROPFLAG_INDEATH = (1<<1) // "b", Ha megs�r�lt eldobja
  90. const DROPFLAG_INFECTED = (1<<2) // "c", Mikor megfert�zik T-v�rusal eldobja
  91. const DROPFLAG_SURVHUMAN = (1<<3) // "d", T�l�l� m�dba eldobja
  92.  
  93. // Offsets
  94. const m_pPlayer = 41
  95. const m_flNextPrimaryAttack = 46
  96. const m_flNextSecondaryAttack = 47
  97. const m_flTimeWeaponIdle = 48
  98.  
  99. // Old Knife Sounds (DON'T CHANGE)
  100. new const oldknife_sounds[][] =
  101. {
  102. "weapons/knife_deploy1.wav", // Deploy Sound
  103. "weapons/knife_hit1.wav", // Hit 1
  104. "weapons/knife_hit2.wav", // Hit 2
  105. "weapons/knife_hit3.wav", // Hit 3
  106. "weapons/knife_hit4.wav", // Hit 4
  107. "weapons/knife_hitwall1.wav", // Hit Wall
  108. "weapons/knife_slash1.wav", // Slash 1
  109. "weapons/knife_slash2.wav", // Slash 2
  110. "weapons/knife_stab.wav" // Stab
  111. }
  112.  
  113. // Plug info.
  114. #define PLUG_VERSION "0.9"
  115. #define PLUG_AUTH "meTaLiCroSS"
  116.  
  117. /*================================================================================
  118.  [Init and Precache]
  119. =================================================================================*/
  120.  
  121. public plugin_init()
  122. {
  123. // Plugin Register
  124. register_plugin("[ZP] Extra Cucc: L�ncf�r�sz", PLUG_VERSION, PLUG_AUTH)
  125.  
  126. // Events
  127. register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
  128. register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
  129.  
  130. // Cvars
  131. cvar_enable = register_cvar("zp_chainsaw_enable", "1")
  132. cvar_sounds = register_cvar("zp_chainsaw_custom_sounds", "1")
  133. cvar_dmgmult = register_cvar("zp_chainsaw_damage_mult", "8.4")
  134. cvar_dmggore = register_cvar("zp_chainsaw_gore_in_damage", "1")
  135. cvar_oneround = register_cvar("zp_chainsaw_oneround", "0")
  136. cvar_dropflags = register_cvar("zp_chainsaw_drop_flags", "abcd")
  137. cvar_body_xplode = register_cvar("zp_chainsaw_victim_explode", "1")
  138. cvar_pattack_rate = register_cvar("zp_chainsaw_attack1_rate", "0.6")
  139. cvar_sattack_rate = register_cvar("zp_chainsaw_attack2_rate", "1.2")
  140. cvar_pattack_recoil = register_cvar("zp_chainsaw_attack1_recoil", "-5.6")
  141. cvar_sattack_recoil = register_cvar("zp_chainsaw_attack2_recoil", "-8.0")
  142.  
  143. new szCvar[30]
  144. formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTH)
  145. register_cvar("zp_extra_chainsaw", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
  146.  
  147. // Fakemeta Forwards
  148. register_forward(FM_EmitSound, "fw_EmitSound")
  149.  
  150. // Engine Forwards
  151. register_touch("cs_chainsaw", "player", "fw_Chainsaw_Touch")
  152.  
  153. // Ham Forwards
  154. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  155. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  156. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  157. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
  158. RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1)
  159.  
  160. // Variables
  161. g_iItemID = zp_register_extra_item("Lancfuresz", chainsaw_ap_cost, ZP_TEAM_HUMAN)
  162.  
  163. // Message ID's vars
  164. g_msgSayText = get_user_msgid("SayText")
  165. g_msgCurWeapon = get_user_msgid("CurWeapon")
  166.  
  167. // Client Commands
  168. register_clcmd("drop", "clcmd_drop")
  169. }
  170.  
  171. public plugin_precache()
  172. {
  173. // Models
  174. precache_model(chainsaw_viewmodel)
  175. precache_model(chainsaw_playermodel)
  176. precache_model(chainsaw_worldmodel)
  177.  
  178. // Sounds
  179. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  180. precache_sound(chainsaw_sounds[i])
  181.  
  182. precache_sound("items/gunpickup2.wav")
  183. }
  184.  
  185. /*================================================================================
  186.  [Main Events]
  187. =================================================================================*/
  188.  
  189. public event_RoundStart()
  190. {
  191. // Remove chainsaws (entities)
  192. remove_entity_name("cs_chainsaw")
  193. }
  194.  
  195. public event_CurWeapon(id)
  196. {
  197. // Not alive...
  198. if(!is_user_alive(id))
  199. return PLUGIN_CONTINUE
  200.  
  201. // Updating weapon array
  202. g_iCurrentWeapon[id] = read_data(2)
  203.  
  204. // Check
  205. if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  206. return PLUGIN_CONTINUE
  207.  
  208. // Has chainsaw and weapon is Knife
  209. if(!g_iHasChainsaw[id] || g_iCurrentWeapon[id] != CSW_KNIFE)
  210. return PLUGIN_CONTINUE
  211.  
  212. entity_set_string(id, EV_SZ_viewmodel, chainsaw_viewmodel)
  213. entity_set_string(id, EV_SZ_weaponmodel, chainsaw_playermodel)
  214.  
  215. return PLUGIN_CONTINUE
  216. }
  217.  
  218. /*================================================================================
  219.  [Main Functions]
  220. =================================================================================*/
  221.  
  222. public clcmd_drop(id)
  223. {
  224. // Has Chainsaw Weapon is Knife
  225. if(g_iHasChainsaw[id] && g_iCurrentWeapon[id] == CSW_KNIFE)
  226. {
  227. if(check_drop_flag(DROPFLAG_NORMAL))
  228. {
  229. drop_chainsaw(id)
  230. return PLUGIN_HANDLED
  231. }
  232. }
  233.  
  234. return PLUGIN_CONTINUE
  235. }
  236.  
  237. public drop_chainsaw(id)
  238. {
  239. // Get Aim and Origin
  240. static Float:flAim[3], Float:flOrigin[3]
  241. VelocityByAim(id, 64, flAim)
  242. entity_get_vector(id, EV_VEC_origin, flOrigin)
  243.  
  244. // Changing Origin coords
  245. flOrigin[0] += flAim[0]
  246. flOrigin[1] += flAim[1]
  247.  
  248. // Creating the Entity
  249. new iEnt = create_entity("info_target")
  250.  
  251. // Classname
  252. entity_set_string(iEnt, EV_SZ_classname, "cs_chainsaw")
  253.  
  254. // Origin
  255. entity_set_origin(iEnt, flOrigin)
  256.  
  257. // Models
  258. entity_set_model(iEnt, chainsaw_worldmodel)
  259.  
  260. // Size
  261. set_size(iEnt, chainsaw_mins, chainsaw_maxs)
  262. entity_set_vector(iEnt, EV_VEC_mins, chainsaw_mins)
  263. entity_set_vector(iEnt, EV_VEC_maxs, chainsaw_maxs)
  264.  
  265. // Solid Type
  266. entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
  267.  
  268. // Movetype
  269. entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_TOSS)
  270.  
  271. // Var's
  272. g_iHasChainsaw[id] = false
  273.  
  274. // Model bugfix
  275. reset_user_knife(id)
  276. }
  277.  
  278. public reset_user_knife(id)
  279. {
  280. // Execute weapon Deploy
  281. if(user_has_weapon(id, CSW_KNIFE))
  282. ExecuteHamB(Ham_Item_Deploy, find_ent_by_owner(-1, "weapon_knife", id))
  283.  
  284. // Updating Model
  285. engclient_cmd(id, "weapon_knife")
  286. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  287. ewrite_byte(1) // active
  288. ewrite_byte(CSW_KNIFE) // weapon
  289. ewrite_byte(-1) // clip
  290. emessage_end()
  291. }
  292.  
  293. /*================================================================================
  294.  [ZombiePlague Forwards]
  295. =================================================================================*/
  296.  
  297. public zp_extra_item_selected(id, itemid)
  298. {
  299. if (itemid == g_iItemID)
  300. {
  301. // Check cvar
  302. if(get_pcvar_num(cvar_enable))
  303. {
  304. // Already has a Chainsaw
  305. if (g_iHasChainsaw[id])
  306. {
  307. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + chainsaw_ap_cost)
  308. client_printcolor(id, "/g[ZP]/y Neked mar van egy /gFureszed")
  309. }
  310. else
  311. {
  312. // Boolean
  313. g_iHasChainsaw[id] = true
  314.  
  315. // Emiting Sound
  316. emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  317.  
  318. // Client Print
  319. client_printcolor(id, "/g[ZP]/y Neked immar van egy /gFureszed")
  320.  
  321. // Change weapon to Knife
  322. reset_user_knife(id)
  323. }
  324. }
  325. // Isn't enabled...
  326. else
  327. {
  328. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + chainsaw_ap_cost)
  329. client_printcolor(id, "/g[ZP]/y A furesz cucc ki van kapcsolva. /gLepj kapcsolatba az Adminnal")
  330. }
  331. }
  332. }
  333.  
  334. public zp_user_infected_pre(id, infector)
  335. {
  336. // Drop in infection
  337. if (g_iHasChainsaw[id])
  338. {
  339. if(check_drop_flag(DROPFLAG_INFECTED))
  340. drop_chainsaw(id)
  341. else
  342. {
  343. g_iHasChainsaw[id] = false
  344. reset_user_knife(id)
  345. }
  346. }
  347. }
  348.  
  349. public zp_user_humanized_post(id)
  350. {
  351. // Is survivor
  352. if(zp_get_user_survivor(id) && g_iHasChainsaw[id])
  353. {
  354. if(check_drop_flag(DROPFLAG_SURVHUMAN))
  355. drop_chainsaw(id)
  356. else
  357. {
  358. g_iHasChainsaw[id] = false
  359. reset_user_knife(id)
  360. }
  361. }
  362. }
  363.  
  364. /*================================================================================
  365.  [Main Forwards]
  366. =================================================================================*/
  367.  
  368. public client_putinserver(id)
  369. {
  370. g_iHasChainsaw[id] = false
  371. }
  372.  
  373. public client_disconnect(id)
  374. {
  375. g_iHasChainsaw[id] = false
  376. }
  377.  
  378. public fw_PlayerSpawn_Post(id)
  379. {
  380. // Check Oneround Cvar and Strip all the Chainsaws
  381. if(get_pcvar_num(cvar_oneround) || !get_pcvar_num(cvar_enable))
  382. {
  383. // Has Chainsaw
  384. if(g_iHasChainsaw[id])
  385. {
  386. // Var's
  387. g_iHasChainsaw[id] = false
  388.  
  389. // Update Knife
  390. reset_user_knife(id)
  391. }
  392. }
  393. }
  394.  
  395. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
  396. {
  397. // Check
  398. if(victim == attacker || !attacker)
  399. return HAM_IGNORED
  400.  
  401. // Attacker is not a Player
  402. if(!is_user_connected(attacker))
  403. return HAM_IGNORED
  404.  
  405. // Has chainsaw and Weapon is knife
  406. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE)
  407. {
  408. // Gore
  409. if(get_pcvar_num(cvar_dmggore))
  410. a_lot_of_blood(victim)
  411.  
  412. // Damage mult.
  413. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmult))
  414.  
  415. }
  416.  
  417. return HAM_IGNORED
  418. }
  419.  
  420. public fw_PlayerKilled(victim, attacker, shouldgib)
  421. {
  422. // Check
  423. if(victim == attacker || !attacker)
  424. return HAM_IGNORED
  425.  
  426. // Attacker is not a Player
  427. if(!is_user_connected(attacker))
  428. return HAM_IGNORED
  429.  
  430. // Attacker Has a Chainsaw
  431. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE && !zp_get_user_nemesis(victim) && get_pcvar_num(cvar_body_xplode))
  432. SetHamParamInteger(3, 2) // Body Explodes
  433.  
  434. // Victim Has a Chainsaw
  435. if(g_iHasChainsaw[victim])
  436. {
  437. if(check_drop_flag(DROPFLAG_INDEATH))
  438. drop_chainsaw(victim)
  439. else
  440. {
  441. g_iHasChainsaw[victim] = false
  442. reset_user_knife(victim)
  443. }
  444. }
  445.  
  446. return HAM_IGNORED
  447. }
  448.  
  449. public fw_Chainsaw_Touch(saw, player)
  450. {
  451. // Entities are not valid
  452. if(!is_valid_ent(saw) || !is_valid_ent(player))
  453. return PLUGIN_CONTINUE
  454.  
  455. // Is a valid player?
  456. if(!is_user_connected(player))
  457. return PLUGIN_CONTINUE
  458.  
  459. // Alive, Zombie or Survivor
  460. if(!is_user_alive(player) || zp_get_user_zombie(player) || zp_get_user_survivor(player) || g_iHasChainsaw[player])
  461. return PLUGIN_CONTINUE
  462.  
  463. // Var's
  464. g_iHasChainsaw[player] = true
  465.  
  466. // Emiting Sound
  467. emit_sound(player, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  468.  
  469. // Knife Deploy
  470. reset_user_knife(player)
  471.  
  472. // Remove dropped chainsaw
  473. remove_entity(saw)
  474.  
  475. return PLUGIN_CONTINUE
  476. }
  477.  
  478. public fw_EmitSound(id, channel, const sound[])
  479. {
  480. // Non-player entity
  481. if(!is_user_connected(id))
  482. return FMRES_IGNORED
  483.  
  484. // Not Alive / Zombie / Doesn't have a Chainsaw
  485. if(!is_user_alive(id) || zp_get_user_zombie(id) || zp_get_user_survivor(id) || !g_iHasChainsaw[id] || !get_pcvar_num(cvar_sounds))
  486. return FMRES_IGNORED
  487.  
  488. // Check sound
  489. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  490. {
  491. if(equal(sound, oldknife_sounds[i]))
  492. {
  493. // Emit New sound and Stop old Sound
  494. emit_sound(id, channel, chainsaw_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
  495. return FMRES_SUPERCEDE
  496. }
  497. }
  498.  
  499. return FMRES_IGNORED
  500. }
  501.  
  502. public fw_Knife_PrimaryAttack_Post(knife)
  503. {
  504. // Get knife owner
  505. static id
  506. id = get_pdata_cbase(knife, m_pPlayer, 4)
  507.  
  508. // has a Chainsaw
  509. if(is_user_connected(id) && g_iHasChainsaw[id])
  510. {
  511. // Get new fire rate
  512. static Float:flRate
  513. flRate = get_pcvar_float(cvar_pattack_rate)
  514.  
  515. // Set new rates
  516. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  517. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  518. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  519.  
  520. // Get new recoil
  521. static Float:flPunchAngle[3]
  522. flPunchAngle[0] = get_pcvar_float(cvar_pattack_recoil)
  523.  
  524. // Punch their angles
  525. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  526.  
  527. }
  528.  
  529. return HAM_IGNORED
  530. }
  531.  
  532. public fw_Knife_SecondaryAttack_Post(knife)
  533. {
  534. // Get knife owner
  535. static id
  536. id = get_pdata_cbase(knife, m_pPlayer, 4)
  537.  
  538. // has a Chainsaw
  539. if(is_user_connected(id) && g_iHasChainsaw[id])
  540. {
  541. // Get new fire rate
  542. static Float:flRate
  543. flRate = get_pcvar_float(cvar_sattack_rate)
  544.  
  545. // Set new rates
  546. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  547. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  548. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  549.  
  550. // Get new recoil
  551. static Float:flPunchAngle[3]
  552. flPunchAngle[0] = get_pcvar_float(cvar_sattack_recoil)
  553.  
  554. // Punch their angles
  555. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  556. }
  557.  
  558. return HAM_IGNORED
  559. }
  560.  
  561. /*================================================================================
  562.  [Internal Functions]
  563. =================================================================================*/
  564.  
  565. check_drop_flag(flag)
  566. {
  567. new szFlags[10]
  568. get_pcvar_string(cvar_dropflags, szFlags, charsmax(szFlags))
  569.  
  570. if(read_flags(szFlags) & flag)
  571. return true
  572.  
  573. return false
  574. }
  575.  
  576. a_lot_of_blood(id) // ROFL, thanks to jtp10181 for his AMX Ultimate Gore plugin.
  577. {
  578. // Get user origin
  579. static iOrigin[3]
  580. get_user_origin(id, iOrigin)
  581.  
  582. // Blood spray
  583. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  584. write_byte(TE_BLOODSTREAM)
  585. write_coord(iOrigin[0])
  586. write_coord(iOrigin[1])
  587. write_coord(iOrigin[2]+10)
  588. write_coord(random_num(-360, 360)) // x
  589. write_coord(random_num(-360, 360)) // y
  590. write_coord(-10) // z
  591. write_byte(70) // color
  592. write_byte(random_num(50, 100)) // speed
  593. message_end()
  594.  
  595. // Write Small splash decal
  596. for (new j = 0; j < 4; j++)
  597. {
  598. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  599. write_byte(TE_WORLDDECAL)
  600. write_coord(iOrigin[0]+random_num(-100, 100))
  601. write_coord(iOrigin[1]+random_num(-100, 100))
  602. write_coord(iOrigin[2]-36)
  603. write_byte(random_num(190, 197)) // index
  604. message_end()
  605. }
  606. }
  607.  
  608. /*================================================================================
  609.  [Stocks]
  610. =================================================================================*/
  611.  
  612. stock client_printcolor(const id, const input[], any:...)
  613. {
  614. new iCount = 1, iPlayers[32]
  615.  
  616. static szMsg[191]
  617. vformat(szMsg, charsmax(szMsg), input, 3)
  618.  
  619. replace_all(szMsg, 190, "/g", "^4") // z�ld txt
  620. replace_all(szMsg, 190, "/y", "^1") // narancss�rga txt
  621. replace_all(szMsg, 190, "/ctr", "^3") // csapat txt
  622. replace_all(szMsg, 190, "/w", "^0") // csapat txt
  623.  
  624. if(id) iPlayers[0] = id
  625. else get_players(iPlayers, iCount, "ch")
  626.  
  627. for (new i = 0; i < iCount; i++)
  628. {
  629. if (is_user_connected(iPlayers[i]))
  630. {
  631. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
  632. write_byte(iPlayers[i])
  633. write_string(szMsg)
  634. message_end()
  635. }
  636. }
  637. }
  638.  


úgy hogy JÓ IS LEGYEN!

SMA Forráskód: [ Mindet kijelol ]
  1. g_iItemID = zp_register_extra_item("Lancfuresz", chainsaw_ap_cost, ZP_TEAM_HUMAN)
  2.  
  3. ez sor helyet legyen valami register_clcmd (say //valami legyen ott majd átírom, többit kéne megcsinálni csak.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.02. 17:58 
Offline
Nagyúr
Avatar

Csatlakozott: 2011.12.18. 10:40
Hozzászólások: 671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Próbáld ki ezt: http://www.csplugin.com/2013/06/weapon-powersaw.html

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.02. 18:01 
Offline
Jómunkásember

Csatlakozott: 2013.02.11. 16:06
Hozzászólások: 491
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 50 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <engine>
  4. #include <hamsandwich>
  5. #include <zombieplague>
  6.  
  7. /*================================================================================
  8.  [Customization]
  9. =================================================================================*/
  10.  
  11. // Item Cost
  12. const chainsaw_ap_cost = 30 // Mennyi ammo-ba ker?lj?n
  13.  
  14. // Custom Chainsaw Models
  15. new const chainsaw_viewmodel[] = "models/chainsaw/v_chainsaw.mdl" // View Weapon Model (v_)
  16. new const chainsaw_playermodel[] = "models/chainsaw/p_chainsaw.mdl" // Player Weapon Model (p_)
  17. new const chainsaw_worldmodel[] = "models/chainsaw/w_chainsaw.mdl" // World Weapon Model (w_)
  18.  
  19. // Custom Chainsaw Sounds
  20. new const chainsaw_sounds[][] =
  21. {
  22. "chainsaw/chainsaw_deploy.wav", // Deploy Sound (knife_deploy1.wav)
  23. "chainsaw/chainsaw_hit1.wav", // Hit 1 (knife_hit1.wav)
  24. "chainsaw/chainsaw_hit2.wav", // Hit 2 (knife_hit2.wav)
  25. "chainsaw/chainsaw_hit1.wav", // Hit 3 (knife_hit3.wav)
  26. "chainsaw/chainsaw_hit2.wav", // Hit 4 (knife_hit4.wav)
  27. "chainsaw/chainsaw_hitwall.wav", // Hit Wall (knife_hitwall1.wav)
  28. "chainsaw/chainsaw_miss.wav", // Slash 1 (knife_slash1.wav)
  29. "chainsaw/chainsaw_miss.wav", // Slash 2 (knife_slash2.wav)
  30. "chainsaw/chainsaw_stab.wav" // Stab (knife_stab1.wav)
  31. }
  32.  
  33. // Dropped Chainsaw Size
  34. new Float:chainsaw_mins[3] = { -2.0, -2.0, -2.0 }
  35. new Float:chainsaw_maxs[3] = { 2.0, 2.0, 2.0 }
  36.  
  37.  
  38. /*================================================================================
  39.  Customization ends here! Yes, that's it. Editing anything beyond
  40.  here is not officially supported. Proceed at your own risk...
  41. =================================================================================*/
  42.  
  43. // Variables
  44. new g_iItemID, g_msgCurWeapon, g_msgSayText
  45.  
  46. // Arrays
  47. new g_iHasChainsaw[33], g_iCurrentWeapon[33]
  48.  
  49. // Cvar Pointers
  50. new cvar_enable, cvar_dmgmult, cvar_oneround, cvar_sounds, cvar_dmggore, cvar_dropflags,
  51. cvar_pattack_rate, cvar_sattack_rate, cvar_pattack_recoil, cvar_sattack_recoil, cvar_body_xplode
  52.  
  53. // Flags
  54. const DROPFLAG_NORMAL = (1<<0) // "a", A l?ncf?r?szt el lehet dobni a "G" gombal
  55. const DROPFLAG_INDEATH = (1<<1) // "b", Ha megs?r?lt eldobja
  56. const DROPFLAG_INFECTED = (1<<2) // "c", Mikor megfert?zik T-v?rusal eldobja
  57. const DROPFLAG_SURVHUMAN = (1<<3) // "d", T?l?l? m?dba eldobja
  58.  
  59. // Offsets
  60. const m_pPlayer = 41
  61. const m_flNextPrimaryAttack = 46
  62. const m_flNextSecondaryAttack = 47
  63. const m_flTimeWeaponIdle = 48
  64.  
  65. // Old Knife Sounds (DON'T CHANGE)
  66. new const oldknife_sounds[][] =
  67. {
  68. "weapons/knife_deploy1.wav", // Deploy Sound
  69. "weapons/knife_hit1.wav", // Hit 1
  70. "weapons/knife_hit2.wav", // Hit 2
  71. "weapons/knife_hit3.wav", // Hit 3
  72. "weapons/knife_hit4.wav", // Hit 4
  73. "weapons/knife_hitwall1.wav", // Hit Wall
  74. "weapons/knife_slash1.wav", // Slash 1
  75. "weapons/knife_slash2.wav", // Slash 2
  76. "weapons/knife_stab.wav" // Stab
  77. }
  78.  
  79. // Plug info.
  80. #define PLUG_VERSION "0.9"
  81. #define PLUG_AUTH "meTaLiCroSS"
  82.  
  83. /*================================================================================
  84.  [Init and Precache]
  85. =================================================================================*/
  86.  
  87. public plugin_init()
  88. {
  89. // Plugin Register
  90. register_plugin("[ZP] Extra Cucc: L?ncf?r?sz", PLUG_VERSION, PLUG_AUTH)
  91.  
  92. // Events
  93. register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
  94. register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
  95.  
  96. // Cvars
  97. cvar_enable = register_cvar("zp_chainsaw_enable", "1")
  98. cvar_sounds = register_cvar("zp_chainsaw_custom_sounds", "1")
  99. cvar_dmgmult = register_cvar("zp_chainsaw_damage_mult", "8.4")
  100. cvar_dmggore = register_cvar("zp_chainsaw_gore_in_damage", "1")
  101. cvar_oneround = register_cvar("zp_chainsaw_oneround", "0")
  102. cvar_dropflags = register_cvar("zp_chainsaw_drop_flags", "abcd")
  103. cvar_body_xplode = register_cvar("zp_chainsaw_victim_explode", "1")
  104. cvar_pattack_rate = register_cvar("zp_chainsaw_attack1_rate", "0.6")
  105. cvar_sattack_rate = register_cvar("zp_chainsaw_attack2_rate", "1.2")
  106. cvar_pattack_recoil = register_cvar("zp_chainsaw_attack1_recoil", "-5.6")
  107. cvar_sattack_recoil = register_cvar("zp_chainsaw_attack2_recoil", "-8.0")
  108.  
  109. new szCvar[30]
  110. formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTH)
  111. register_cvar("zp_extra_chainsaw", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
  112.  
  113. // Fakemeta Forwards
  114. register_forward(FM_EmitSound, "fw_EmitSound")
  115.  
  116. // Engine Forwards
  117. register_touch("cs_chainsaw", "player", "fw_Chainsaw_Touch")
  118.  
  119. // Ham Forwards
  120. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  121. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  122. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  123. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
  124. RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1)
  125.  
  126. // Variables
  127. register_clcmd("say /lancfuresz", "lancfuresz")
  128.  
  129. // Message ID's vars
  130. g_msgSayText = get_user_msgid("SayText")
  131. g_msgCurWeapon = get_user_msgid("CurWeapon")
  132.  
  133. // Client Commands
  134. register_clcmd("drop", "clcmd_drop")
  135. }
  136.  
  137. public plugin_precache()
  138. {
  139. // Models
  140. precache_model(chainsaw_viewmodel)
  141. precache_model(chainsaw_playermodel)
  142. precache_model(chainsaw_worldmodel)
  143.  
  144. // Sounds
  145. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  146. precache_sound(chainsaw_sounds[i])
  147.  
  148. precache_sound("items/gunpickup2.wav")
  149. }
  150.  
  151. /*================================================================================
  152.  [Main Events]
  153. =================================================================================*/
  154.  
  155. public event_RoundStart()
  156. {
  157. // Remove chainsaws (entities)
  158. remove_entity_name("cs_chainsaw")
  159. }
  160.  
  161. public event_CurWeapon(id)
  162. {
  163. // Not alive...
  164. if(!is_user_alive(id))
  165. return PLUGIN_CONTINUE
  166.  
  167. // Updating weapon array
  168. g_iCurrentWeapon[id] = read_data(2)
  169.  
  170. // Check
  171. if(cs_get_user_team(id) || zp_get_user_survivor(id))
  172. return PLUGIN_CONTINUE
  173.  
  174. // Has chainsaw and weapon is Knife
  175. if(!g_iHasChainsaw[id] || g_iCurrentWeapon[id] != CSW_KNIFE)
  176. return PLUGIN_CONTINUE
  177.  
  178. entity_set_string(id, EV_SZ_viewmodel, chainsaw_viewmodel)
  179. entity_set_string(id, EV_SZ_weaponmodel, chainsaw_playermodel)
  180.  
  181. return PLUGIN_CONTINUE
  182. }
  183.  
  184. /*================================================================================
  185.  [Main Functions]
  186. =================================================================================*/
  187.  
  188. public clcmd_drop(id)
  189. {
  190. // Has Chainsaw Weapon is Knife
  191. if(g_iHasChainsaw[id] && g_iCurrentWeapon[id] == CSW_KNIFE)
  192. {
  193. if(check_drop_flag(DROPFLAG_NORMAL))
  194. {
  195. drop_chainsaw(id)
  196. return PLUGIN_HANDLED
  197. }
  198. }
  199.  
  200. return PLUGIN_CONTINUE
  201. }
  202.  
  203. public drop_chainsaw(id)
  204. {
  205. // Get Aim and Origin
  206. static Float:flAim[3], Float:flOrigin[3]
  207. VelocityByAim(id, 64, flAim)
  208. entity_get_vector(id, EV_VEC_origin, flOrigin)
  209.  
  210. // Changing Origin coords
  211. flOrigin[0] += flAim[0]
  212. flOrigin[1] += flAim[1]
  213.  
  214. // Creating the Entity
  215. new iEnt = create_entity("info_target")
  216.  
  217. // Classname
  218. entity_set_string(iEnt, EV_SZ_classname, "cs_chainsaw")
  219.  
  220. // Origin
  221. entity_set_origin(iEnt, flOrigin)
  222.  
  223. // Models
  224. entity_set_model(iEnt, chainsaw_worldmodel)
  225.  
  226. // Size
  227. set_size(iEnt, chainsaw_mins, chainsaw_maxs)
  228. entity_set_vector(iEnt, EV_VEC_mins, chainsaw_mins)
  229. entity_set_vector(iEnt, EV_VEC_maxs, chainsaw_maxs)
  230.  
  231. // Solid Type
  232. entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
  233.  
  234. // Movetype
  235. entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_TOSS)
  236.  
  237. // Var's
  238. g_iHasChainsaw[id] = false
  239.  
  240. // Model bugfix
  241. reset_user_knife(id)
  242. }
  243.  
  244. public reset_user_knife(id)
  245. {
  246. // Execute weapon Deploy
  247. if(user_has_weapon(id, CSW_KNIFE))
  248. ExecuteHamB(Ham_Item_Deploy, find_ent_by_owner(-1, "weapon_knife", id))
  249.  
  250. // Updating Model
  251. engclient_cmd(id, "weapon_knife")
  252. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  253. ewrite_byte(1) // active
  254. ewrite_byte(CSW_KNIFE) // weapon
  255. ewrite_byte(-1) // clip
  256. emessage_end()
  257. }
  258.  
  259. /*================================================================================
  260.  [ZombiePlague Forwards]
  261. =================================================================================*/
  262.  
  263. public lancfuresz(id, itemid)
  264. {
  265. if (itemid == g_iItemID)
  266. {
  267. // Check cvar
  268. if(get_pcvar_num(cvar_enable))
  269. {
  270. // Already has a Chainsaw
  271. if (g_iHasChainsaw[id])
  272. {
  273. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + chainsaw_ap_cost)
  274. client_printcolor(id, "/g[ZP]/y Neked mar van egy /gFureszed")
  275. }
  276. else
  277. {
  278. // Boolean
  279. g_iHasChainsaw[id] = true
  280.  
  281. // Emiting Sound
  282. emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  283.  
  284. // Client Print
  285. client_printcolor(id, "/g[ZP]/y Neked immar van egy /gFureszed")
  286.  
  287. // Change weapon to Knife
  288. reset_user_knife(id)
  289. }
  290. }
  291. // Isn't enabled...
  292. else
  293. {
  294. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + chainsaw_ap_cost)
  295. client_printcolor(id, "/g[ZP]/y A furesz cucc ki van kapcsolva. /gLepj kapcsolatba az Adminnal")
  296. }
  297. }
  298. }
  299.  
  300. public zp_user_infected_pre(id, infector)
  301. {
  302. // Drop in infection
  303. if (g_iHasChainsaw[id])
  304. {
  305. if(check_drop_flag(DROPFLAG_INFECTED))
  306. drop_chainsaw(id)
  307. else
  308. {
  309. g_iHasChainsaw[id] = false
  310. reset_user_knife(id)
  311. }
  312. }
  313. }
  314.  
  315. /*================================================================================
  316.  [Main Forwards]
  317. =================================================================================*/
  318.  
  319. public client_putinserver(id)
  320. {
  321. g_iHasChainsaw[id] = false
  322. }
  323.  
  324. public client_disconnect(id)
  325. {
  326. g_iHasChainsaw[id] = false
  327. }
  328.  
  329. public fw_PlayerSpawn_Post(id)
  330. {
  331. // Check Oneround Cvar and Strip all the Chainsaws
  332. if(get_pcvar_num(cvar_oneround) || !get_pcvar_num(cvar_enable))
  333. {
  334. // Has Chainsaw
  335. if(g_iHasChainsaw[id])
  336. {
  337. // Var's
  338. g_iHasChainsaw[id] = false
  339.  
  340. // Update Knife
  341. reset_user_knife(id)
  342. }
  343. }
  344. }
  345.  
  346. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
  347. {
  348. // Check
  349. if(victim == attacker || !attacker)
  350. return HAM_IGNORED
  351.  
  352. // Attacker is not a Player
  353. if(!is_user_connected(attacker))
  354. return HAM_IGNORED
  355.  
  356. // Has chainsaw and Weapon is knife
  357. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE)
  358. {
  359. // Gore
  360. if(get_pcvar_num(cvar_dmggore))
  361. a_lot_of_blood(victim)
  362.  
  363. // Damage mult.
  364. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmult))
  365.  
  366. }
  367.  
  368. return HAM_IGNORED
  369. }
  370.  
  371. public fw_PlayerKilled(victim, attacker, shouldgib)
  372. {
  373. // Check
  374. if(victim == attacker || !attacker)
  375. return HAM_IGNORED
  376.  
  377. // Attacker is not a Player
  378. if(!is_user_connected(attacker))
  379. return HAM_IGNORED
  380.  
  381. // Attacker Has a Chainsaw
  382. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE && !zp_get_user_nemesis(victim) && get_pcvar_num(cvar_body_xplode))
  383. SetHamParamInteger(3, 2) // Body Explodes
  384.  
  385. // Victim Has a Chainsaw
  386. if(g_iHasChainsaw[victim])
  387. {
  388. if(check_drop_flag(DROPFLAG_INDEATH))
  389. drop_chainsaw(victim)
  390. else
  391. {
  392. g_iHasChainsaw[victim] = false
  393. reset_user_knife(victim)
  394. }
  395. }
  396.  
  397. return HAM_IGNORED
  398. }
  399.  
  400. public fw_Chainsaw_Touch(saw, player)
  401. {
  402. // Entities are not valid
  403. if(!is_valid_ent(saw) || !is_valid_ent(player))
  404. return PLUGIN_CONTINUE
  405.  
  406. // Is a valid player?
  407. if(!is_user_connected(player))
  408. return PLUGIN_CONTINUE
  409.  
  410. // Alive, Zombie or Survivor
  411. if(!is_user_alive(player) || cs_get_user_team(player) || zp_get_user_survivor(player) || g_iHasChainsaw[player])
  412. return PLUGIN_CONTINUE
  413.  
  414. // Var's
  415. g_iHasChainsaw[player] = true
  416.  
  417. // Emiting Sound
  418. emit_sound(player, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  419.  
  420. // Knife Deploy
  421. reset_user_knife(player)
  422.  
  423. // Remove dropped chainsaw
  424. remove_entity(saw)
  425.  
  426. return PLUGIN_CONTINUE
  427. }
  428.  
  429. public fw_EmitSound(id, channel, const sound[])
  430. {
  431. // Non-player entity
  432. if(!is_user_connected(id))
  433. return FMRES_IGNORED
  434.  
  435. // Not Alive / Zombie / Doesn't have a Chainsaw
  436. if(!is_user_alive(id) || cs_get_user_team(id) || zp_get_user_survivor(id) || !g_iHasChainsaw[id] || !get_pcvar_num(cvar_sounds))
  437. return FMRES_IGNORED
  438.  
  439. // Check sound
  440. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  441. {
  442. if(equal(sound, oldknife_sounds[i]))
  443. {
  444. // Emit New sound and Stop old Sound
  445. emit_sound(id, channel, chainsaw_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
  446. return FMRES_SUPERCEDE
  447. }
  448. }
  449.  
  450. return FMRES_IGNORED
  451. }
  452.  
  453. public fw_Knife_PrimaryAttack_Post(knife)
  454. {
  455. // Get knife owner
  456. static id
  457. id = get_pdata_cbase(knife, m_pPlayer, 4)
  458.  
  459. // has a Chainsaw
  460. if(is_user_connected(id) && g_iHasChainsaw[id])
  461. {
  462. // Get new fire rate
  463. static Float:flRate
  464. flRate = get_pcvar_float(cvar_pattack_rate)
  465.  
  466. // Set new rates
  467. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  468. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  469. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  470.  
  471. // Get new recoil
  472. static Float:flPunchAngle[3]
  473. flPunchAngle[0] = get_pcvar_float(cvar_pattack_recoil)
  474.  
  475. // Punch their angles
  476. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  477.  
  478. }
  479.  
  480. return HAM_IGNORED
  481. }
  482.  
  483. public fw_Knife_SecondaryAttack_Post(knife)
  484. {
  485. // Get knife owner
  486. static id
  487. id = get_pdata_cbase(knife, m_pPlayer, 4)
  488.  
  489. // has a Chainsaw
  490. if(is_user_connected(id) && g_iHasChainsaw[id])
  491. {
  492. // Get new fire rate
  493. static Float:flRate
  494. flRate = get_pcvar_float(cvar_sattack_rate)
  495.  
  496. // Set new rates
  497. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  498. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  499. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  500.  
  501. // Get new recoil
  502. static Float:flPunchAngle[3]
  503. flPunchAngle[0] = get_pcvar_float(cvar_sattack_recoil)
  504.  
  505. // Punch their angles
  506. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  507. }
  508.  
  509. return HAM_IGNORED
  510. }
  511.  
  512. /*================================================================================
  513.  [Internal Functions]
  514. =================================================================================*/
  515.  
  516. check_drop_flag(flag)
  517. {
  518. new szFlags[10]
  519. get_pcvar_string(cvar_dropflags, szFlags, charsmax(szFlags))
  520.  
  521. if(read_flags(szFlags) & flag)
  522. return true
  523.  
  524. return false
  525. }
  526.  
  527. a_lot_of_blood(id) // ROFL, thanks to jtp10181 for his AMX Ultimate Gore plugin.
  528. {
  529. // Get user origin
  530. static iOrigin[3]
  531. get_user_origin(id, iOrigin)
  532.  
  533. // Blood spray
  534. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  535. write_byte(TE_BLOODSTREAM)
  536. write_coord(iOrigin[0])
  537. write_coord(iOrigin[1])
  538. write_coord(iOrigin[2]+10)
  539. write_coord(random_num(-360, 360)) // x
  540. write_coord(random_num(-360, 360)) // y
  541. write_coord(-10) // z
  542. write_byte(70) // color
  543. write_byte(random_num(50, 100)) // speed
  544. message_end()
  545.  
  546. // Write Small splash decal
  547. for (new j = 0; j < 4; j++)
  548. {
  549. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  550. write_byte(TE_WORLDDECAL)
  551. write_coord(iOrigin[0]+random_num(-100, 100))
  552. write_coord(iOrigin[1]+random_num(-100, 100))
  553. write_coord(iOrigin[2]-36)
  554. write_byte(random_num(190, 197)) // index
  555. message_end()
  556. }
  557. }
  558.  
  559. /*================================================================================
  560.  [Stocks]
  561. =================================================================================*/
  562.  
  563. stock client_printcolor(const id, const input[], any:...)
  564. {
  565. new iCount = 1, iPlayers[32]
  566.  
  567. static szMsg[191]
  568. vformat(szMsg, charsmax(szMsg), input, 3)
  569.  
  570. replace_all(szMsg, 190, "/g", "^4") // z?ld txt
  571. replace_all(szMsg, 190, "/y", "^1") // narancss?rga txt
  572. replace_all(szMsg, 190, "/ctr", "^3") // csapat txt
  573. replace_all(szMsg, 190, "/w", "^0") // csapat txt
  574.  
  575. if(id) iPlayers[0] = id
  576. else get_players(iPlayers, iCount, "ch")
  577.  
  578. for (new i = 0; i < iCount; i++)
  579. {
  580. if (is_user_connected(iPlayers[i]))
  581. {
  582. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
  583. write_byte(iPlayers[i])
  584. write_string(szMsg)
  585. message_end()
  586. }
  587. }
  588. }
  589.  


nem 100% hogy jó. de talán ez segít: pocok5 @ CSO Fegyverek

_________________
Rengeteg új beszólás eléréséhez kattints IDE (Ezek alapból sank soundshoz készültek)

Steam profil:
[steam]http://steamcommunity.com/profiles/76561198089487307[/steam]


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.02. 18:45 
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
Én is úgy csináltam nem mülkődőtt.(laki)
CeeDe tiédel meg nemtom mit csináljak 2sma van benne csak 1ik nem volt jó az HOOkolos volt tehát írhattam a weapon_chainsaw-at de nem adta zombisat nem probáltam lehet rosszul csináltam nemtom nézzétek meg ti is.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.02. 21:55 
Offline
Nagyúr
Avatar

Csatlakozott: 2011.12.18. 10:40
Hozzászólások: 671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Aucs.

Tehát, ha letöltöd amit adtam a SourceCode mappában találsz egy olyat, hogy 'powersaw.sma' ami pubra van átírva.

Van benne egy ilyen sor:
Kód:
register_clcmd("admin_get_powersaw", "Get_PowerSaw", ADMIN_KICK)

Ha így hagyod és beírod konzolba, hogy 'admin_get_powersaw' akkor megkapod a cuccost.
Vagy
Kód:
register_clcmd("say /lancfuresz", "Get_PowerSaw")

És akkor akárki használhatja /lancfuresz parancsra

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.03. 01:25 
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
Nem műkszik!.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.06. 16:58 
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
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <fakemeta>
  4. #include <engine>
  5. #include <hamsandwich>
  6.  
  7. /*================================================================================
  8.  [Customization]
  9. =================================================================================*/
  10.  
  11. // Item Cost
  12. const chainsaw_ap_cost = 30 // Mennyi ammo-ba ker?lj?n
  13.  
  14. // Custom Chainsaw Models
  15. new const chainsaw_viewmodel[] = "models/chainsaw/v_chainsaw.mdl" // View Weapon Model (v_)
  16. new const chainsaw_playermodel[] = "models/chainsaw/p_chainsaw.mdl" // Player Weapon Model (p_)
  17. new const chainsaw_worldmodel[] = "models/chainsaw/w_chainsaw.mdl" // World Weapon Model (w_)
  18.  
  19. // Custom Chainsaw Sounds
  20. new const chainsaw_sounds[][] =
  21. {
  22. "chainsaw/chainsaw_deploy.wav", // Deploy Sound (knife_deploy1.wav)
  23. "chainsaw/chainsaw_hit1.wav", // Hit 1 (knife_hit1.wav)
  24. "chainsaw/chainsaw_hit2.wav", // Hit 2 (knife_hit2.wav)
  25. "chainsaw/chainsaw_hit1.wav", // Hit 3 (knife_hit3.wav)
  26. "chainsaw/chainsaw_hit2.wav", // Hit 4 (knife_hit4.wav)
  27. "chainsaw/chainsaw_hitwall.wav", // Hit Wall (knife_hitwall1.wav)
  28. "chainsaw/chainsaw_miss.wav", // Slash 1 (knife_slash1.wav)
  29. "chainsaw/chainsaw_miss.wav", // Slash 2 (knife_slash2.wav)
  30. "chainsaw/chainsaw_stab.wav" // Stab (knife_stab1.wav)
  31. }
  32.  
  33. // Dropped Chainsaw Size
  34. new Float:chainsaw_mins[3] = { -2.0, -2.0, -2.0 }
  35. new Float:chainsaw_maxs[3] = { 2.0, 2.0, 2.0 }
  36.  
  37.  
  38. /*================================================================================
  39.  Customization ends here! Yes, that's it. Editing anything beyond
  40.  here is not officially supported. Proceed at your own risk...
  41. =================================================================================*/
  42.  
  43. // Variables
  44. new g_iItemID, g_msgCurWeapon, g_msgSayText
  45.  
  46. // Arrays
  47. new g_iHasChainsaw[33], g_iCurrentWeapon[33]
  48.  
  49. // Cvar Pointers
  50. new cvar_enable, cvar_dmgmult, cvar_oneround, cvar_sounds, cvar_dmggore, cvar_dropflags,
  51. cvar_pattack_rate, cvar_sattack_rate, cvar_pattack_recoil, cvar_sattack_recoil, cvar_body_xplode
  52.  
  53. // Flags
  54. const DROPFLAG_NORMAL = (1<<0) // "a", A l?ncf?r?szt el lehet dobni a "G" gombal
  55. const DROPFLAG_INDEATH = (1<<1) // "b", Ha megs?r?lt eldobja
  56. const DROPFLAG_INFECTED = (1<<2) // "c", Mikor megfert?zik T-v?rusal eldobja
  57. const DROPFLAG_SURVHUMAN = (1<<3) // "d", T?l?l? m?dba eldobja
  58.  
  59. // Offsets
  60. const m_pPlayer = 41
  61. const m_flNextPrimaryAttack = 46
  62. const m_flNextSecondaryAttack = 47
  63. const m_flTimeWeaponIdle = 48
  64.  
  65. // Old Knife Sounds (DON'T CHANGE)
  66. new const oldknife_sounds[][] =
  67. {
  68. "weapons/knife_deploy1.wav", // Deploy Sound
  69. "weapons/knife_hit1.wav", // Hit 1
  70. "weapons/knife_hit2.wav", // Hit 2
  71. "weapons/knife_hit3.wav", // Hit 3
  72. "weapons/knife_hit4.wav", // Hit 4
  73. "weapons/knife_hitwall1.wav", // Hit Wall
  74. "weapons/knife_slash1.wav", // Slash 1
  75. "weapons/knife_slash2.wav", // Slash 2
  76. "weapons/knife_stab.wav" // Stab
  77. }
  78.  
  79. // Plug info.
  80. #define PLUG_VERSION "0.9"
  81. #define PLUG_AUTH "meTaLiCroSS"
  82.  
  83. /*================================================================================
  84.  [Init and Precache]
  85. =================================================================================*/
  86.  
  87. public plugin_init()
  88. {
  89. // Plugin Register
  90. register_plugin("[ZP] Extra Cucc: L?ncf?r?sz", PLUG_VERSION, PLUG_AUTH)
  91.  
  92. // Events
  93. register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
  94. register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
  95.  
  96. // Cvars
  97. cvar_enable = register_cvar("zp_chainsaw_enable", "1")
  98. cvar_sounds = register_cvar("zp_chainsaw_custom_sounds", "1")
  99. cvar_dmgmult = register_cvar("zp_chainsaw_damage_mult", "8.4")
  100. cvar_dmggore = register_cvar("zp_chainsaw_gore_in_damage", "1")
  101. cvar_oneround = register_cvar("zp_chainsaw_oneround", "0")
  102. cvar_dropflags = register_cvar("zp_chainsaw_drop_flags", "abcd")
  103. cvar_body_xplode = register_cvar("zp_chainsaw_victim_explode", "1")
  104. cvar_pattack_rate = register_cvar("zp_chainsaw_attack1_rate", "0.6")
  105. cvar_sattack_rate = register_cvar("zp_chainsaw_attack2_rate", "1.2")
  106. cvar_pattack_recoil = register_cvar("zp_chainsaw_attack1_recoil", "-5.6")
  107. cvar_sattack_recoil = register_cvar("zp_chainsaw_attack2_recoil", "-8.0")
  108.  
  109. new szCvar[30]
  110. formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTH)
  111. register_cvar("zp_extra_chainsaw", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
  112.  
  113. // Fakemeta Forwards
  114. register_forward(FM_EmitSound, "fw_EmitSound")
  115.  
  116. // Engine Forwards
  117. register_touch("cs_chainsaw", "player", "fw_Chainsaw_Touch")
  118.  
  119. // Ham Forwards
  120. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  121. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  122. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  123. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
  124. RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1)
  125.  
  126. register_clcmd("say /furesz","zp_extra_item_selected")
  127.  
  128. // Message ID's vars
  129. g_msgSayText = get_user_msgid("SayText")
  130. g_msgCurWeapon = get_user_msgid("CurWeapon")
  131.  
  132. // Client Commands
  133. register_clcmd("drop", "clcmd_drop")
  134. }
  135.  
  136. public plugin_precache()
  137. {
  138. // Models
  139. precache_model(chainsaw_viewmodel)
  140. precache_model(chainsaw_playermodel)
  141. precache_model(chainsaw_worldmodel)
  142.  
  143. // Sounds
  144. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  145. precache_sound(chainsaw_sounds[i])
  146.  
  147. precache_sound("items/gunpickup2.wav")
  148. }
  149.  
  150. /*================================================================================
  151.  [Main Events]
  152. =================================================================================*/
  153.  
  154. public event_RoundStart()
  155. {
  156. // Remove chainsaws (entities)
  157. remove_entity_name("cs_chainsaw")
  158. }
  159.  
  160. public event_CurWeapon(id)
  161. {
  162. // Not alive...
  163. if(!is_user_alive(id))
  164. return PLUGIN_CONTINUE
  165.  
  166. // Updating weapon array
  167. g_iCurrentWeapon[id] = read_data(2)
  168.  
  169.  
  170. // Has chainsaw and weapon is Knife
  171. if(!g_iHasChainsaw[id] || g_iCurrentWeapon[id] != CSW_KNIFE)
  172. return PLUGIN_CONTINUE
  173.  
  174. entity_set_string(id, EV_SZ_viewmodel, chainsaw_viewmodel)
  175. entity_set_string(id, EV_SZ_weaponmodel, chainsaw_playermodel)
  176.  
  177. return PLUGIN_CONTINUE
  178. }
  179.  
  180. /*================================================================================
  181.  [Main Functions]
  182. =================================================================================*/
  183.  
  184. public clcmd_drop(id)
  185. {
  186. // Has Chainsaw Weapon is Knife
  187. if(g_iHasChainsaw[id] && g_iCurrentWeapon[id] == CSW_KNIFE)
  188. {
  189. if(check_drop_flag(DROPFLAG_NORMAL))
  190. {
  191. drop_chainsaw(id)
  192. return PLUGIN_HANDLED
  193. }
  194. }
  195.  
  196. return PLUGIN_CONTINUE
  197. }
  198.  
  199. public drop_chainsaw(id)
  200. {
  201. // Get Aim and Origin
  202. static Float:flAim[3], Float:flOrigin[3]
  203. VelocityByAim(id, 64, flAim)
  204. entity_get_vector(id, EV_VEC_origin, flOrigin)
  205.  
  206. // Changing Origin coords
  207. flOrigin[0] += flAim[0]
  208. flOrigin[1] += flAim[1]
  209.  
  210. // Creating the Entity
  211. new iEnt = create_entity("info_target")
  212.  
  213. // Classname
  214. entity_set_string(iEnt, EV_SZ_classname, "cs_chainsaw")
  215.  
  216. // Origin
  217. entity_set_origin(iEnt, flOrigin)
  218.  
  219. // Models
  220. entity_set_model(iEnt, chainsaw_worldmodel)
  221.  
  222. // Size
  223. set_size(iEnt, chainsaw_mins, chainsaw_maxs)
  224. entity_set_vector(iEnt, EV_VEC_mins, chainsaw_mins)
  225. entity_set_vector(iEnt, EV_VEC_maxs, chainsaw_maxs)
  226.  
  227. // Solid Type
  228. entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
  229.  
  230. // Movetype
  231. entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_TOSS)
  232.  
  233. // Var's
  234. g_iHasChainsaw[id] = false
  235.  
  236. // Model bugfix
  237. reset_user_knife(id)
  238. }
  239.  
  240. public reset_user_knife(id)
  241. {
  242. // Execute weapon Deploy
  243. if(user_has_weapon(id, CSW_KNIFE))
  244. ExecuteHamB(Ham_Item_Deploy, find_ent_by_owner(-1, "weapon_knife", id))
  245.  
  246. // Updating Model
  247. engclient_cmd(id, "weapon_knife")
  248. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  249. ewrite_byte(1) // active
  250. ewrite_byte(CSW_KNIFE) // weapon
  251. ewrite_byte(-1) // clip
  252. emessage_end()
  253. }
  254.  
  255. /*================================================================================
  256.  [ZombiePlague Forwards]
  257. =================================================================================*/
  258.  
  259. public zp_extra_item_selected(id, itemid)
  260. {
  261. if (itemid == g_iItemID)
  262. {
  263. // Check cvar
  264. if(get_pcvar_num(cvar_enable))
  265. {
  266. // Already has a Chainsaw
  267. if (g_iHasChainsaw[id])
  268. {
  269.  
  270. client_printcolor(id, "Neked mar van lancfureszed!")
  271. }
  272. else
  273. {
  274. // Boolean
  275. g_iHasChainsaw[id] = true
  276.  
  277. // Emiting Sound
  278. emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  279.  
  280. // Client Print
  281. client_printcolor(id, "Neked mar van lancfureszed")
  282.  
  283. // Change weapon to Knife
  284. reset_user_knife(id)
  285. }
  286. }
  287. // Isn't enabled...
  288. else
  289. {
  290. client_printcolor(id, "/g[ZP]/y A furesz cucc ki van kapcsolva. /gLepj kapcsolatba az Adminnal")
  291. }
  292. }
  293. }
  294.  
  295.  
  296.  
  297. /*================================================================================
  298.  [Main Forwards]
  299. =================================================================================*/
  300.  
  301. public client_putinserver(id)
  302. {
  303. g_iHasChainsaw[id] = false
  304. }
  305.  
  306. public client_disconnect(id)
  307. {
  308. g_iHasChainsaw[id] = false
  309. }
  310.  
  311. public fw_PlayerSpawn_Post(id)
  312. {
  313. // Check Oneround Cvar and Strip all the Chainsaws
  314. if(get_pcvar_num(cvar_oneround) || !get_pcvar_num(cvar_enable))
  315. {
  316. // Has Chainsaw
  317. if(g_iHasChainsaw[id])
  318. {
  319. // Var's
  320. g_iHasChainsaw[id] = false
  321.  
  322. // Update Knife
  323. reset_user_knife(id)
  324. }
  325. }
  326. }
  327.  
  328. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
  329. {
  330. // Check
  331. if(victim == attacker || !attacker)
  332. return HAM_IGNORED
  333.  
  334. // Attacker is not a Player
  335. if(!is_user_connected(attacker))
  336. return HAM_IGNORED
  337.  
  338. // Has chainsaw and Weapon is knife
  339. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE)
  340. {
  341. // Gore
  342. if(get_pcvar_num(cvar_dmggore))
  343. a_lot_of_blood(victim)
  344.  
  345. // Damage mult.
  346. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmult))
  347.  
  348. }
  349.  
  350. return HAM_IGNORED
  351. }
  352.  
  353. public fw_PlayerKilled(victim, attacker, shouldgib)
  354. {
  355. // Check
  356. if(victim == attacker || !attacker)
  357. return HAM_IGNORED
  358.  
  359. // Attacker is not a Player
  360. if(!is_user_connected(attacker))
  361. return HAM_IGNORED
  362.  
  363. // Attacker Has a Chainsaw
  364. if(g_iHasChainsaw[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE && get_pcvar_num(cvar_body_xplode))
  365. SetHamParamInteger(3, 2) // Body Explodes
  366.  
  367. // Victim Has a Chainsaw
  368. if(g_iHasChainsaw[victim])
  369. {
  370. if(check_drop_flag(DROPFLAG_INDEATH))
  371. drop_chainsaw(victim)
  372. else
  373. {
  374. g_iHasChainsaw[victim] = false
  375. reset_user_knife(victim)
  376. }
  377. }
  378.  
  379. return HAM_IGNORED
  380. }
  381.  
  382. public fw_Chainsaw_Touch(saw, player)
  383. {
  384. // Entities are not valid
  385. if(!is_valid_ent(saw) || !is_valid_ent(player))
  386. return PLUGIN_CONTINUE
  387.  
  388. // Is a valid player?
  389. if(!is_user_connected(player))
  390. return PLUGIN_CONTINUE
  391.  
  392. // Alive, Zombie or Survivor
  393. g_iHasChainsaw[player]
  394. return PLUGIN_CONTINUE
  395.  
  396. // Var's
  397. g_iHasChainsaw[player] = true
  398.  
  399. // Emiting Sound
  400. emit_sound(player, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  401.  
  402. // Knife Deploy
  403. reset_user_knife(player)
  404.  
  405. // Remove dropped chainsaw
  406. remove_entity(saw)
  407.  
  408. return PLUGIN_CONTINUE
  409. }
  410.  
  411. public fw_EmitSound(id, channel, const sound[])
  412. {
  413. // Non-player entity
  414. if(!is_user_connected(id))
  415. return FMRES_IGNORED
  416.  
  417. // Not Alive / Zombie / Doesn't have a Chainsaw
  418. if(!is_user_alive(id)|| !g_iHasChainsaw[id] || !get_pcvar_num(cvar_sounds))
  419. return FMRES_IGNORED
  420.  
  421. // Check sound
  422. for(new i = 0; i < sizeof chainsaw_sounds; i++)
  423. {
  424. if(equal(sound, oldknife_sounds[i]))
  425. {
  426. // Emit New sound and Stop old Sound
  427. emit_sound(id, channel, chainsaw_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
  428. return FMRES_SUPERCEDE
  429. }
  430. }
  431.  
  432. return FMRES_IGNORED
  433. }
  434.  
  435. public fw_Knife_PrimaryAttack_Post(knife)
  436. {
  437. // Get knife owner
  438. static id
  439. id = get_pdata_cbase(knife, m_pPlayer, 4)
  440.  
  441. // has a Chainsaw
  442. if(is_user_connected(id) && g_iHasChainsaw[id])
  443. {
  444. // Get new fire rate
  445. static Float:flRate
  446. flRate = get_pcvar_float(cvar_pattack_rate)
  447.  
  448. // Set new rates
  449. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  450. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  451. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  452.  
  453. // Get new recoil
  454. static Float:flPunchAngle[3]
  455. flPunchAngle[0] = get_pcvar_float(cvar_pattack_recoil)
  456.  
  457. // Punch their angles
  458. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  459.  
  460. }
  461.  
  462. return HAM_IGNORED
  463. }
  464.  
  465. public fw_Knife_SecondaryAttack_Post(knife)
  466. {
  467. // Get knife owner
  468. static id
  469. id = get_pdata_cbase(knife, m_pPlayer, 4)
  470.  
  471. // has a Chainsaw
  472. if(is_user_connected(id) && g_iHasChainsaw[id])
  473. {
  474. // Get new fire rate
  475. static Float:flRate
  476. flRate = get_pcvar_float(cvar_sattack_rate)
  477.  
  478. // Set new rates
  479. set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
  480. set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
  481. set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
  482.  
  483. // Get new recoil
  484. static Float:flPunchAngle[3]
  485. flPunchAngle[0] = get_pcvar_float(cvar_sattack_recoil)
  486.  
  487. // Punch their angles
  488. entity_set_vector(id, EV_VEC_punchangle, flPunchAngle)
  489. }
  490.  
  491. return HAM_IGNORED
  492. }
  493.  
  494. /*================================================================================
  495.  [Internal Functions]
  496. =================================================================================*/
  497.  
  498. check_drop_flag(flag)
  499. {
  500. new szFlags[10]
  501. get_pcvar_string(cvar_dropflags, szFlags, charsmax(szFlags))
  502.  
  503. if(read_flags(szFlags) & flag)
  504. return true
  505.  
  506. return false
  507. }
  508.  
  509. a_lot_of_blood(id) // ROFL, thanks to jtp10181 for his AMX Ultimate Gore plugin.
  510. {
  511. // Get user origin
  512. static iOrigin[3]
  513. get_user_origin(id, iOrigin)
  514.  
  515. // Blood spray
  516. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  517. write_byte(TE_BLOODSTREAM)
  518. write_coord(iOrigin[0])
  519. write_coord(iOrigin[1])
  520. write_coord(iOrigin[2]+10)
  521. write_coord(random_num(-360, 360)) // x
  522. write_coord(random_num(-360, 360)) // y
  523. write_coord(-10) // z
  524. write_byte(70) // color
  525. write_byte(random_num(50, 100)) // speed
  526. message_end()
  527.  
  528. // Write Small splash decal
  529. for (new j = 0; j < 4; j++)
  530. {
  531. message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
  532. write_byte(TE_WORLDDECAL)
  533. write_coord(iOrigin[0]+random_num(-100, 100))
  534. write_coord(iOrigin[1]+random_num(-100, 100))
  535. write_coord(iOrigin[2]-36)
  536. write_byte(random_num(190, 197)) // index
  537. message_end()
  538. }
  539. }
  540.  
  541. /*================================================================================
  542.  [Stocks]
  543. =================================================================================*/
  544.  
  545. stock client_printcolor(const id, const input[], any:...)
  546. {
  547. new iCount = 1, iPlayers[32]
  548.  
  549. static szMsg[191]
  550. vformat(szMsg, charsmax(szMsg), input, 3)
  551.  
  552. replace_all(szMsg, 190, "/g", "^4") // z?ld txt
  553. replace_all(szMsg, 190, "/y", "^1") // narancss?rga txt
  554. replace_all(szMsg, 190, "/ctr", "^3") // csapat txt
  555. replace_all(szMsg, 190, "/w", "^0") // csapat txt
  556.  
  557. if(id) iPlayers[0] = id
  558. else get_players(iPlayers, iCount, "ch")
  559.  
  560. for (new i = 0; i < iCount; i++)
  561. {
  562. if (is_user_connected(iPlayers[i]))
  563. {
  564. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
  565. write_byte(iPlayers[i])
  566. write_string(szMsg)
  567. message_end()
  568. }
  569. }
  570. }
  571.  


Teszt nemvolt kérlek nézdmeg /furesz parancsal hívodle :D

_________________
Kép

Ők köszönték meg InFeCt nek ezt a hozzászólást: NiGGeR-BorZ (2013.11.08. 14:06)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.07. 15:06 
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
CeDee

amit te írtál,te csak egy parancsra mondod,de attól még a #include <zombieplague> benne van!
tehát attól hogy beleraktál egy parancsot,attól még az ZP-re működik :)

meg a ZP-ben zp_extra_item_selected van általában :D

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.07. 18:50 
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
A MODEL FOS CANNOT...... PEDIG MÜKŐDNE.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.11.07. 19:14 
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
Attól hogy pubra átvan írva,persze a modelleket,hangokat felkell raknod :)

tudom hogy működik mivel leteszteltem :)

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


Ki van itt

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