hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.17. 15:55



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

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

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



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

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [11 hozzászólás ]  Oldal12Következő
Szerző Üzenet
 Hozzászólás témája: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.18. 20:18 
Offline
Fórum Moderátor
Avatar

Csatlakozott:2012.07.02. 17:41
Hozzászólások:1643
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 249 alkalommal
Szép jó estét!
Kérnék egy olyan plugint ami azt csinálja hogy admin(kick jogra)-ak chat parancsra azaz /vp ra egy vizipisztolyt kapjon...
Azt hogy hol lessz a pisztoly cstrike/model/vizipisztolykw/vizipisztolykw.mdl
Köszönöm :)

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 09:07 
Offline
Tag

Csatlakozott:2012.07.02. 16:41
Hozzászólások:37
ilyen már létezik publikusan nézegesd végig a fórumokat mert bene van! :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 10:57 
Offline
Fórum Moderátor
Avatar

Csatlakozott:2012.07.02. 17:41
Hozzászólások:1643
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 249 alkalommal
Sajna én nem találom, de ha te (ti) megtaláljátok linkelnétek?
Köszönöm

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 14:26 
Offline
Őskövület
Avatar

Csatlakozott:2013.01.01. 17:48
Hozzászólások:2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
theglorious írta:
Sajna én nem találom, de ha te (ti) megtaláljátok linkelnétek?
Köszönöm

Megkeresed ennek a fegyvernek az sma-ját ami ZP-re készült, átírod hogy zp inc. nélkül is menjen, csinálsz egy ADMIN_KICK jogú clcmd-t, és kész is.
Nem sok idő, én egyszer 49 fegyver írtam át másfél óra alatt...


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 14:46 
Offline
Fórum Moderátor
Avatar

Csatlakozott:2012.07.02. 17:41
Hozzászólások:1643
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 249 alkalommal
huh én eből csak anyit értettem hogy keressem meg a zp-s változatát grr, nem tudok plugint írni 1 szer megpróbáltam de ott hagytam mert nem tom mit hogy merre kivel és hogy mit jelentenek a kifelyezések :D

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 14:56 
Offline
Senior Tag
Avatar

Csatlakozott:2012.08.28. 20:09
Hozzászólások:207
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 10 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fun>
  5. #include <hamsandwich>
  6. #include <xs>
  7. #include <cstrike>
  8.  
  9. #define ENG_NULLENT -1
  10. #define EV_INT_WEAPONKEY EV_INT_impulse
  11. #define watergun_WEAPONKEY 893
  12. #define MAX_PLAYERS 32
  13. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  14.  
  15. #define JOG ADMIN_KICK
  16.  
  17. const USE_STOPPED = 0
  18. const OFFSET_ACTIVE_ITEM = 373
  19. const OFFSET_WEAPONOWNER = 41
  20. const OFFSET_LINUX = 5
  21. const OFFSET_LINUX_WEAPONS = 4
  22.  
  23. #define WEAP_LINUX_XTRA_OFF 4
  24. #define m_fKnown 44
  25. #define m_flNextPrimaryAttack 46
  26. #define m_flTimeWeaponIdle 48
  27. #define m_iClip 51
  28. #define m_fInReload 54
  29. #define PLAYER_LINUX_XTRA_OFF 5
  30. #define m_flNextAttack 83
  31.  
  32. #define watergun_RELOAD_TIME 3.5
  33. #define watergun_RELOAD 1
  34. #define watergun_DRAW 2
  35. #define watergun_SHOOT1 3
  36. #define watergun_SHOOT2 4
  37.  
  38. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  39.  
  40. new const Fire_Sounds[][] = { "weapons/waterp.wav" }
  41.  
  42. new watergun_V_MODEL[64] = "models/v_waterpistol.mdl"
  43. new watergun_P_MODEL[64] = "models/p_waterpistol.mdl"
  44. new watergun_W_MODEL[64] = "models/w_waterpistol.mdl"
  45.  
  46. //new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  47.  
  48. new cvar_dmg_watergun, cvar_recoil_watergun, cvar_clip_watergun, cvar_spd_watergun, cvar_watergun_ammo
  49. new g_MaxPlayers, g_orig_event_watergun, g_IsInPrimaryAttack
  50. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  51. new g_has_watergun[33], g_clip_ammo[33], g_watergun_TmpClip[33], oldweap[33]
  52. new watergun_sprite
  53.  
  54. const PRIMARY_WEAPONS_BIT_SUM =
  55. (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
  56. CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
  57. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  58. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
  59. "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  60. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  61. "weapon_ak47", "weapon_knife", "weapon_p90" }
  62.  
  63. public plugin_init()
  64. {
  65. register_plugin("Water Gun", "1.0", "LARS-DAY[BR]EAKER")
  66. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  67. register_event("CurWeapon","CurrentWeapon","be","1=1")
  68. RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_watergun_AddToPlayer")
  69. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  70. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  71. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  72. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  73. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  74. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  75. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack")
  76. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack_Post", 1)
  77. RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "watergun_ItemPostFrame")
  78. RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload")
  79. RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload_Post", 1)
  80. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  81. register_forward(FM_SetModel, "fw_SetModel")
  82. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  83. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  84.  
  85. //RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  86. //RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  87. //RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  88. //RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  89. //RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  90. //RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  91. //RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  92.  
  93. cvar_dmg_watergun = register_cvar("watergun_dmg", "1.20")
  94. cvar_recoil_watergun = register_cvar("watergun_recoil", "1.01")
  95. cvar_clip_watergun = register_cvar("watergun_clip", "999")
  96. cvar_spd_watergun = register_cvar("watergun_spd", "1.02")
  97. cvar_watergun_ammo = register_cvar("watergun_ammo", "999")
  98.  
  99. g_MaxPlayers = get_maxplayers()
  100.  
  101. register_clcmd("say /vp", "GiveWaterGun")
  102. register_clcmd("say_team /vp", "GiveWaterGun")
  103. }
  104.  
  105. public plugin_precache()
  106. {
  107. precache_model(watergun_V_MODEL)
  108. precache_model(watergun_P_MODEL)
  109. precache_model(watergun_W_MODEL)
  110. for(new i = 0; i < sizeof Fire_Sounds; i++)
  111. precache_sound(Fire_Sounds[i])
  112. precache_sound("weapons/water_clipin.wav")
  113. precache_sound("weapons/water_clipout.wav")
  114. precache_sound("weapons/water_pump.wav")
  115. precache_sound("weapons/water_draw.wav")
  116. m_iBlood[0] = precache_model("sprites/blood.spr")
  117. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  118. watergun_sprite = precache_model("sprites/watergun.spr")
  119.  
  120. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  121. }
  122.  
  123. public fwPrecacheEvent_Post(type, const name[])
  124. {
  125. if (equal("events/mp5n.sc", name))
  126. {
  127. g_orig_event_watergun = get_orig_retval()
  128. return FMRES_HANDLED
  129. }
  130. return FMRES_IGNORED
  131. }
  132.  
  133. public client_connect(id)
  134. {
  135. g_has_watergun[id] = false
  136. }
  137.  
  138. public client_disconnect(id)
  139. {
  140. g_has_watergun[id] = false
  141. }
  142.  
  143. public fw_SetModel(entity, model[])
  144. {
  145. if(!is_valid_ent(entity))
  146. return FMRES_IGNORED
  147.  
  148. static szClassName[33]
  149. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  150.  
  151. if(!equal(szClassName, "weaponbox"))
  152. return FMRES_IGNORED
  153.  
  154. static iOwner
  155.  
  156. iOwner = entity_get_edict(entity, EV_ENT_owner)
  157.  
  158. if(equal(model, "models/w_mp5.mdl"))
  159. {
  160. static iStoredAugID
  161.  
  162. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
  163.  
  164. if(!is_valid_ent(iStoredAugID))
  165. return FMRES_IGNORED
  166.  
  167. if(g_has_watergun[iOwner])
  168. {
  169. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, watergun_WEAPONKEY)
  170.  
  171. g_has_watergun[iOwner] = false
  172.  
  173. entity_set_model(entity, watergun_W_MODEL)
  174.  
  175. return FMRES_SUPERCEDE
  176. }
  177. }
  178. return FMRES_IGNORED
  179. }
  180.  
  181. public GiveWaterGun(id)
  182. {
  183. if(get_user_flags(id) & JOG)
  184. {
  185. drop_weapons(id, 1)
  186. new iWep2 = give_item(id,"weapon_mp5navy")
  187. if( iWep2 > 0 )
  188. {
  189. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_watergun))
  190. cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_watergun_ammo))
  191. UTIL_PlayWeaponAnimation(id, watergun_DRAW)
  192. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  193. }
  194. g_has_watergun[id] = true
  195. }
  196. else
  197. {
  198. client_print(id, print_chat, "Csak vip-k vehetnek vizipisztolyt!")
  199. }
  200. }
  201.  
  202. public fw_watergun_AddToPlayer(watergun, id)
  203. {
  204. if(!is_valid_ent(watergun) || !is_user_connected(id))
  205. return HAM_IGNORED
  206.  
  207. if(entity_get_int(watergun, EV_INT_WEAPONKEY) == watergun_WEAPONKEY)
  208. {
  209. g_has_watergun[id] = true
  210.  
  211. entity_set_int(watergun, EV_INT_WEAPONKEY, 0)
  212.  
  213. return HAM_HANDLED
  214. }
  215. return HAM_IGNORED
  216. }
  217.  
  218. public fw_UseStationary_Post(entity, caller, activator, use_type)
  219. {
  220. if (use_type == USE_STOPPED && is_user_connected(caller))
  221. replace_weapon_models(caller, get_user_weapon(caller))
  222. }
  223.  
  224. public fw_Item_Deploy_Post(weapon_ent)
  225. {
  226. static owner
  227. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  228.  
  229. static weaponid
  230. weaponid = cs_get_weapon_id(weapon_ent)
  231.  
  232. replace_weapon_models(owner, weaponid)
  233. }
  234.  
  235. public CurrentWeapon(id)
  236. {
  237. replace_weapon_models(id, read_data(2))
  238.  
  239. if(read_data(2) != CSW_MP5NAVY || !g_has_watergun[id])
  240. return
  241.  
  242. static Float:iSpeed
  243. if(g_has_watergun[id])
  244. iSpeed = get_pcvar_float(cvar_spd_watergun)
  245.  
  246. static weapon[32],Ent
  247. get_weaponname(read_data(2),weapon,31)
  248. Ent = find_ent_by_owner(-1,weapon,id)
  249. if(Ent)
  250. {
  251. static Float:Delay
  252. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  253. if (Delay > 0.0)
  254. {
  255. set_pdata_float(Ent, 46, Delay, 4)
  256. }
  257. }
  258. }
  259.  
  260. replace_weapon_models(id, weaponid)
  261. {
  262. switch (weaponid)
  263. {
  264. case CSW_MP5NAVY:
  265. {
  266. if(g_has_watergun[id])
  267. {
  268. set_pev(id, pev_viewmodel2, watergun_V_MODEL)
  269. set_pev(id, pev_weaponmodel2, watergun_P_MODEL)
  270. if(oldweap[id] != CSW_MP5NAVY)
  271. {
  272. UTIL_PlayWeaponAnimation(id, watergun_DRAW)
  273. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  274. }
  275. }
  276. }
  277. }
  278. oldweap[id] = weaponid
  279. }
  280.  
  281. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  282. {
  283. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_watergun[Player]))
  284. return FMRES_IGNORED
  285.  
  286. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  287. return FMRES_HANDLED
  288. }
  289.  
  290. public fw_watergun_PrimaryAttack(Weapon)
  291. {
  292. new Player = get_pdata_cbase(Weapon, 41, 4)
  293.  
  294. if (!g_has_watergun[Player])
  295. return
  296.  
  297. g_IsInPrimaryAttack = 1
  298. pev(Player,pev_punchangle,cl_pushangle[Player])
  299.  
  300. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  301. }
  302.  
  303. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  304. {
  305. if ((eventid != g_orig_event_watergun) || !g_IsInPrimaryAttack)
  306. return FMRES_IGNORED
  307. if (!(1 <= invoker <= g_MaxPlayers))
  308. return FMRES_IGNORED
  309.  
  310. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  311. return FMRES_SUPERCEDE
  312. }
  313.  
  314. public fw_watergun_PrimaryAttack_Post(Weapon)
  315. {
  316. g_IsInPrimaryAttack = 0
  317. new Player = get_pdata_cbase(Weapon, 41, 4)
  318.  
  319. new szClip, szAmmo
  320. get_user_weapon(Player, szClip, szAmmo)
  321.  
  322. if(!is_user_alive(Player))
  323. return
  324.  
  325. if(g_has_watergun[Player])
  326. {
  327. if (!g_clip_ammo[Player])
  328. return
  329.  
  330. new Float:push[3]
  331. pev(Player,pev_punchangle,push)
  332. xs_vec_sub(push,cl_pushangle[Player],push)
  333.  
  334. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_watergun),push)
  335. xs_vec_add(push,cl_pushangle[Player],push)
  336. set_pev(Player,pev_punchangle,push)
  337.  
  338. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  339. UTIL_PlayWeaponAnimation(Player, random_num(watergun_SHOOT1, watergun_SHOOT2))
  340.  
  341. static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3]
  342. pev(Player, pev_v_angle, plrViewAngles)
  343.  
  344. static Float:VecSrc[3], Float:VecDst[3]
  345.  
  346. //VecSrc = pev->origin + pev->view_ofs
  347. pev(Player, pev_origin, PlrOrigin)
  348. pev(Player, pev_view_ofs, VecSrc)
  349. xs_vec_add(VecSrc, PlrOrigin, VecSrc)
  350.  
  351. //VecDst = VecDir * 8192.0
  352. angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir);
  353. xs_vec_mul_scalar(VecDir, 8192.0, VecDst);
  354. xs_vec_add(VecDst, VecSrc, VecDst);
  355.  
  356. new hTrace = create_tr2()
  357. engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace)
  358. get_tr2(hTrace, TR_vecEndPos, VecEnd);
  359.  
  360. create_tracer_water(Player, VecSrc, VecEnd)
  361. }
  362. }
  363.  
  364. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  365. {
  366. if (victim != attacker && is_user_connected(attacker))
  367. {
  368. if(get_user_weapon(attacker) == CSW_MP5NAVY)
  369. {
  370. if(g_has_watergun[attacker])
  371. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_watergun))
  372. }
  373. }
  374. }
  375.  
  376. public message_DeathMsg(msg_id, msg_dest, id)
  377. {
  378. static szTruncatedWeapon[33], iAttacker, iVictim
  379.  
  380. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
  381.  
  382. iAttacker = get_msg_arg_int(1)
  383. iVictim = get_msg_arg_int(2)
  384.  
  385. if(!is_user_connected(iAttacker) || iAttacker == iVictim)
  386. return PLUGIN_CONTINUE
  387.  
  388. if(equal(szTruncatedWeapon, "mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
  389. {
  390. if(g_has_watergun[iAttacker])
  391. set_msg_arg_string(4, "mp5navy")
  392. }
  393. return PLUGIN_CONTINUE
  394. }
  395.  
  396. stock fm_cs_get_current_weapon_ent(id)
  397. {
  398. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  399. }
  400.  
  401. stock fm_cs_get_weapon_ent_owner(ent)
  402. {
  403. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  404. }
  405.  
  406. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  407. {
  408. set_pev(Player, pev_weaponanim, Sequence)
  409.  
  410. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  411. write_byte(Sequence)
  412. write_byte(pev(Player, pev_body))
  413. message_end()
  414. }
  415.  
  416. public watergun_ItemPostFrame(weapon_entity)
  417. {
  418. new id = pev(weapon_entity, pev_owner)
  419. if (!is_user_connected(id))
  420. return HAM_IGNORED
  421.  
  422. if (!g_has_watergun[id])
  423. return HAM_IGNORED
  424.  
  425. static iClipExtra
  426.  
  427. iClipExtra = get_pcvar_num(cvar_clip_watergun)
  428. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  429.  
  430. new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
  431. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  432.  
  433. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  434.  
  435. if( fInReload && flNextAttack <= 0.0 )
  436. {
  437. new j = min(iClipExtra - iClip, iBpAmmo)
  438.  
  439. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  440. cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j)
  441.  
  442. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  443. fInReload = 0
  444. }
  445. return HAM_IGNORED
  446. }
  447.  
  448. public watergun_Reload(weapon_entity)
  449. {
  450. new id = pev(weapon_entity, pev_owner)
  451. if (!is_user_connected(id))
  452. return HAM_IGNORED
  453.  
  454. if (!g_has_watergun[id])
  455. return HAM_IGNORED
  456.  
  457. static iClipExtra
  458.  
  459. if(g_has_watergun[id])
  460. iClipExtra = get_pcvar_num(cvar_clip_watergun)
  461.  
  462. g_watergun_TmpClip[id] = -1
  463.  
  464. new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY)
  465. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  466.  
  467. if (iBpAmmo <= 0)
  468. return HAM_SUPERCEDE
  469.  
  470. if (iClip >= iClipExtra)
  471. return HAM_SUPERCEDE
  472.  
  473. g_watergun_TmpClip[id] = iClip
  474.  
  475. return HAM_IGNORED
  476. }
  477.  
  478. public watergun_Reload_Post(weapon_entity)
  479. {
  480. new id = pev(weapon_entity, pev_owner)
  481. if (!is_user_connected(id))
  482. return HAM_IGNORED
  483.  
  484. if (!g_has_watergun[id])
  485. return HAM_IGNORED
  486.  
  487. if (g_watergun_TmpClip[id] == -1)
  488. return HAM_IGNORED
  489.  
  490. set_pdata_int(weapon_entity, m_iClip, g_watergun_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  491.  
  492. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, watergun_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  493.  
  494. set_pdata_float(id, m_flNextAttack, watergun_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  495.  
  496. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  497.  
  498. UTIL_PlayWeaponAnimation(id, watergun_RELOAD)
  499.  
  500. return HAM_IGNORED
  501. }
  502.  
  503. stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3])
  504. {
  505. static iVec1[3]
  506. FVecIVec(fVec1, iVec1)
  507.  
  508. static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3]
  509. pev(id, pev_v_angle, angles)
  510. engfunc(EngFunc_MakeVectors, angles)
  511. global_get(glb_v_forward, v_forward)
  512. global_get(glb_v_right, v_right)
  513. global_get(glb_v_up, v_up)
  514.  
  515. //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs
  516. pev(id, pev_origin, player_origin)
  517. pev(id, pev_view_ofs, player_view_offset)
  518. xs_vec_add(player_origin, player_view_offset, gun_position)
  519.  
  520. xs_vec_mul_scalar(v_forward, 24.0, v_forward)
  521. xs_vec_mul_scalar(v_right, 3.0, v_right)
  522.  
  523. if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING)
  524. xs_vec_mul_scalar(v_up, 6.0, v_up)
  525. else
  526. xs_vec_mul_scalar(v_up, -2.0, v_up)
  527.  
  528. xs_vec_add(gun_position, v_forward, origin)
  529. xs_vec_add(origin, v_right, origin)
  530. xs_vec_add(origin, v_up, origin)
  531.  
  532. vSrc[0] = origin[0]
  533. vSrc[1] = origin[1]
  534. vSrc[2] = origin[2]
  535.  
  536. new Float:dist = get_distance_f(vSrc, fVec2)
  537. new CountDrops = floatround(dist / 50.0)
  538.  
  539. if (CountDrops > 20)
  540. CountDrops = 20
  541.  
  542. if (CountDrops < 2)
  543. CountDrops = 2
  544.  
  545. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
  546. write_byte(TE_SPRITETRAIL)
  547. engfunc(EngFunc_WriteCoord, vSrc[0])
  548. engfunc(EngFunc_WriteCoord, vSrc[1])
  549. engfunc(EngFunc_WriteCoord, vSrc[2])
  550. engfunc(EngFunc_WriteCoord, fVec2[0])
  551. engfunc(EngFunc_WriteCoord, fVec2[1])
  552. engfunc(EngFunc_WriteCoord, fVec2[2])
  553. write_short(watergun_sprite)
  554. write_byte(CountDrops)
  555. write_byte(0)
  556. write_byte(1)
  557. write_byte(60)
  558. write_byte(10)
  559. message_end()
  560.  
  561. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
  562. write_byte(TE_BEAMPOINTS)
  563. engfunc(EngFunc_WriteCoord, fVec2[0])
  564. engfunc(EngFunc_WriteCoord, fVec2[1])
  565. engfunc(EngFunc_WriteCoord, fVec2[2])
  566. engfunc(EngFunc_WriteCoord, vSrc[0])
  567. engfunc(EngFunc_WriteCoord, vSrc[1])
  568. engfunc(EngFunc_WriteCoord, vSrc[2])
  569. write_short(watergun_sprite)
  570. write_byte(6)
  571. write_byte(200)
  572. write_byte(1)
  573. write_byte(100)
  574. write_byte(0)
  575. write_byte(64); write_byte(64); write_byte(192);
  576. write_byte(192)
  577. write_byte(250)
  578. message_end()
  579. }
  580.  
  581. stock drop_weapons(id, dropwhat)
  582. {
  583. static weapons[32], num, i, weaponid
  584. num = 0
  585. get_user_weapons(id, weapons, num)
  586.  
  587. for (i = 0; i < num; i++)
  588. {
  589. weaponid = weapons[i]
  590.  
  591. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  592. {
  593. static wname[32]
  594. get_weaponname(weaponid, wname, sizeof wname - 1)
  595. engclient_cmd(id, "drop", wname)
  596. }
  597. }
  598. }
  599.  
  600. public client_PreThink(id)
  601. {
  602. if(get_user_flags(id) & JOG)
  603. return PLUGIN_HANDLED;
  604.  
  605. if(user_has_weapon(id, CSW_MP5NAVY))
  606. {
  607. if(g_has_watergun[id])
  608. {
  609. client_cmd(id, "drop")
  610. }
  611. }
  612. }

Szerintem erre gondolsz :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 16:01 
Offline
Fórum Moderátor
Avatar

Csatlakozott:2012.07.02. 17:41
Hozzászólások:1643
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 249 alkalommal
nekem az kell hogy a vizipisztolyt csak admin és erre a parancsra /vp használja illetve kapja
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3. #include <amxmisc>
  4.  
  5. #include <fakemeta>
  6.  
  7. #include <fakemeta_util>
  8.  
  9. #include <hamsandwich>
  10.  
  11. #include <fun>
  12.  
  13. #include <engine>
  14.  
  15. #include <cstrike>
  16.  
  17. #include <zombieplague>
  18.  
  19. #define EWEAPON_W_MODEL "models/cso_wpn/w_waterpistol.mdl"
  20.  
  21. #define EWEAPON_V_MODEL "models/cso_wpn/v_waterpistol.mdl"
  22.  
  23. #define EWEAPON_P_MODEL "models/cso_wpn/p_waterpistol.mdl"
  24.  
  25. #define EWEAPON_SOUND_FIRE "weapons/water-1.wav"
  26.  
  27. #define EWEAPON_SOUND_EMPTY "weapons/ak47_clipout.wav"
  28.  
  29.  
  30.  
  31. #define EWEAPON_LOGNAME "watergun"
  32.  
  33.  
  34.  
  35. #define EWEAPON_WEAPONKEY 1200788
  36.  
  37. #define EWEAPON_BASE_WEAPON "weapon_ump45"
  38.  
  39.  
  40.  
  41. #define EWEAPON_CLIPSIZE 70
  42.  
  43. #define EWEAPON_START_AMMO 300
  44.  
  45.  
  46.  
  47. #define EWEAPON_SHOOT_NEXTATTACKTIME 0.1
  48.  
  49. #define EWEAPON_SHOOT_NEXTIDLETIME 0.1
  50.  
  51. #define EWEAPON_SHOOTEMPTY_NEXTATTACKTIME 0.2
  52.  
  53. #define EWEAPON_SHOOTEMPTY_NEXTIDLETIME 0.2
  54.  
  55. #define EWEAPON_RELOAD_TIME 2.3
  56.  
  57. #define EWEAPON_BASE_DAMAGE 70.0
  58.  
  59.  
  60.  
  61. #define EWEAPON_HORIZONTAL_RECOIL 150
  62.  
  63. #define EWEAPON_VERTICAL_RECOIL 1
  64.  
  65.  
  66.  
  67. #define ANIM_IDLE 0
  68.  
  69. #define ANIM_IDLE_EMPTY 3
  70.  
  71. #define ANIM_RELOAD 4
  72.  
  73. #define ANIM_DRAW 5
  74.  
  75. #define ANIM_DRAW_EMPTY 2
  76.  
  77. #define ANIM_FIRE1 1
  78.  
  79. #define ANIM_FIRE2 1
  80.  
  81. #define ANIM_FIRE3 1
  82.  
  83.  
  84.  
  85. #define ANIM_PLAYER_POSTFIX "rifle"
  86.  
  87.  
  88.  
  89. #define FIRE_WATERSPRAY
  90.  
  91. /* ------------------------------------------------- */
  92.  
  93.  
  94.  
  95. new g_EWeaponId = 0;
  96.  
  97. new g_OriginalWModel[128];
  98.  
  99. #define EV_INT_WEAPONKEY EV_INT_impulse
  100.  
  101. #define MAX_PLAYERS 32
  102.  
  103.  
  104.  
  105. new DecalsShot[5] = {41, 42, 43, 44, 45};
  106.  
  107. new g_BloodDecals[6];
  108.  
  109. new g_BloodSprite[2];
  110.  
  111.  
  112.  
  113. enum _:e_EWepState
  114.  
  115. {
  116.  
  117. bool:wep_have,
  118.  
  119. bool:wep_active,
  120.  
  121. wep_ent,
  122.  
  123. wep_TmpClip,
  124.  
  125. };
  126.  
  127.  
  128.  
  129. new g_EWepPlayerData[MAX_PLAYERS+1][e_EWepState];
  130.  
  131.  
  132.  
  133. //CBaseWeapon fields
  134.  
  135. #define m_fKnown 44
  136.  
  137. #define m_flNextPrimaryAttack 46
  138.  
  139. #define m_flTimeWeaponIdle 48
  140.  
  141. #define m_iClip 51
  142.  
  143. #define m_fInReload 54
  144.  
  145. #define m_flNextAttack 83
  146.  
  147. #define CBASEWEAPON_LINUX_XTRA_OFF 4
  148.  
  149.  
  150.  
  151. new const g_item_name[] = { "\wVizipisztoly\r[CSO]" };
  152.  
  153. new g_itemid_guitar;
  154.  
  155. const g_item_cost = 18;
  156.  
  157.  
  158.  
  159. #if defined FIRE_WATERSPRAY
  160.  
  161. new tracer_sprite;
  162.  
  163. new tracer_sprite2;
  164.  
  165. #endif //FIRE_WATERSPRAY
  166.  
  167.  
  168.  
  169. public plugin_init() {
  170.  
  171. register_plugin("[ZP] Extra: Guitar!", "0.7.0", "Crock");
  172.  
  173. g_itemid_guitar = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_HUMAN);
  174.  
  175.  
  176.  
  177. InitDecals();
  178.  
  179.  
  180.  
  181. RegisterHam(Ham_Weapon_PrimaryAttack, EWEAPON_BASE_WEAPON, "CWeapon__PrimaryAttack");
  182.  
  183. RegisterHam(Ham_Item_Deploy, EWEAPON_BASE_WEAPON, "CWeapon__Deploy", 1);
  184.  
  185. RegisterHam(Ham_Item_AddToPlayer, EWEAPON_BASE_WEAPON, "CWeapon__AddToPlayer");
  186.  
  187. RegisterHam(Ham_Item_AttachToPlayer, EWEAPON_BASE_WEAPON, "CWeapon__AttachToPlayer");
  188.  
  189. RegisterHam(Ham_Item_PostFrame, EWEAPON_BASE_WEAPON, "CWeapon__ItemPostFrame");
  190.  
  191. RegisterHam(Ham_Weapon_Reload, EWEAPON_BASE_WEAPON, "CWeapon__Reload");
  192.  
  193. RegisterHam(Ham_Weapon_Reload, EWEAPON_BASE_WEAPON, "CWeapon__Reload_Post", 1);
  194.  
  195.  
  196.  
  197. register_forward(FM_SetModel, "CWeapon__SetModel");
  198.  
  199. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
  200.  
  201. register_event("CurWeapon", "event_curweapon", "be", "1=1");
  202.  
  203. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg");
  204.  
  205.  
  206.  
  207. g_EWeaponId = get_weaponid(EWEAPON_BASE_WEAPON);
  208.  
  209. }
  210.  
  211.  
  212.  
  213. stock InitDecals()
  214.  
  215. {
  216.  
  217. g_BloodDecals[0] = get_decal_index("{blood1");
  218.  
  219. g_BloodDecals[1] = get_decal_index("{blood2");
  220.  
  221. g_BloodDecals[2] = get_decal_index("{blood3");
  222.  
  223. g_BloodDecals[3] = get_decal_index("{blood4");
  224.  
  225. g_BloodDecals[4] = get_decal_index("{blood5");
  226.  
  227. g_BloodDecals[5] = get_decal_index("{blood6");
  228.  
  229. }
  230.  
  231.  
  232.  
  233. public plugin_precache() {
  234.  
  235. precache_model(EWEAPON_W_MODEL);
  236.  
  237. precache_model(EWEAPON_V_MODEL);
  238.  
  239. precache_model(EWEAPON_P_MODEL);
  240.  
  241.  
  242.  
  243. precache_sound(EWEAPON_SOUND_FIRE);
  244.  
  245. precache_sound(EWEAPON_SOUND_EMPTY);
  246.  
  247.  
  248.  
  249. g_BloodSprite[0] = precache_model("sprites/blood.spr")
  250.  
  251. g_BloodSprite[1] = precache_model("sprites/bloodspray.spr")
  252.  
  253.  
  254.  
  255. #if defined FIRE_WATERSPRAY
  256.  
  257. tracer_sprite = precache_model("sprites/bluejet1.spr");
  258.  
  259. tracer_sprite2 = precache_model("sprites/blueflare2.spr");
  260.  
  261. #endif
  262.  
  263. }
  264.  
  265.  
  266.  
  267. public CWeapon__PrimaryAttack(weapon_entity) {
  268.  
  269. if(!is_valid_ent(weapon_entity))
  270.  
  271. return HAM_IGNORED;
  272.  
  273.  
  274.  
  275. new id = pev(weapon_entity, pev_owner)
  276.  
  277. if (!is_user_connected(id))
  278.  
  279. return HAM_IGNORED;
  280.  
  281.  
  282.  
  283. if (!g_EWepPlayerData[id][wep_have])
  284.  
  285. return HAM_IGNORED;
  286.  
  287.  
  288.  
  289. static szClassName[33]
  290.  
  291. entity_get_string(weapon_entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  292.  
  293.  
  294.  
  295. new iClip = get_pdata_int(weapon_entity, m_iClip, CBASEWEAPON_LINUX_XTRA_OFF)
  296.  
  297. if (iClip <= 0) {
  298.  
  299. send_weapon_animation(id, ANIM_IDLE_EMPTY)
  300.  
  301. engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, EWEAPON_SOUND_EMPTY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  302.  
  303.  
  304.  
  305. set_pdata_float(weapon_entity, m_flNextPrimaryAttack, EWEAPON_SHOOTEMPTY_NEXTATTACKTIME, CBASEWEAPON_LINUX_XTRA_OFF)
  306.  
  307. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, EWEAPON_SHOOTEMPTY_NEXTIDLETIME, CBASEWEAPON_LINUX_XTRA_OFF)
  308.  
  309.  
  310.  
  311. return HAM_SUPERCEDE;
  312.  
  313. }
  314.  
  315. iClip--;
  316.  
  317. set_pdata_int(weapon_entity, m_iClip, iClip, CBASEWEAPON_LINUX_XTRA_OFF);
  318.  
  319.  
  320.  
  321. new anim;
  322.  
  323. switch (random_num(0,2)) {
  324.  
  325. case 0: anim = ANIM_FIRE1;
  326.  
  327. case 1: anim = ANIM_FIRE2;
  328.  
  329. default: anim = ANIM_FIRE3;
  330.  
  331. }
  332.  
  333. send_weapon_animation(id, anim);
  334.  
  335.  
  336.  
  337.  
  338.  
  339. /* player model animation */
  340.  
  341.  
  342.  
  343. engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, EWEAPON_SOUND_FIRE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  344.  
  345.  
  346.  
  347.  
  348.  
  349. static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3];
  350.  
  351. pev(id, pev_v_angle, plrViewAngles);
  352.  
  353.  
  354.  
  355. static Float:VecSrc[3], Float:VecDst[3];
  356.  
  357.  
  358.  
  359. //VecSrc = pev->origin + pev->view_ofs;
  360.  
  361. pev(id, pev_origin, PlrOrigin)
  362.  
  363. pev(id, pev_view_ofs, VecSrc)
  364.  
  365. xs_vec_add(VecSrc, PlrOrigin, VecSrc)
  366.  
  367.  
  368.  
  369. //VecDst = VecDir * 8192.0;
  370.  
  371. angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir);
  372.  
  373. xs_vec_mul_scalar(VecDir, 8192.0, VecDst);
  374.  
  375. xs_vec_add(VecDst, VecSrc, VecDst);
  376.  
  377.  
  378.  
  379. new hTrace = create_tr2()
  380.  
  381. engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, id, hTrace)
  382.  
  383. new hitEnt = get_tr2(hTrace, TR_pHit);
  384.  
  385. get_tr2(hTrace, TR_vecEndPos, VecEnd);
  386.  
  387.  
  388.  
  389. #if defined FIRE_WATERSPRAY
  390.  
  391. create_tracer_water(id, VecSrc, VecEnd)
  392.  
  393. #endif //FIRE_WATERSPRAY
  394.  
  395.  
  396.  
  397. new bool:bNeedDrawShot = true;
  398.  
  399.  
  400.  
  401. if (pev_valid(hitEnt)) {
  402.  
  403. new Float:takeDamage;
  404.  
  405. pev(hitEnt, pev_takedamage, takeDamage);
  406.  
  407.  
  408.  
  409. if (takeDamage != 0.0) {
  410.  
  411. bNeedDrawShot = false;
  412.  
  413.  
  414.  
  415. new Float:dmg = EWEAPON_BASE_DAMAGE;
  416.  
  417.  
  418.  
  419. new hitGroup = get_tr2(hTrace, TR_iHitgroup);
  420.  
  421.  
  422.  
  423. switch (hitGroup) {
  424.  
  425. case HIT_HEAD: { dmg *= 1.0; }
  426.  
  427. case HIT_LEFTARM: { dmg *= 0.5; }
  428.  
  429. case HIT_RIGHTARM: { dmg *= 0.5; }
  430.  
  431. case HIT_LEFTLEG: { dmg *= 0.5; }
  432.  
  433. case HIT_RIGHTLEG: { dmg *= 0.5; }
  434.  
  435. }
  436.  
  437.  
  438.  
  439. if (is_user_connected(hitEnt) && zp_get_user_zombie(hitEnt)) {
  440.  
  441. ExecuteHamB(Ham_TakeDamage, hitEnt, id, id, dmg, DMG_BULLET | DMG_NEVERGIB);
  442.  
  443. ExecuteHamB(Ham_TraceBleed, hitEnt, dmg, VecDir, hTrace, DMG_BULLET | DMG_NEVERGIB);
  444.  
  445. make_blood(VecEnd, dmg, hitEnt);
  446.  
  447. }
  448.  
  449.  
  450.  
  451. }
  452.  
  453.  
  454.  
  455. new solid = pev(hitEnt, pev_solid);
  456.  
  457. if (solid != SOLID_BSP)
  458.  
  459. bNeedDrawShot = false;
  460.  
  461.  
  462.  
  463. }
  464.  
  465.  
  466.  
  467. static Float:punchAngle[3];
  468.  
  469. punchAngle[0] = float(random_num(-EWEAPON_VERTICAL_RECOIL, EWEAPON_VERTICAL_RECOIL)) / 100.0;
  470.  
  471.  
  472.  
  473. punchAngle[1] = float(random_num(-EWEAPON_HORIZONTAL_RECOIL, EWEAPON_HORIZONTAL_RECOIL)) / 100.0;
  474.  
  475. punchAngle[2] = 0.0;
  476.  
  477. set_pev(id, pev_punchangle, punchAngle);
  478.  
  479.  
  480.  
  481.  
  482.  
  483. /* draw decal if needed */
  484.  
  485.  
  486.  
  487. if (bNeedDrawShot == true) {
  488.  
  489. #if defined FIRE_WATERSPRAY
  490.  
  491. #else
  492.  
  493. create_shot(VecEnd, hitEnt);
  494.  
  495. #endif //FIRE_WATERSPRAY
  496.  
  497. } else {
  498.  
  499. if (pev_valid(hitEnt)) {
  500.  
  501. // engfunc(EngFunc_EmitAmbientSound, 0, VecEnd, "hit_body.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  502.  
  503. }
  504.  
  505. }
  506.  
  507.  
  508.  
  509. set_pdata_float(weapon_entity, m_flNextPrimaryAttack, EWEAPON_SHOOT_NEXTATTACKTIME, CBASEWEAPON_LINUX_XTRA_OFF)
  510.  
  511. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, EWEAPON_SHOOT_NEXTIDLETIME, CBASEWEAPON_LINUX_XTRA_OFF)
  512.  
  513.  
  514.  
  515. free_tr2(hTrace);
  516.  
  517.  
  518.  
  519. return HAM_SUPERCEDE;
  520.  
  521. }
  522.  
  523.  
  524.  
  525. public CWeapon__SetModel(entity, model[]) {
  526.  
  527. if(!is_valid_ent(entity))
  528.  
  529. return FMRES_IGNORED;
  530.  
  531.  
  532.  
  533. static szClassName[33]
  534.  
  535. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  536.  
  537.  
  538.  
  539. // save original W_ model
  540.  
  541. if (equal(szClassName, EWEAPON_BASE_WEAPON)) {
  542.  
  543. copy(g_OriginalWModel, 127, model)
  544.  
  545. }
  546.  
  547.  
  548.  
  549.  
  550.  
  551. if (!equal(szClassName, "weaponbox")) {
  552.  
  553. return FMRES_IGNORED;
  554.  
  555. }
  556.  
  557.  
  558.  
  559. if (!g_OriginalWModel[0] || !equal(g_OriginalWModel, model)) {
  560.  
  561. return FMRES_IGNORED;
  562.  
  563. }
  564.  
  565.  
  566.  
  567. new entOwner = entity_get_edict(entity, EV_ENT_owner)
  568.  
  569. new entStoredEWep = find_ent_by_owner(FM_NULLENT, EWEAPON_BASE_WEAPON, entity)
  570.  
  571.  
  572.  
  573. if(is_user_connected(entOwner) && \
  574.  
  575. g_EWepPlayerData[entOwner][wep_have] == true &&
  576.  
  577. is_valid_ent(entStoredEWep)) \
  578.  
  579. {
  580.  
  581. entity_set_int(entStoredEWep, EV_INT_WEAPONKEY, EWEAPON_WEAPONKEY)
  582.  
  583.  
  584.  
  585. // save ammo
  586.  
  587. new bpammos = cs_get_user_bpammo(entOwner, g_EWeaponId);
  588.  
  589. entity_set_int(entStoredEWep, EV_INT_weapons, bpammos);
  590.  
  591. cs_set_user_bpammo(entOwner, g_EWeaponId, 0);
  592.  
  593.  
  594.  
  595. CWeapon__RemoveFromPlayer(entOwner)
  596.  
  597.  
  598.  
  599. entity_set_model(entity, EWEAPON_W_MODEL);
  600.  
  601.  
  602.  
  603. return FMRES_SUPERCEDE;
  604.  
  605. }
  606.  
  607.  
  608.  
  609. return FMRES_IGNORED;
  610.  
  611. }
  612.  
  613.  
  614.  
  615. stock CWeapon__RemoveFromPlayer(id) {
  616.  
  617. g_EWepPlayerData[id][wep_have] = false;
  618.  
  619. g_EWepPlayerData[id][wep_active] = false;
  620.  
  621. g_EWepPlayerData[id][wep_ent] = 0;
  622.  
  623. }
  624.  
  625.  
  626.  
  627. public CWeapon__Deploy(weapon_entity) {
  628.  
  629. if (!is_valid_ent(weapon_entity))
  630.  
  631. return HAM_IGNORED;
  632.  
  633.  
  634.  
  635. static szClassName[33]
  636.  
  637. entity_get_string(weapon_entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  638.  
  639.  
  640.  
  641. new i, id = 0;
  642.  
  643. for (i = 1; i < (MAX_PLAYERS+1); i++) {
  644.  
  645. if (g_EWepPlayerData[i][wep_have] && g_EWepPlayerData[i][wep_ent] == weapon_entity)
  646.  
  647. id = i;
  648.  
  649. }
  650.  
  651.  
  652.  
  653.  
  654.  
  655. if (!is_user_connected(id))
  656.  
  657. return HAM_IGNORED;
  658.  
  659.  
  660.  
  661. if (!g_EWepPlayerData[id][wep_have])
  662.  
  663. return HAM_IGNORED;
  664.  
  665.  
  666.  
  667. if (!equal(szClassName, EWEAPON_BASE_WEAPON)) {
  668.  
  669. g_EWepPlayerData[id][wep_active] = false;
  670.  
  671. return HAM_IGNORED;
  672.  
  673. }
  674.  
  675.  
  676.  
  677. new iClip = get_pdata_int(weapon_entity, m_iClip, CBASEWEAPON_LINUX_XTRA_OFF)
  678.  
  679.  
  680.  
  681. set_pev(id, pev_viewmodel2, EWEAPON_V_MODEL);
  682.  
  683. set_pev(id, pev_weaponmodel2, EWEAPON_P_MODEL);
  684.  
  685.  
  686.  
  687. g_EWepPlayerData[id][wep_active] = true;
  688.  
  689.  
  690.  
  691. if (iClip > 0)
  692.  
  693. send_weapon_animation(id, ANIM_DRAW)
  694.  
  695. else
  696.  
  697. send_weapon_animation(id, ANIM_DRAW_EMPTY)
  698.  
  699.  
  700.  
  701. return HAM_IGNORED;
  702.  
  703. }
  704.  
  705.  
  706.  
  707.  
  708.  
  709. public CWeapon__AttachToPlayer(weapon_entity, id) {
  710.  
  711. if (!is_valid_ent(weapon_entity))
  712.  
  713. return HAM_IGNORED;
  714.  
  715.  
  716.  
  717. if (!is_user_connected(id))
  718.  
  719. return HAM_IGNORED;
  720.  
  721.  
  722.  
  723. if (!g_EWepPlayerData[id][wep_have])
  724.  
  725. return HAM_IGNORED;
  726.  
  727.  
  728.  
  729. if(get_pdata_int(weapon_entity, m_fKnown, CBASEWEAPON_LINUX_XTRA_OFF)) {
  730.  
  731. return HAM_IGNORED;
  732.  
  733. }
  734.  
  735.  
  736.  
  737. set_pdata_int(weapon_entity, m_iClip, EWEAPON_CLIPSIZE, CBASEWEAPON_LINUX_XTRA_OFF)
  738.  
  739.  
  740.  
  741. return HAM_IGNORED;
  742.  
  743. }
  744.  
  745.  
  746.  
  747. public CWeapon__AddToPlayer(weapon_entity, id) {
  748.  
  749. if (!is_valid_ent(weapon_entity))
  750.  
  751. return HAM_IGNORED;
  752.  
  753.  
  754.  
  755. if (!is_user_connected(id))
  756.  
  757. return HAM_IGNORED;
  758.  
  759.  
  760.  
  761. if(entity_get_int(weapon_entity, EV_INT_WEAPONKEY) == EWEAPON_WEAPONKEY && g_EWepPlayerData[id][wep_have] == false) {
  762.  
  763.  
  764.  
  765. entity_set_int(weapon_entity, EV_INT_WEAPONKEY, 0)
  766.  
  767.  
  768.  
  769. //restore ammo
  770.  
  771. new bpammos = entity_get_int(weapon_entity, EV_INT_weapons);
  772.  
  773. cs_set_user_bpammo(id, g_EWeaponId, bpammos);
  774.  
  775.  
  776.  
  777. g_EWepPlayerData[id][wep_have] = true;
  778.  
  779. g_EWepPlayerData[id][wep_ent] = weapon_entity;
  780.  
  781. return HAM_HANDLED;
  782.  
  783. }
  784.  
  785.  
  786.  
  787. if (g_EWepPlayerData[id][wep_have] == true) {
  788.  
  789. g_EWepPlayerData[id][wep_ent] = weapon_entity;
  790.  
  791. }
  792.  
  793.  
  794.  
  795. return HAM_IGNORED;
  796.  
  797. }
  798.  
  799.  
  800.  
  801. public CWeapon__ItemPostFrame(weapon_entity) {
  802.  
  803. new id = pev(weapon_entity, pev_owner)
  804.  
  805. if (!is_user_connected(id))
  806.  
  807. return FMRES_IGNORED;
  808.  
  809.  
  810.  
  811. if (!g_EWepPlayerData[id][wep_have])
  812.  
  813. return FMRES_IGNORED;
  814.  
  815.  
  816.  
  817. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack)
  818.  
  819.  
  820.  
  821. new iBpAmmo = cs_get_user_bpammo(id, g_EWeaponId);
  822.  
  823. new iClip = get_pdata_int(weapon_entity, m_iClip)
  824.  
  825.  
  826.  
  827. new fInReload = get_pdata_int(weapon_entity, m_fInReload, CBASEWEAPON_LINUX_XTRA_OFF)
  828.  
  829.  
  830.  
  831. if (fInReload && flNextAttack <= 0.0) {
  832.  
  833. new j = min(EWEAPON_CLIPSIZE - iClip, iBpAmmo)
  834.  
  835.  
  836.  
  837. set_pdata_int(weapon_entity, m_iClip, iClip + j, CBASEWEAPON_LINUX_XTRA_OFF)
  838.  
  839. cs_set_user_bpammo(id, g_EWeaponId, iBpAmmo-j);
  840.  
  841.  
  842.  
  843. set_pdata_int(weapon_entity, m_fInReload, 0, CBASEWEAPON_LINUX_XTRA_OFF)
  844.  
  845. fInReload = 0
  846.  
  847. }
  848.  
  849.  
  850.  
  851. return FMRES_IGNORED;
  852.  
  853. }
  854.  
  855.  
  856.  
  857. public CWeapon__Reload(weapon_entity) {
  858.  
  859. new id = pev(weapon_entity, pev_owner)
  860.  
  861. if (!is_user_connected(id))
  862.  
  863. return FMRES_IGNORED;
  864.  
  865.  
  866.  
  867. if (!g_EWepPlayerData[id][wep_have])
  868.  
  869. return FMRES_IGNORED;
  870.  
  871.  
  872.  
  873. g_EWepPlayerData[id][wep_TmpClip] = -1;
  874.  
  875.  
  876.  
  877. new iBpAmmo = cs_get_user_bpammo(id, g_EWeaponId);
  878.  
  879. new iClip = get_pdata_int(weapon_entity, m_iClip, CBASEWEAPON_LINUX_XTRA_OFF)
  880.  
  881.  
  882.  
  883. if (iBpAmmo <= 0)
  884.  
  885. return FMRES_SUPERCEDE;
  886.  
  887.  
  888.  
  889. if (iClip >= EWEAPON_CLIPSIZE)
  890.  
  891. return FMRES_SUPERCEDE;
  892.  
  893.  
  894.  
  895.  
  896.  
  897. g_EWepPlayerData[id][wep_TmpClip] = iClip;
  898.  
  899.  
  900.  
  901. set_pdata_int(weapon_entity, m_iClip, 0, CBASEWEAPON_LINUX_XTRA_OFF)
  902.  
  903.  
  904.  
  905. return FMRES_IGNORED;
  906.  
  907. }
  908.  
  909.  
  910.  
  911. public CWeapon__Reload_Post(weapon_entity) {
  912.  
  913. new id = pev(weapon_entity, pev_owner)
  914.  
  915. if (!is_user_connected(id))
  916.  
  917. return FMRES_IGNORED;
  918.  
  919.  
  920.  
  921. if (!g_EWepPlayerData[id][wep_have])
  922.  
  923. return FMRES_IGNORED;
  924.  
  925.  
  926.  
  927. if (g_EWepPlayerData[id][wep_TmpClip] == -1)
  928.  
  929. return FMRES_IGNORED;
  930.  
  931.  
  932.  
  933. set_pdata_int(weapon_entity, m_iClip, g_EWepPlayerData[id][wep_TmpClip], CBASEWEAPON_LINUX_XTRA_OFF)
  934.  
  935.  
  936.  
  937. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, EWEAPON_RELOAD_TIME, CBASEWEAPON_LINUX_XTRA_OFF)
  938.  
  939.  
  940.  
  941. set_pdata_float(id, m_flNextAttack, EWEAPON_RELOAD_TIME)
  942.  
  943.  
  944.  
  945. set_pdata_int(weapon_entity, m_fInReload, 1)
  946.  
  947.  
  948.  
  949. send_weapon_animation( id, ANIM_RELOAD )
  950.  
  951.  
  952.  
  953. g_EWepPlayerData[id][wep_TmpClip] = -1;
  954.  
  955.  
  956.  
  957. return FMRES_IGNORED;
  958.  
  959. }
  960.  
  961.  
  962.  
  963. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle) {
  964.  
  965. if(!is_user_alive(Player))
  966.  
  967. return FMRES_IGNORED;
  968.  
  969.  
  970.  
  971. if(!g_EWepPlayerData[Player][wep_active])
  972.  
  973. return FMRES_IGNORED;
  974.  
  975.  
  976.  
  977. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  978.  
  979. return FMRES_HANDLED
  980.  
  981. }
  982.  
  983.  
  984.  
  985. public event_curweapon(id) {
  986.  
  987. if(!is_user_alive(id))
  988.  
  989. return PLUGIN_CONTINUE;
  990.  
  991.  
  992.  
  993. if(read_data(2) == g_EWeaponId && g_EWepPlayerData[id][wep_have] == true) {
  994.  
  995. } else {
  996.  
  997. g_EWepPlayerData[id][wep_active] = false;
  998.  
  999. }
  1000.  
  1001. return PLUGIN_HANDLED;
  1002.  
  1003. }
  1004.  
  1005.  
  1006.  
  1007. public client_connect(id) {
  1008.  
  1009. g_EWepPlayerData[id][wep_active] = false;
  1010.  
  1011. g_EWepPlayerData[id][wep_have] = false;
  1012.  
  1013. }
  1014.  
  1015.  
  1016.  
  1017. public client_disconnect(id) {
  1018.  
  1019. if (g_EWepPlayerData[id][wep_have] == true) {
  1020.  
  1021. CWeapon__RemoveFromPlayer(id)
  1022.  
  1023. }
  1024.  
  1025. }
  1026.  
  1027.  
  1028.  
  1029. public message_DeathMsg(msg_id, msg_dest, id) {
  1030.  
  1031. static szTruncatedWeapon[33], iAttacker;
  1032.  
  1033.  
  1034.  
  1035. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon));
  1036.  
  1037.  
  1038.  
  1039. iAttacker = get_msg_arg_int(1);
  1040.  
  1041.  
  1042.  
  1043. if(is_user_connected(iAttacker) && g_EWepPlayerData[iAttacker][wep_have] == true && equal(szTruncatedWeapon, EWEAPON_BASE_WEAPON)) {
  1044.  
  1045. set_msg_arg_string(4, EWEAPON_LOGNAME);
  1046.  
  1047. }
  1048.  
  1049.  
  1050.  
  1051. return PLUGIN_CONTINUE;
  1052.  
  1053. }
  1054.  
  1055.  
  1056.  
  1057. #if defined FIRE_WATERSPRAY
  1058.  
  1059. stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3]) {
  1060.  
  1061. static iVec1[3];
  1062.  
  1063. FVecIVec(fVec1, iVec1);
  1064.  
  1065.  
  1066.  
  1067. static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3];
  1068.  
  1069. pev(id, pev_v_angle, angles);
  1070.  
  1071. engfunc(EngFunc_MakeVectors, angles);
  1072.  
  1073. global_get(glb_v_forward, v_forward);
  1074.  
  1075. global_get(glb_v_right, v_right);
  1076.  
  1077. global_get(glb_v_up, v_up);
  1078.  
  1079.  
  1080.  
  1081. //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs
  1082.  
  1083. pev(id, pev_origin, player_origin);
  1084.  
  1085. pev(id, pev_view_ofs, player_view_offset);
  1086.  
  1087. xs_vec_add(player_origin, player_view_offset, gun_position);
  1088.  
  1089.  
  1090.  
  1091. xs_vec_mul_scalar(v_forward, 24.0, v_forward);
  1092.  
  1093. xs_vec_mul_scalar(v_right, 3.0, v_right);
  1094.  
  1095.  
  1096.  
  1097. if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING)
  1098.  
  1099. xs_vec_mul_scalar(v_up, 6.0, v_up);
  1100.  
  1101. else
  1102.  
  1103. xs_vec_mul_scalar(v_up, -2.0, v_up);
  1104.  
  1105.  
  1106.  
  1107. xs_vec_add(gun_position, v_forward, origin);
  1108.  
  1109. xs_vec_add(origin, v_right, origin);
  1110.  
  1111. xs_vec_add(origin, v_up, origin);
  1112.  
  1113.  
  1114.  
  1115. vSrc[0] = origin[0];
  1116.  
  1117. vSrc[1] = origin[1];
  1118.  
  1119. vSrc[2] = origin[2];
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125. new Float:dist = get_distance_f(vSrc, fVec2);
  1126.  
  1127. new CountDrops = floatround(dist / 50.0);
  1128.  
  1129.  
  1130.  
  1131. if (CountDrops > 20)
  1132.  
  1133. CountDrops = 20;
  1134.  
  1135.  
  1136.  
  1137. if (CountDrops < 2)
  1138.  
  1139. CountDrops = 2;
  1140.  
  1141.  
  1142.  
  1143. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1);
  1144.  
  1145. write_byte(TE_SPRITETRAIL);
  1146.  
  1147. engfunc(EngFunc_WriteCoord, vSrc[0]);
  1148.  
  1149. engfunc(EngFunc_WriteCoord, vSrc[1]);
  1150.  
  1151. engfunc(EngFunc_WriteCoord, vSrc[2]);
  1152.  
  1153. engfunc(EngFunc_WriteCoord, fVec2[0]);
  1154.  
  1155. engfunc(EngFunc_WriteCoord, fVec2[1]);
  1156.  
  1157. engfunc(EngFunc_WriteCoord, fVec2[2]);
  1158.  
  1159. write_short(tracer_sprite2);
  1160.  
  1161. write_byte(CountDrops); //count
  1162.  
  1163. write_byte(0); //life
  1164.  
  1165. write_byte(1); //scale
  1166.  
  1167. write_byte(60); //velocity
  1168.  
  1169. write_byte(10); //rand_velocity
  1170.  
  1171. message_end();
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1);
  1178.  
  1179. write_byte(TE_BEAMPOINTS);
  1180.  
  1181. engfunc(EngFunc_WriteCoord, fVec2[0]);
  1182.  
  1183. engfunc(EngFunc_WriteCoord, fVec2[1]);
  1184.  
  1185. engfunc(EngFunc_WriteCoord, fVec2[2]);
  1186.  
  1187. engfunc(EngFunc_WriteCoord, vSrc[0]);
  1188.  
  1189. engfunc(EngFunc_WriteCoord, vSrc[1]);
  1190.  
  1191. engfunc(EngFunc_WriteCoord, vSrc[2]);
  1192.  
  1193. write_short(tracer_sprite);
  1194.  
  1195. write_byte(6); //starting_frame
  1196.  
  1197. write_byte(200); //framerate
  1198.  
  1199. write_byte(1); //life
  1200.  
  1201. write_byte(100); //line width
  1202.  
  1203. write_byte(0); //noise ampl
  1204.  
  1205. write_byte(64); write_byte(64); write_byte(192); //color
  1206.  
  1207. write_byte(192); //brightness
  1208.  
  1209. write_byte(250); //scroll speed
  1210.  
  1211. message_end();
  1212.  
  1213. }
  1214.  
  1215. #endif //FIRE_WATERSPRAY
  1216.  
  1217.  
  1218.  
  1219. stock send_weapon_animation(id, iAnim) {
  1220.  
  1221. set_pev(id, pev_weaponanim, iAnim);
  1222.  
  1223. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);
  1224.  
  1225. write_byte(iAnim);
  1226.  
  1227. write_byte(pev(id,pev_body));
  1228.  
  1229. message_end();
  1230.  
  1231. }
  1232.  
  1233.  
  1234.  
  1235. stock create_shot(Float:fOrigin[3], entity = 0) {
  1236.  
  1237. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  1238.  
  1239. write_byte(TE_GUNSHOTDECAL);
  1240.  
  1241. engfunc(EngFunc_WriteCoord, fOrigin[0]);
  1242.  
  1243. engfunc(EngFunc_WriteCoord, fOrigin[1]);
  1244.  
  1245. engfunc(EngFunc_WriteCoord, fOrigin[2]);
  1246.  
  1247. if(!pev_valid(entity)) {
  1248.  
  1249. write_short(0);
  1250.  
  1251. } else {
  1252.  
  1253. write_short(entity);
  1254.  
  1255. }
  1256.  
  1257. write_byte(DecalsShot[random_num(0,4)]);
  1258.  
  1259. message_end();
  1260.  
  1261. }
  1262.  
  1263.  
  1264.  
  1265. stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) {
  1266.  
  1267. new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt);
  1268.  
  1269. if (bloodColor == -1)
  1270.  
  1271. return;
  1272.  
  1273.  
  1274.  
  1275. new amount = floatround(Damage);
  1276.  
  1277.  
  1278.  
  1279. amount *= 2; //according to HLSDK
  1280.  
  1281.  
  1282.  
  1283. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  1284.  
  1285. write_byte(TE_BLOODSPRITE);
  1286.  
  1287. write_coord(floatround(vTraceEnd[0]));
  1288.  
  1289. write_coord(floatround(vTraceEnd[1]));
  1290.  
  1291. write_coord(floatround(vTraceEnd[2]));
  1292.  
  1293. write_short(g_BloodSprite[1]);
  1294.  
  1295. write_short(g_BloodSprite[0]);
  1296.  
  1297. write_byte(bloodColor);
  1298.  
  1299. write_byte(min(max(3, amount/10), 16));
  1300.  
  1301. message_end();
  1302.  
  1303. }
  1304.  
  1305.  
  1306.  
  1307. public zp_extra_item_selected(id, itemid) {
  1308.  
  1309. if(itemid == g_itemid_guitar) {
  1310.  
  1311. if (user_has_weapon(id, g_EWeaponId))
  1312.  
  1313. engclient_cmd(id, "drop", EWEAPON_BASE_WEAPON);
  1314.  
  1315.  
  1316.  
  1317. g_EWepPlayerData[id][wep_have] = true;
  1318.  
  1319. give_item(id, EWEAPON_BASE_WEAPON);
  1320.  
  1321.  
  1322.  
  1323. cs_set_user_bpammo (id, g_EWeaponId, EWEAPON_START_AMMO);
  1324.  
  1325. }
  1326.  
  1327. }
  1328.  
  1329.  
  1330.  
  1331. public zp_user_infected_post(id) {
  1332.  
  1333. if (g_EWepPlayerData[id][wep_have] == true) {
  1334.  
  1335. CWeapon__RemoveFromPlayer(id)
  1336.  
  1337. }
  1338.  
  1339. }
  1340.  
  1341.  
  1342.  
  1343. public zp_user_humanized_post(id, survivor) {
  1344.  
  1345. if (survivor && g_EWepPlayerData[id][wep_have] == true) {
  1346.  
  1347. CWeapon__RemoveFromPlayer(id)
  1348.  
  1349. }
  1350.  
  1351. }
  1352.  
  1353.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 16:26 
Offline
Senior Tag
Avatar

Csatlakozott:2012.08.28. 20:09
Hozzászólások:207
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 10 alkalommal
Bocs. Roszat küldtem xd
Ez a jó:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fun>
  5. #include <hamsandwich>
  6. #include <xs>
  7. #include <cstrike>
  8.  
  9. #define ENG_NULLENT -1
  10. #define EV_INT_WEAPONKEY EV_INT_impulse
  11. #define watergun_WEAPONKEY 893
  12. #define MAX_PLAYERS 32
  13. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  14.  
  15. #define JOG ADMIN_KICK
  16.  
  17. const USE_STOPPED = 0
  18. const OFFSET_ACTIVE_ITEM = 373
  19. const OFFSET_WEAPONOWNER = 41
  20. const OFFSET_LINUX = 5
  21. const OFFSET_LINUX_WEAPONS = 4
  22.  
  23. #define WEAP_LINUX_XTRA_OFF 4
  24. #define m_fKnown 44
  25. #define m_flNextPrimaryAttack 46
  26. #define m_flTimeWeaponIdle 48
  27. #define m_iClip 51
  28. #define m_fInReload 54
  29. #define PLAYER_LINUX_XTRA_OFF 5
  30. #define m_flNextAttack 83
  31.  
  32. #define watergun_RELOAD_TIME 3.5
  33. #define watergun_RELOAD 1
  34. #define watergun_DRAW 2
  35. #define watergun_SHOOT1 3
  36. #define watergun_SHOOT2 4
  37.  
  38. #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
  39.  
  40. new const Fire_Sounds[][] = { "weapons/waterp.wav" }
  41.  
  42. new watergun_V_MODEL[64] = "models/v_waterpistol.mdl"
  43. new watergun_P_MODEL[64] = "models/p_waterpistol.mdl"
  44. new watergun_W_MODEL[64] = "models/w_waterpistol.mdl"
  45.  
  46. //new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  47.  
  48. new cvar_dmg_watergun, cvar_recoil_watergun, cvar_clip_watergun, cvar_spd_watergun, cvar_watergun_ammo
  49. new g_MaxPlayers, g_orig_event_watergun, g_IsInPrimaryAttack
  50. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  51. new g_has_watergun[33], g_clip_ammo[33], g_watergun_TmpClip[33], oldweap[33]
  52. new watergun_sprite
  53.  
  54. const PRIMARY_WEAPONS_BIT_SUM =
  55. (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
  56. CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
  57. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  58. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
  59. "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  60. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  61. "weapon_ak47", "weapon_knife", "weapon_p90" }
  62.  
  63. public plugin_init()
  64. {
  65. register_plugin("Water Gun", "1.0", "LARS-DAY[BR]EAKER")
  66. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  67. register_event("CurWeapon","CurrentWeapon","be","1=1")
  68. RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_watergun_AddToPlayer")
  69. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  70. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  71. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  72. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  73. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  74. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  75. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack")
  76. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack_Post", 1)
  77. RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "watergun_ItemPostFrame")
  78. RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload")
  79. RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload_Post", 1)
  80. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  81. register_forward(FM_SetModel, "fw_SetModel")
  82. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  83. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  84.  
  85. //RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
  86. //RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
  87. //RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
  88. //RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
  89. //RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
  90. //RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
  91. //RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)
  92.  
  93. cvar_dmg_watergun = register_cvar("watergun_dmg", "1.20")
  94. cvar_recoil_watergun = register_cvar("watergun_recoil", "1.01")
  95. cvar_clip_watergun = register_cvar("watergun_clip", "999")
  96. cvar_spd_watergun = register_cvar("watergun_spd", "1.02")
  97. cvar_watergun_ammo = register_cvar("watergun_ammo", "999")
  98.  
  99. g_MaxPlayers = get_maxplayers()
  100.  
  101. register_clcmd("say /vp", "GiveWaterGun")
  102. register_clcmd("say_team /vp", "GiveWaterGun")
  103. }
  104.  
  105. public plugin_precache()
  106. {
  107. precache_model(watergun_V_MODEL)
  108. precache_model(watergun_P_MODEL)
  109. precache_model(watergun_W_MODEL)
  110. for(new i = 0; i < sizeof Fire_Sounds; i++)
  111. precache_sound(Fire_Sounds[i])
  112. precache_sound("weapons/water_clipin.wav")
  113. precache_sound("weapons/water_clipout.wav")
  114. precache_sound("weapons/water_pump.wav")
  115. precache_sound("weapons/water_draw.wav")
  116. m_iBlood[0] = precache_model("sprites/blood.spr")
  117. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  118. watergun_sprite = precache_model("sprites/watergun.spr")
  119.  
  120. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  121. }
  122.  
  123. public fwPrecacheEvent_Post(type, const name[])
  124. {
  125. if (equal("events/mp5n.sc", name))
  126. {
  127. g_orig_event_watergun = get_orig_retval()
  128. return FMRES_HANDLED
  129. }
  130. return FMRES_IGNORED
  131. }
  132.  
  133. public client_connect(id)
  134. {
  135. g_has_watergun[id] = false
  136. }
  137.  
  138. public client_disconnect(id)
  139. {
  140. g_has_watergun[id] = false
  141. }
  142.  
  143. public fw_SetModel(entity, model[])
  144. {
  145. if(!is_valid_ent(entity))
  146. return FMRES_IGNORED
  147.  
  148. static szClassName[33]
  149. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  150.  
  151. if(!equal(szClassName, "weaponbox"))
  152. return FMRES_IGNORED
  153.  
  154. static iOwner
  155.  
  156. iOwner = entity_get_edict(entity, EV_ENT_owner)
  157.  
  158. if(equal(model, "models/w_mp5.mdl"))
  159. {
  160. static iStoredAugID
  161.  
  162. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
  163.  
  164. if(!is_valid_ent(iStoredAugID))
  165. return FMRES_IGNORED
  166.  
  167. if(g_has_watergun[iOwner])
  168. {
  169. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, watergun_WEAPONKEY)
  170.  
  171. g_has_watergun[iOwner] = false
  172.  
  173. entity_set_model(entity, watergun_W_MODEL)
  174.  
  175. return FMRES_SUPERCEDE
  176. }
  177. }
  178. return FMRES_IGNORED
  179. }
  180.  
  181. public GiveWaterGun(id)
  182. {
  183. if(get_user_flags(id) & JOG)
  184. {
  185. drop_weapons(id, 1)
  186. new iWep2 = give_item(id,"weapon_mp5navy")
  187. if( iWep2 > 0 )
  188. {
  189. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_watergun))
  190. cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_watergun_ammo))
  191. UTIL_PlayWeaponAnimation(id, watergun_DRAW)
  192. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  193. }
  194. g_has_watergun[id] = true
  195. }
  196. else
  197. {
  198. client_print(id, print_chat, "Csak vip-k vehetnek vizipisztolyt!")
  199. }
  200. }
  201.  
  202. public fw_watergun_AddToPlayer(watergun, id)
  203. {
  204. if(!is_valid_ent(watergun) || !is_user_connected(id))
  205. return HAM_IGNORED
  206.  
  207. if(entity_get_int(watergun, EV_INT_WEAPONKEY) == watergun_WEAPONKEY)
  208. {
  209. g_has_watergun[id] = true
  210.  
  211. entity_set_int(watergun, EV_INT_WEAPONKEY, 0)
  212.  
  213. return HAM_HANDLED
  214. }
  215. return HAM_IGNORED
  216. }
  217.  
  218. public fw_UseStationary_Post(entity, caller, activator, use_type)
  219. {
  220. if (use_type == USE_STOPPED && is_user_connected(caller))
  221. replace_weapon_models(caller, get_user_weapon(caller))
  222. }
  223.  
  224. public fw_Item_Deploy_Post(weapon_ent)
  225. {
  226. static owner
  227. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  228.  
  229. static weaponid
  230. weaponid = cs_get_weapon_id(weapon_ent)
  231.  
  232. replace_weapon_models(owner, weaponid)
  233. }
  234.  
  235. public CurrentWeapon(id)
  236. {
  237. replace_weapon_models(id, read_data(2))
  238.  
  239. if(read_data(2) != CSW_MP5NAVY || !g_has_watergun[id])
  240. return
  241.  
  242. static Float:iSpeed
  243. if(g_has_watergun[id])
  244. iSpeed = get_pcvar_float(cvar_spd_watergun)
  245.  
  246. static weapon[32],Ent
  247. get_weaponname(read_data(2),weapon,31)
  248. Ent = find_ent_by_owner(-1,weapon,id)
  249. if(Ent)
  250. {
  251. static Float:Delay
  252. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  253. if (Delay > 0.0)
  254. {
  255. set_pdata_float(Ent, 46, Delay, 4)
  256. }
  257. }
  258. }
  259.  
  260. replace_weapon_models(id, weaponid)
  261. {
  262. switch (weaponid)
  263. {
  264. case CSW_MP5NAVY:
  265. {
  266. if(g_has_watergun[id])
  267. {
  268. set_pev(id, pev_viewmodel2, watergun_V_MODEL)
  269. set_pev(id, pev_weaponmodel2, watergun_P_MODEL)
  270. if(oldweap[id] != CSW_MP5NAVY)
  271. {
  272. UTIL_PlayWeaponAnimation(id, watergun_DRAW)
  273. set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
  274. }
  275. }
  276. }
  277. }
  278. oldweap[id] = weaponid
  279. }
  280.  
  281. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  282. {
  283. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_watergun[Player]))
  284. return FMRES_IGNORED
  285.  
  286. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  287. return FMRES_HANDLED
  288. }
  289.  
  290. public fw_watergun_PrimaryAttack(Weapon)
  291. {
  292. new Player = get_pdata_cbase(Weapon, 41, 4)
  293.  
  294. if (!g_has_watergun[Player])
  295. return
  296.  
  297. g_IsInPrimaryAttack = 1
  298. pev(Player,pev_punchangle,cl_pushangle[Player])
  299.  
  300. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  301. }
  302.  
  303. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  304. {
  305. if ((eventid != g_orig_event_watergun) || !g_IsInPrimaryAttack)
  306. return FMRES_IGNORED
  307. if (!(1 <= invoker <= g_MaxPlayers))
  308. return FMRES_IGNORED
  309.  
  310. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  311. return FMRES_SUPERCEDE
  312. }
  313.  
  314. public fw_watergun_PrimaryAttack_Post(Weapon)
  315. {
  316. g_IsInPrimaryAttack = 0
  317. new Player = get_pdata_cbase(Weapon, 41, 4)
  318.  
  319. new szClip, szAmmo
  320. get_user_weapon(Player, szClip, szAmmo)
  321.  
  322. if(!is_user_alive(Player))
  323. return
  324.  
  325. if(g_has_watergun[Player])
  326. {
  327. if (!g_clip_ammo[Player])
  328. return
  329.  
  330. new Float:push[3]
  331. pev(Player,pev_punchangle,push)
  332. xs_vec_sub(push,cl_pushangle[Player],push)
  333.  
  334. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_watergun),push)
  335. xs_vec_add(push,cl_pushangle[Player],push)
  336. set_pev(Player,pev_punchangle,push)
  337.  
  338. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  339. UTIL_PlayWeaponAnimation(Player, random_num(watergun_SHOOT1, watergun_SHOOT2))
  340.  
  341. static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3]
  342. pev(Player, pev_v_angle, plrViewAngles)
  343.  
  344. static Float:VecSrc[3], Float:VecDst[3]
  345.  
  346. //VecSrc = pev->origin + pev->view_ofs
  347. pev(Player, pev_origin, PlrOrigin)
  348. pev(Player, pev_view_ofs, VecSrc)
  349. xs_vec_add(VecSrc, PlrOrigin, VecSrc)
  350.  
  351. //VecDst = VecDir * 8192.0
  352. angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir);
  353. xs_vec_mul_scalar(VecDir, 8192.0, VecDst);
  354. xs_vec_add(VecDst, VecSrc, VecDst);
  355.  
  356. new hTrace = create_tr2()
  357. engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace)
  358. get_tr2(hTrace, TR_vecEndPos, VecEnd);
  359.  
  360. create_tracer_water(Player, VecSrc, VecEnd)
  361. }
  362. }
  363.  
  364. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  365. {
  366. if (victim != attacker && is_user_connected(attacker))
  367. {
  368. if(get_user_weapon(attacker) == CSW_MP5NAVY)
  369. {
  370. if(g_has_watergun[attacker])
  371. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_watergun))
  372. }
  373. }
  374. }
  375.  
  376. public message_DeathMsg(msg_id, msg_dest, id)
  377. {
  378. static szTruncatedWeapon[33], iAttacker, iVictim
  379.  
  380. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
  381.  
  382. iAttacker = get_msg_arg_int(1)
  383. iVictim = get_msg_arg_int(2)
  384.  
  385. if(!is_user_connected(iAttacker) || iAttacker == iVictim)
  386. return PLUGIN_CONTINUE
  387.  
  388. if(equal(szTruncatedWeapon, "mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
  389. {
  390. if(g_has_watergun[iAttacker])
  391. set_msg_arg_string(4, "mp5navy")
  392. }
  393. return PLUGIN_CONTINUE
  394. }
  395.  
  396. stock fm_cs_get_current_weapon_ent(id)
  397. {
  398. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
  399. }
  400.  
  401. stock fm_cs_get_weapon_ent_owner(ent)
  402. {
  403. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
  404. }
  405.  
  406. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  407. {
  408. set_pev(Player, pev_weaponanim, Sequence)
  409.  
  410. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  411. write_byte(Sequence)
  412. write_byte(pev(Player, pev_body))
  413. message_end()
  414. }
  415.  
  416. public watergun_ItemPostFrame(weapon_entity)
  417. {
  418. new id = pev(weapon_entity, pev_owner)
  419. if (!is_user_connected(id))
  420. return HAM_IGNORED
  421.  
  422. if (!g_has_watergun[id])
  423. return HAM_IGNORED
  424.  
  425. static iClipExtra
  426.  
  427. iClipExtra = get_pcvar_num(cvar_clip_watergun)
  428. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  429.  
  430. new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
  431. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  432.  
  433. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  434.  
  435. if( fInReload && flNextAttack <= 0.0 )
  436. {
  437. new j = min(iClipExtra - iClip, iBpAmmo)
  438.  
  439. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  440. cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j)
  441.  
  442. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  443. fInReload = 0
  444. }
  445. return HAM_IGNORED
  446. }
  447.  
  448. public watergun_Reload(weapon_entity)
  449. {
  450. new id = pev(weapon_entity, pev_owner)
  451. if (!is_user_connected(id))
  452. return HAM_IGNORED
  453.  
  454. if (!g_has_watergun[id])
  455. return HAM_IGNORED
  456.  
  457. static iClipExtra
  458.  
  459. if(g_has_watergun[id])
  460. iClipExtra = get_pcvar_num(cvar_clip_watergun)
  461.  
  462. g_watergun_TmpClip[id] = -1
  463.  
  464. new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY)
  465. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  466.  
  467. if (iBpAmmo <= 0)
  468. return HAM_SUPERCEDE
  469.  
  470. if (iClip >= iClipExtra)
  471. return HAM_SUPERCEDE
  472.  
  473. g_watergun_TmpClip[id] = iClip
  474.  
  475. return HAM_IGNORED
  476. }
  477.  
  478. public watergun_Reload_Post(weapon_entity)
  479. {
  480. new id = pev(weapon_entity, pev_owner)
  481. if (!is_user_connected(id))
  482. return HAM_IGNORED
  483.  
  484. if (!g_has_watergun[id])
  485. return HAM_IGNORED
  486.  
  487. if (g_watergun_TmpClip[id] == -1)
  488. return HAM_IGNORED
  489.  
  490. set_pdata_int(weapon_entity, m_iClip, g_watergun_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  491.  
  492. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, watergun_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  493.  
  494. set_pdata_float(id, m_flNextAttack, watergun_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  495.  
  496. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  497.  
  498. UTIL_PlayWeaponAnimation(id, watergun_RELOAD)
  499.  
  500. return HAM_IGNORED
  501. }
  502.  
  503. stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3])
  504. {
  505. static iVec1[3]
  506. FVecIVec(fVec1, iVec1)
  507.  
  508. static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3]
  509. pev(id, pev_v_angle, angles)
  510. engfunc(EngFunc_MakeVectors, angles)
  511. global_get(glb_v_forward, v_forward)
  512. global_get(glb_v_right, v_right)
  513. global_get(glb_v_up, v_up)
  514.  
  515. //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs
  516. pev(id, pev_origin, player_origin)
  517. pev(id, pev_view_ofs, player_view_offset)
  518. xs_vec_add(player_origin, player_view_offset, gun_position)
  519.  
  520. xs_vec_mul_scalar(v_forward, 24.0, v_forward)
  521. xs_vec_mul_scalar(v_right, 3.0, v_right)
  522.  
  523. if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING)
  524. xs_vec_mul_scalar(v_up, 6.0, v_up)
  525. else
  526. xs_vec_mul_scalar(v_up, -2.0, v_up)
  527.  
  528. xs_vec_add(gun_position, v_forward, origin)
  529. xs_vec_add(origin, v_right, origin)
  530. xs_vec_add(origin, v_up, origin)
  531.  
  532. vSrc[0] = origin[0]
  533. vSrc[1] = origin[1]
  534. vSrc[2] = origin[2]
  535.  
  536. new Float:dist = get_distance_f(vSrc, fVec2)
  537. new CountDrops = floatround(dist / 50.0)
  538.  
  539. if (CountDrops > 20)
  540. CountDrops = 20
  541.  
  542. if (CountDrops < 2)
  543. CountDrops = 2
  544.  
  545. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
  546. write_byte(TE_SPRITETRAIL)
  547. engfunc(EngFunc_WriteCoord, vSrc[0])
  548. engfunc(EngFunc_WriteCoord, vSrc[1])
  549. engfunc(EngFunc_WriteCoord, vSrc[2])
  550. engfunc(EngFunc_WriteCoord, fVec2[0])
  551. engfunc(EngFunc_WriteCoord, fVec2[1])
  552. engfunc(EngFunc_WriteCoord, fVec2[2])
  553. write_short(watergun_sprite)
  554. write_byte(CountDrops)
  555. write_byte(0)
  556. write_byte(1)
  557. write_byte(60)
  558. write_byte(10)
  559. message_end()
  560.  
  561. message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
  562. write_byte(TE_BEAMPOINTS)
  563. engfunc(EngFunc_WriteCoord, fVec2[0])
  564. engfunc(EngFunc_WriteCoord, fVec2[1])
  565. engfunc(EngFunc_WriteCoord, fVec2[2])
  566. engfunc(EngFunc_WriteCoord, vSrc[0])
  567. engfunc(EngFunc_WriteCoord, vSrc[1])
  568. engfunc(EngFunc_WriteCoord, vSrc[2])
  569. write_short(watergun_sprite)
  570. write_byte(6)
  571. write_byte(200)
  572. write_byte(1)
  573. write_byte(100)
  574. write_byte(0)
  575. write_byte(64); write_byte(64); write_byte(192);
  576. write_byte(192)
  577. write_byte(250)
  578. message_end()
  579. }
  580.  
  581. stock drop_weapons(id, dropwhat)
  582. {
  583. static weapons[32], num, i, weaponid
  584. num = 0
  585. get_user_weapons(id, weapons, num)
  586.  
  587. for (i = 0; i < num; i++)
  588. {
  589. weaponid = weapons[i]
  590.  
  591. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  592. {
  593. static wname[32]
  594. get_weaponname(weaponid, wname, sizeof wname - 1)
  595. engclient_cmd(id, "drop", wname)
  596. }
  597. }
  598. }
  599.  
  600. public client_PreThink(id)
  601. {
  602. if(get_user_flags(id) & JOG)
  603. return PLUGIN_HANDLED;
  604.  
  605. if(user_has_weapon(id, CSW_MP5NAVY))
  606. {
  607. if(g_has_watergun[id])
  608. {
  609. client_cmd(id, "drop")
  610. }
  611. }
  612. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 17:06 
Offline
Őskövület
Avatar

Csatlakozott:2011.09.17. 17:54
Hozzászólások:2350
Megköszönt másnak: 40 alkalommal
Megköszönték neki: 57 alkalommal
Ezt nekem kell köszönni :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: adminnak parancsra vizipisztoly!
HozzászólásElküldve:2012.09.19. 17:31 
Offline
Senior Tag
Avatar

Csatlakozott:2012.08.28. 20:09
Hozzászólások:207
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 10 alkalommal
Pontosan. Nekem is te küldted :D


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


Ki van itt

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