hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.16. 13:22



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: 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  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: CSO Thompson FIX! HELP!
HozzászólásElküldve: 2014.03.28. 16:53 
Offline
Újonc

Csatlakozott: 2014.03.28. 16:46
Hozzászólások: 11
Van egy CSO Thopmson pluginom és 2 hiba is van benne amire nem jövök rá, hátha ti tudtok segiteni.

sma:

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <fun>
  6. #include <hamsandwich>
  7. #include <xs>
  8. #include <cstrike>
  9.  
  10. enum
  11. {
  12. anim_idle,
  13. anim_reload,
  14. anim_draw,
  15. anim_shoot1,
  16. anim_shoot2,
  17. anim_shoot3
  18. }
  19.  
  20. #define ENG_NULLENT -1
  21. #define EV_INT_WEAPONKEY EV_INT_impulse
  22. #define tomi_WEAPONKEY 9142
  23. #define MAX_PLAYERS 32
  24. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  25.  
  26. const USE_STOPPED = 0
  27. const OFFSET_ACTIVE_ITEM = 373
  28. const OFFSET_WEAPONOWNER = 41
  29. const OFFSET_LINUX = 5
  30. const OFFSET_LINUX_WEAPONS = 5
  31.  
  32. #define WEAP_LINUX_XTRA_OFF 4
  33. #define m_fKnown 44
  34. #define m_flNextPrimaryAttack 46
  35. #define m_flTimeWeaponIdle 48
  36. #define m_iClip 51
  37. #define m_fInReload 54
  38. #define PLAYER_LINUX_XTRA_OFF 5
  39. #define m_flNextAttack 83
  40. #define tomi_RELOAD_TIME 4.0
  41.  
  42. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_p90",
  43. "weapon_p90", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_p90", "weapon_sg550",
  44. "weapon_p90", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_p90", "weapon_m249",
  45. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_p90",
  46. "weapon_ak47", "weapon_knife", "weapon_p90" }
  47.  
  48. new const Fire_Sounds[][] = { "weapons/thompson-1.wav" }
  49.  
  50. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  51.  
  52. new tomi_V_MODEL[64] = "models/gun_deathmatch/v_thompson.mdl"
  53. new tomi_P_MODEL[64] = "models/gun_deathmatch/p_thompson.mdl"
  54.  
  55. new cvar_dmg_tomi, cvar_recoil_tomi, cvar_clip_tomi, cvar_tomi_ammo , cvar_dmg_tomi2
  56. new g_has_tomi[33]
  57. new g_MaxPlayers, g_orig_event_tomi, g_clip_ammo[33] , g_reload[33]
  58. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  59. new g_tomi_TmpClip[33]
  60. new g_mode[33] , g_mode2[33]
  61. new g_hasZoom[33]
  62. new gmsgWeaponList
  63.  
  64. public plugin_init()
  65. {
  66. register_plugin("Thompson", "1.1", "Gazik")
  67. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  68. register_event("CurWeapon","CurrentWeapon","be","1=1")
  69. RegisterHam(Ham_Item_AddToPlayer, "weapon_p90", "fw_tomi_AddToPlayer")
  70. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  71. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  72. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  73. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  74. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  75. if (WEAPONENTNAMES[i:1w0gvfym][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i:1w0gvfym], "fw_Item_Deploy_Post", 1)
  76. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p90", "fw_tomi_PrimaryAttack")
  77. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p90", "fw_tomi_PrimaryAttack_Post", 1)
  78. RegisterHam(Ham_Item_PostFrame, "weapon_p90", "tomi__ItemPostFrame");
  79. RegisterHam(Ham_Weapon_Reload, "weapon_p90", "tomi__Reload");
  80. RegisterHam(Ham_Weapon_Reload, "weapon_p90", "tomi__Reload_Post", 1);
  81. register_forward(FM_CmdStart, "fw_CmdStart")
  82. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  83. register_forward(FM_SetModel, "fw_SetModel")
  84. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  85. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  86.  
  87. cvar_dmg_tomi = register_cvar("tomi_dmg", "2.0")
  88. cvar_dmg_tomi2 = register_cvar("tomi_dmg_sniper", "3.0")
  89. cvar_recoil_tomi = register_cvar("tomi_recoil", "0.5")
  90. cvar_clip_tomi = register_cvar("tomi_clip", "50")
  91. cvar_tomi_ammo = register_cvar("tomi_ammo", "100")
  92.  
  93. g_MaxPlayers = get_maxplayers()
  94. gmsgWeaponList = get_user_msgid("WeaponList")
  95. }
  96.  
  97. public plugin_precache()
  98. {
  99. precache_model(tomi_V_MODEL)
  100. precache_model(tomi_P_MODEL)
  101. precache_sound(Fire_Sounds[0])
  102. precache_sound("weapons/thompson_clipin.wav")
  103. precache_sound("weapons/thompson_clipout.wav")
  104. precache_sound("weapons/thompson_draw.wav")
  105. precache_generic("sprites/weapon_thompson_gdm.txt")
  106. precache_generic("sprites/gun_deathmatch/weapon_thompson.spr")
  107.  
  108. register_clcmd("weapon_thompson_gdm", "weapon_hook")
  109.  
  110. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  111. }
  112.  
  113. public weapon_hook(id)
  114. {
  115. engclient_cmd(id, "weapon_p90")
  116. return PLUGIN_HANDLED
  117. }
  118.  
  119. public fwPrecacheEvent_Post(type, const name[])
  120. {
  121. if (equal("events/p90.sc", name))
  122. {
  123. g_orig_event_tomi = get_orig_retval()
  124. return FMRES_HANDLED
  125. }
  126.  
  127. return FMRES_IGNORED
  128. }
  129.  
  130. public client_connect(id)
  131. {
  132. g_has_tomi[id] = false
  133. }
  134.  
  135. public client_disconnect(id)
  136. {
  137. g_has_tomi[id] = false
  138. }
  139.  
  140. public nothing(id)
  141. {
  142. g_has_tomi[id] = false
  143. }
  144.  
  145. public fw_SetModel(entity, model[])
  146. {
  147. if(!is_valid_ent(entity))
  148. return FMRES_IGNORED;
  149.  
  150. static szClassName[33]
  151. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  152.  
  153. if(!equal(szClassName, "weaponbox"))
  154. return FMRES_IGNORED;
  155.  
  156. static iOwner
  157.  
  158. iOwner = entity_get_edict(entity, EV_ENT_owner)
  159.  
  160. if(equal(model, "models/w_p90.mdl"))
  161. {
  162. static iStoredSVDID
  163.  
  164. iStoredSVDID = find_ent_by_owner(ENG_NULLENT, "weapon_p90", entity)
  165.  
  166. if(!is_valid_ent(iStoredSVDID))
  167. return FMRES_IGNORED;
  168.  
  169. if(g_has_tomi[iOwner])
  170. {
  171. entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, tomi_WEAPONKEY)
  172. g_has_tomi[iOwner] = false
  173.  
  174. entity_set_model(entity, "")
  175. entity_set_int(entity, EV_INT_body, 22)
  176.  
  177. return FMRES_SUPERCEDE;
  178. }
  179. }
  180.  
  181.  
  182. return FMRES_IGNORED;
  183. }
  184.  
  185. public gdm_thompson(id)
  186. {
  187. new iWep2 = give_item(id,"weapon_p90")
  188. if(iWep2 > 0)
  189. {
  190. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_tomi))
  191. cs_set_user_bpammo (id, CSW_P90, get_pcvar_num(cvar_tomi_ammo))
  192.  
  193. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  194. write_string("weapon_thompson_gdm")
  195. write_byte(7)
  196. write_byte(100)
  197. write_byte(-1)
  198. write_byte(-1)
  199. write_byte(0)
  200. write_byte(8)
  201. write_byte(CSW_P90)
  202. message_end()
  203. }
  204. g_has_tomi[id] = true;
  205. }
  206.  
  207. public fw_tomi_AddToPlayer(tomi, id)
  208. {
  209. if(!is_valid_ent(tomi) || !is_user_connected(id))
  210. return HAM_IGNORED;
  211.  
  212. if(entity_get_int(tomi, EV_INT_WEAPONKEY) == tomi_WEAPONKEY)
  213. {
  214. g_has_tomi[id] = true
  215.  
  216. entity_set_int(tomi, EV_INT_WEAPONKEY, 0)
  217.  
  218. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  219. write_string("weapon_thompson_gdm")
  220. write_byte(7)
  221. write_byte(100)
  222. write_byte(-1)
  223. write_byte(-1)
  224. write_byte(0)
  225. write_byte(8)
  226. write_byte(CSW_P90)
  227. message_end()
  228.  
  229. return HAM_HANDLED;
  230. }
  231. else
  232. {
  233. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  234. write_string("weapon_p90")
  235. write_byte(7)
  236. write_byte(100)
  237. write_byte(-1)
  238. write_byte(-1)
  239. write_byte(0)
  240. write_byte(8)
  241. write_byte(CSW_P90)
  242. message_end()
  243. }
  244.  
  245. return HAM_IGNORED;
  246. }
  247.  
  248. public fw_CmdStart(id, uc_handle, seed)
  249. {
  250. if(id > 0 && id < 33)
  251. {
  252. if(!is_user_alive(id))
  253. return PLUGIN_HANDLED
  254. if(get_user_weapon(id) == CSW_P90 && g_has_tomi[id])
  255. {
  256. if((get_uc(uc_handle, UC_Buttons) & IN_USE) && !(pev(id, pev_oldbuttons) & IN_USE) && g_reload[id] == 0 && g_mode2[id] == 0)
  257. {
  258. if(!g_hasZoom[id])
  259. {
  260. g_hasZoom[id] = true
  261. cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
  262. }else{
  263. g_hasZoom[ id ] = false
  264. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  265. }
  266. if (!g_mode[id])
  267. {
  268. g_hasZoom[id] = false
  269. cs_set_user_zoom(id, CS_RESET_ZOOM, 0)
  270. }
  271. }
  272.  
  273. if (g_hasZoom[ id ] && (pev(id, pev_button) & IN_RELOAD))
  274. {
  275. g_hasZoom[ id ] = false
  276. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  277. }
  278.  
  279. if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2) && !g_mode2[id] && !g_reload[id])
  280. {
  281. g_hasZoom[ id ] = false
  282. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  283. if(g_mode[id] == 0) make_mode2(id)
  284. if(g_mode[id] == 2) make_mode1(id)
  285. }
  286. }
  287. return HAM_SUPERCEDE;
  288. }
  289. return PLUGIN_HANDLED
  290. }
  291.  
  292. public make_mode2(id)
  293. {
  294. set_task(0.000001,"mode_new2",id)
  295. g_mode2[id] = 1
  296. UTIL_PlayWeaponAnimation(id, 6)
  297. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  298. }
  299.  
  300. public make_mode1(id)
  301. {
  302. set_task(0.000001,"mode_new1",id)
  303. g_mode2[id] = 1
  304. UTIL_PlayWeaponAnimation(id, 6)
  305. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  306. }
  307.  
  308. public mode_new2(id)
  309. {
  310. if(g_mode2[id] == 1 && is_user_alive(id))
  311. {
  312. g_mode2[id] = 0
  313. g_mode[id] = 2
  314. }
  315. }
  316.  
  317. public mode_new1(id)
  318. {
  319. if(g_mode2[id] == 1 && is_user_alive(id))
  320. {
  321. g_mode2[id] = 0
  322. g_mode[id] = 0
  323. }
  324. }
  325.  
  326. public fw_UseStationary_Post(entity, caller, activator, use_type)
  327. {
  328. if (use_type == USE_STOPPED && is_user_connected(caller))
  329. replace_weapon_models(caller, get_user_weapon(caller))
  330. }
  331.  
  332. public fw_Item_Deploy_Post(weapon_ent)
  333. {
  334. static owner
  335. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  336.  
  337. static weaponid
  338. weaponid = cs_get_weapon_id(weapon_ent)
  339.  
  340. replace_weapon_models(owner, weaponid)
  341. }
  342.  
  343. public CurrentWeapon(id)
  344. {
  345. replace_weapon_models(id, read_data(2))
  346. remove_task(id)
  347. g_reload[id] = 0
  348. g_mode2[id] = 0
  349. }
  350.  
  351. replace_weapon_models(id, weaponid)
  352. {
  353. switch (weaponid)
  354. {
  355. case CSW_P90:
  356. {
  357. if(g_has_tomi[id])
  358. {
  359. if(g_mode[id] == 0) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
  360. if(g_mode[id] == 2) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
  361. set_pev(id, pev_weaponmodel2, tomi_P_MODEL)
  362. }
  363. }
  364. }
  365. }
  366.  
  367. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  368. {
  369. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_P90) || !g_has_tomi[Player])
  370. return FMRES_IGNORED
  371.  
  372. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.00001)
  373. return FMRES_HANDLED
  374. }
  375.  
  376. public fw_tomi_PrimaryAttack(Weapon)
  377. {
  378. new Player = get_pdata_cbase(Weapon, 41, 4)
  379.  
  380. if (!g_has_tomi[Player])
  381. return;
  382.  
  383. pev(Player,pev_punchangle,cl_pushangle[Player])
  384.  
  385. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  386. }
  387.  
  388. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  389. {
  390. if ((eventid != g_orig_event_tomi))
  391. return FMRES_IGNORED
  392. if (!(1 <= invoker <= g_MaxPlayers))
  393. return FMRES_IGNORED
  394.  
  395. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  396. return FMRES_SUPERCEDE
  397. }
  398.  
  399. public fw_tomi_PrimaryAttack_Post(Weapon)
  400. {
  401. new Player = get_pdata_cbase(Weapon, 41, 4)
  402.  
  403. new szClip, szAmmo
  404. get_user_weapon(Player, szClip, szAmmo)
  405. if(Player > 0 && Player < 33)
  406. {
  407. if(!g_has_tomi[Player])
  408. {
  409. if(szClip > 0) emit_sound(Player, CHAN_WEAPON, "weapons/p90-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  410. }
  411. if(g_has_tomi[Player])
  412. {
  413. new Float:push[3]
  414. pev(Player,pev_punchangle,push)
  415. xs_vec_sub(push,cl_pushangle[Player],push)
  416.  
  417. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_tomi),push)
  418. xs_vec_add(push,cl_pushangle[Player],push)
  419. set_pev(Player,pev_punchangle,push)
  420.  
  421. if (!g_clip_ammo[Player])
  422. return
  423.  
  424. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  425. UTIL_PlayWeaponAnimation(Player, 3)
  426.  
  427. make_blood_and_bulletholes(Player)
  428. if(g_mode[Player] == 2) set_pdata_float(Player, m_flNextAttack, 0.3, PLAYER_LINUX_XTRA_OFF)
  429. }
  430. }
  431. }
  432.  
  433. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  434. {
  435. if (victim != attacker && is_user_connected(attacker))
  436. {
  437. if(get_user_weapon(attacker) == CSW_P90)
  438. {
  439. if(g_has_tomi[attacker])
  440. {
  441. if(g_mode[attacker] == 2) SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_tomi2))
  442. if(g_mode[attacker] == 0) SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_tomi))
  443. }
  444. }
  445. }
  446. }
  447.  
  448. public message_DeathMsg(msg_id, msg_dest, id)
  449. {
  450. static szTruncatedWeapon[33], iAttacker, iVictim
  451.  
  452. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
  453.  
  454. iAttacker = get_msg_arg_int(1)
  455. iVictim = get_msg_arg_int(2)
  456.  
  457. if(!is_user_connected(iAttacker) || iAttacker == iVictim)
  458. return PLUGIN_CONTINUE
  459.  
  460. if(equal(szTruncatedWeapon, "p90") && get_user_weapon(iAttacker) == CSW_P90)
  461. {
  462. if(g_has_tomi[iAttacker])
  463. set_msg_arg_string(4, "thompson")
  464. }
  465.  
  466. return PLUGIN_CONTINUE
  467. }
  468.  
  469. stock fm_cs_get_current_weapon_ent(id)
  470. {
  471. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
  472. }
  473.  
  474. stock fm_cs_get_weapon_ent_owner(ent)
  475. {
  476. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
  477. }
  478.  
  479. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  480. {
  481. set_pev(Player, pev_weaponanim, Sequence)
  482.  
  483. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  484. write_byte(Sequence)
  485. write_byte(pev(Player, pev_body))
  486. message_end()
  487. }
  488.  
  489. stock make_blood_and_bulletholes(id)
  490. {
  491. new aimOrigin[3], target, body
  492. get_user_origin(id, aimOrigin, 3)
  493. get_user_aiming(id, target, body)
  494.  
  495. if(target > 0 && target <= g_MaxPlayers)
  496. {
  497. new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
  498. pev(id, pev_origin, fStart)
  499.  
  500. velocity_by_aim(id, 64, fVel)
  501.  
  502. fStart[0] = float(aimOrigin[0])
  503. fStart[1] = float(aimOrigin[1])
  504. fStart[2] = float(aimOrigin[2])
  505. fEnd[0] = fStart[0]+fVel[0]
  506. fEnd[1] = fStart[1]+fVel[1]
  507. fEnd[2] = fStart[2]+fVel[2]
  508.  
  509. new res
  510. engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
  511. get_tr2(res, TR_vecEndPos, fRes)
  512.  
  513. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  514. write_byte(TE_BLOODSPRITE)
  515. write_coord(floatround(fStart[0]))
  516. write_coord(floatround(fStart[1]))
  517. write_coord(floatround(fStart[2]))
  518. write_short( m_iBlood [ 1 ])
  519. write_short( m_iBlood [ 0 ] )
  520. write_byte(70)
  521. write_byte(random_num(1,2))
  522. message_end()
  523.  
  524.  
  525. }
  526. else if(!is_user_connected(target))
  527. {
  528. if(target)
  529. {
  530. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  531. write_byte(TE_DECAL)
  532. write_coord(aimOrigin[0])
  533. write_coord(aimOrigin[1])
  534. write_coord(aimOrigin[2])
  535. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  536. write_short(target)
  537. message_end()
  538. }
  539. else
  540. {
  541. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  542. write_byte(TE_WORLDDECAL)
  543. write_coord(aimOrigin[0])
  544. write_coord(aimOrigin[1])
  545. write_coord(aimOrigin[2])
  546. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  547. message_end()
  548. }
  549.  
  550. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  551. write_byte(TE_GUNSHOTDECAL)
  552. write_coord(aimOrigin[0])
  553. write_coord(aimOrigin[1])
  554. write_coord(aimOrigin[2])
  555. write_short(id)
  556. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  557. message_end()
  558. }
  559. }
  560.  
  561. public tomi__ItemPostFrame(weapon_entity) {
  562. new id = pev(weapon_entity, pev_owner)
  563. if (!is_user_connected(id))
  564. return HAM_IGNORED;
  565.  
  566. if (!g_has_tomi[id])
  567. return HAM_IGNORED;
  568.  
  569. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  570.  
  571. new iBpAmmo = cs_get_user_bpammo(id, CSW_P90);
  572. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  573.  
  574. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  575.  
  576. if( fInReload && flNextAttack <= 0.0 )
  577. {
  578. new j = min(get_pcvar_num(cvar_clip_tomi) - iClip, iBpAmmo)
  579.  
  580. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  581. cs_set_user_bpammo(id, CSW_P90, iBpAmmo-j);
  582.  
  583. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  584. fInReload = 0
  585. g_reload[id] = 0
  586. }
  587.  
  588. return HAM_IGNORED;
  589. }
  590.  
  591. public tomi__Reload(weapon_entity) {
  592. new id = pev(weapon_entity, pev_owner)
  593. if (!is_user_connected(id))
  594. return HAM_IGNORED;
  595.  
  596. if (!g_has_tomi[id])
  597. return HAM_IGNORED;
  598.  
  599. g_tomi_TmpClip[id] = -1;
  600.  
  601. new iBpAmmo = cs_get_user_bpammo(id, CSW_P90);
  602. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  603.  
  604. if (iBpAmmo <= 0)
  605. return HAM_SUPERCEDE;
  606.  
  607. if (iClip >= get_pcvar_num(cvar_clip_tomi))
  608. return HAM_SUPERCEDE;
  609.  
  610.  
  611. g_tomi_TmpClip[id] = iClip;
  612.  
  613. g_reload[id] = 1
  614.  
  615. return HAM_IGNORED;
  616. }
  617.  
  618. public tomi__Reload_Post(weapon_entity) {
  619. new id = pev(weapon_entity, pev_owner)
  620. if (!is_user_connected(id))
  621. return HAM_IGNORED;
  622.  
  623. if (!g_has_tomi[id])
  624. return HAM_IGNORED;
  625.  
  626. if (g_tomi_TmpClip[id] == -1)
  627. return HAM_IGNORED;
  628.  
  629. set_pdata_int(weapon_entity, m_iClip, g_tomi_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  630.  
  631. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, tomi_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  632.  
  633. set_pdata_float(id, m_flNextAttack, tomi_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  634.  
  635. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  636.  
  637. // relaod animation
  638. UTIL_PlayWeaponAnimation(id, 1)
  639.  
  640. return HAM_IGNORED;
  641. }
  642.  


[i]debugban található hiba:

Kód:
L 03/28/2014 - 08:46:47: [AMXX] Run time error 4: index out of bounds 
L 03/28/2014 - 08:46:47: [AMXX]    [0] gdm_thompson.sma::replace_weapon_models (line 356)
L 03/28/2014 - 08:46:47: [AMXX]    [1] gdm_thompson.sma::fw_Item_Deploy_Post (line 339)


[kozep]Valaki tudná nekem ezt fixelni. Nagyon köszönöm.[/kozep]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: CSO Thompson FIX! HELP!
HozzászólásElküldve: 2014.03.28. 18:13 
Offline
Újonc

Csatlakozott: 2014.03.28. 16:46
Hozzászólások: 11
Komolyan SENKI?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: CSO Thompson FIX! HELP!
HozzászólásElküldve: 2014.03.29. 16:00 
Offline
Beavatott

Csatlakozott: 2014.01.15. 08:48
Hozzászólások: 85
Megköszönték neki: 41 alkalommal
Pawno írta:
Van egy CSO Thopmson pluginom és 2 hiba is van benne amire nem jövök rá, hátha ti tudtok segiteni.

sma:

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <fun>
  6. #include <hamsandwich>
  7. #include <xs>
  8. #include <cstrike>
  9.  
  10. enum
  11. {
  12. anim_idle,
  13. anim_reload,
  14. anim_draw,
  15. anim_shoot1,
  16. anim_shoot2,
  17. anim_shoot3
  18. }
  19.  
  20. #define ENG_NULLENT -1
  21. #define EV_INT_WEAPONKEY EV_INT_impulse
  22. #define tomi_WEAPONKEY 9142
  23. #define MAX_PLAYERS 32
  24. #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
  25.  
  26. const USE_STOPPED = 0
  27. const OFFSET_ACTIVE_ITEM = 373
  28. const OFFSET_WEAPONOWNER = 41
  29. const OFFSET_LINUX = 5
  30. const OFFSET_LINUX_WEAPONS = 5
  31.  
  32. #define WEAP_LINUX_XTRA_OFF 4
  33. #define m_fKnown 44
  34. #define m_flNextPrimaryAttack 46
  35. #define m_flTimeWeaponIdle 48
  36. #define m_iClip 51
  37. #define m_fInReload 54
  38. #define PLAYER_LINUX_XTRA_OFF 5
  39. #define m_flNextAttack 83
  40. #define tomi_RELOAD_TIME 4.0
  41.  
  42. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_p90",
  43. "weapon_p90", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_p90", "weapon_sg550",
  44. "weapon_p90", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_p90", "weapon_m249",
  45. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_p90",
  46. "weapon_ak47", "weapon_knife", "weapon_p90" }
  47.  
  48. new const Fire_Sounds[][] = { "weapons/thompson-1.wav" }
  49.  
  50. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  51.  
  52. new tomi_V_MODEL[64] = "models/gun_deathmatch/v_thompson.mdl"
  53. new tomi_P_MODEL[64] = "models/gun_deathmatch/p_thompson.mdl"
  54.  
  55. new cvar_dmg_tomi, cvar_recoil_tomi, cvar_clip_tomi, cvar_tomi_ammo , cvar_dmg_tomi2
  56. new g_has_tomi[33]
  57. new g_MaxPlayers, g_orig_event_tomi, g_clip_ammo[33] , g_reload[33]
  58. new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
  59. new g_tomi_TmpClip[33]
  60. new g_mode[33] , g_mode2[33]
  61. new g_hasZoom[33]
  62. new gmsgWeaponList
  63.  
  64. public plugin_init()
  65. {
  66. register_plugin("Thompson", "1.1", "Gazik")
  67. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  68. register_event("CurWeapon","CurrentWeapon","be","1=1")
  69. RegisterHam(Ham_Item_AddToPlayer, "weapon_p90", "fw_tomi_AddToPlayer")
  70. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  71. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  72. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  73. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  74. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  75. if (WEAPONENTNAMES[i:1w0gvfym][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i:1w0gvfym], "fw_Item_Deploy_Post", 1)
  76. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p90", "fw_tomi_PrimaryAttack")
  77. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p90", "fw_tomi_PrimaryAttack_Post", 1)
  78. RegisterHam(Ham_Item_PostFrame, "weapon_p90", "tomi__ItemPostFrame");
  79. RegisterHam(Ham_Weapon_Reload, "weapon_p90", "tomi__Reload");
  80. RegisterHam(Ham_Weapon_Reload, "weapon_p90", "tomi__Reload_Post", 1);
  81. register_forward(FM_CmdStart, "fw_CmdStart")
  82. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  83. register_forward(FM_SetModel, "fw_SetModel")
  84. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  85. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  86.  
  87. cvar_dmg_tomi = register_cvar("tomi_dmg", "2.0")
  88. cvar_dmg_tomi2 = register_cvar("tomi_dmg_sniper", "3.0")
  89. cvar_recoil_tomi = register_cvar("tomi_recoil", "0.5")
  90. cvar_clip_tomi = register_cvar("tomi_clip", "50")
  91. cvar_tomi_ammo = register_cvar("tomi_ammo", "100")
  92.  
  93. g_MaxPlayers = get_maxplayers()
  94. gmsgWeaponList = get_user_msgid("WeaponList")
  95. }
  96.  
  97. public plugin_precache()
  98. {
  99. precache_model(tomi_V_MODEL)
  100. precache_model(tomi_P_MODEL)
  101. precache_sound(Fire_Sounds[0])
  102. precache_sound("weapons/thompson_clipin.wav")
  103. precache_sound("weapons/thompson_clipout.wav")
  104. precache_sound("weapons/thompson_draw.wav")
  105. precache_generic("sprites/weapon_thompson_gdm.txt")
  106. precache_generic("sprites/gun_deathmatch/weapon_thompson.spr")
  107.  
  108. register_clcmd("weapon_thompson_gdm", "weapon_hook")
  109.  
  110. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  111. }
  112.  
  113. public weapon_hook(id)
  114. {
  115. engclient_cmd(id, "weapon_p90")
  116. return PLUGIN_HANDLED
  117. }
  118.  
  119. public fwPrecacheEvent_Post(type, const name[])
  120. {
  121. if (equal("events/p90.sc", name))
  122. {
  123. g_orig_event_tomi = get_orig_retval()
  124. return FMRES_HANDLED
  125. }
  126.  
  127. return FMRES_IGNORED
  128. }
  129.  
  130. public client_connect(id)
  131. {
  132. g_has_tomi[id] = false
  133. }
  134.  
  135. public client_disconnect(id)
  136. {
  137. g_has_tomi[id] = false
  138. }
  139.  
  140. public nothing(id)
  141. {
  142. g_has_tomi[id] = false
  143. }
  144.  
  145. public fw_SetModel(entity, model[])
  146. {
  147. if(!is_valid_ent(entity))
  148. return FMRES_IGNORED;
  149.  
  150. static szClassName[33]
  151. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  152.  
  153. if(!equal(szClassName, "weaponbox"))
  154. return FMRES_IGNORED;
  155.  
  156. static iOwner
  157.  
  158. iOwner = entity_get_edict(entity, EV_ENT_owner)
  159.  
  160. if(equal(model, "models/w_p90.mdl"))
  161. {
  162. static iStoredSVDID
  163.  
  164. iStoredSVDID = find_ent_by_owner(ENG_NULLENT, "weapon_p90", entity)
  165.  
  166. if(!is_valid_ent(iStoredSVDID))
  167. return FMRES_IGNORED;
  168.  
  169. if(g_has_tomi[iOwner])
  170. {
  171. entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, tomi_WEAPONKEY)
  172. g_has_tomi[iOwner] = false
  173.  
  174. entity_set_model(entity, "")
  175. entity_set_int(entity, EV_INT_body, 22)
  176.  
  177. return FMRES_SUPERCEDE;
  178. }
  179. }
  180.  
  181.  
  182. return FMRES_IGNORED;
  183. }
  184.  
  185. public gdm_thompson(id)
  186. {
  187. new iWep2 = give_item(id,"weapon_p90")
  188. if(iWep2 > 0)
  189. {
  190. cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_tomi))
  191. cs_set_user_bpammo (id, CSW_P90, get_pcvar_num(cvar_tomi_ammo))
  192.  
  193. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  194. write_string("weapon_thompson_gdm")
  195. write_byte(7)
  196. write_byte(100)
  197. write_byte(-1)
  198. write_byte(-1)
  199. write_byte(0)
  200. write_byte(8)
  201. write_byte(CSW_P90)
  202. message_end()
  203. }
  204. g_has_tomi[id] = true;
  205. }
  206.  
  207. public fw_tomi_AddToPlayer(tomi, id)
  208. {
  209. if(!is_valid_ent(tomi) || !is_user_connected(id))
  210. return HAM_IGNORED;
  211.  
  212. if(entity_get_int(tomi, EV_INT_WEAPONKEY) == tomi_WEAPONKEY)
  213. {
  214. g_has_tomi[id] = true
  215.  
  216. entity_set_int(tomi, EV_INT_WEAPONKEY, 0)
  217.  
  218. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  219. write_string("weapon_thompson_gdm")
  220. write_byte(7)
  221. write_byte(100)
  222. write_byte(-1)
  223. write_byte(-1)
  224. write_byte(0)
  225. write_byte(8)
  226. write_byte(CSW_P90)
  227. message_end()
  228.  
  229. return HAM_HANDLED;
  230. }
  231. else
  232. {
  233. message_begin(MSG_ONE, gmsgWeaponList, {0,0,0}, id)
  234. write_string("weapon_p90")
  235. write_byte(7)
  236. write_byte(100)
  237. write_byte(-1)
  238. write_byte(-1)
  239. write_byte(0)
  240. write_byte(8)
  241. write_byte(CSW_P90)
  242. message_end()
  243. }
  244.  
  245. return HAM_IGNORED;
  246. }
  247.  
  248. public fw_CmdStart(id, uc_handle, seed)
  249. {
  250. if(id > 0 && id < 33)
  251. {
  252. if(!is_user_alive(id))
  253. return PLUGIN_HANDLED
  254. if(get_user_weapon(id) == CSW_P90 && g_has_tomi[id])
  255. {
  256. if((get_uc(uc_handle, UC_Buttons) & IN_USE) && !(pev(id, pev_oldbuttons) & IN_USE) && g_reload[id] == 0 && g_mode2[id] == 0)
  257. {
  258. if(!g_hasZoom[id])
  259. {
  260. g_hasZoom[id] = true
  261. cs_set_user_zoom(id, CS_SET_AUGSG552_ZOOM, 1)
  262. }else{
  263. g_hasZoom[ id ] = false
  264. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  265. }
  266. if (!g_mode[id])
  267. {
  268. g_hasZoom[id] = false
  269. cs_set_user_zoom(id, CS_RESET_ZOOM, 0)
  270. }
  271. }
  272.  
  273. if (g_hasZoom[ id ] && (pev(id, pev_button) & IN_RELOAD))
  274. {
  275. g_hasZoom[ id ] = false
  276. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  277. }
  278.  
  279. if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2) && !g_mode2[id] && !g_reload[id])
  280. {
  281. g_hasZoom[ id ] = false
  282. cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  283. if(g_mode[id] == 0) make_mode2(id)
  284. if(g_mode[id] == 2) make_mode1(id)
  285. }
  286. }
  287. return HAM_SUPERCEDE;
  288. }
  289. return PLUGIN_HANDLED
  290. }
  291.  
  292. public make_mode2(id)
  293. {
  294. set_task(0.000001,"mode_new2",id)
  295. g_mode2[id] = 1
  296. UTIL_PlayWeaponAnimation(id, 6)
  297. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  298. }
  299.  
  300. public make_mode1(id)
  301. {
  302. set_task(0.000001,"mode_new1",id)
  303. g_mode2[id] = 1
  304. UTIL_PlayWeaponAnimation(id, 6)
  305. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  306. }
  307.  
  308. public mode_new2(id)
  309. {
  310. if(g_mode2[id] == 1 && is_user_alive(id))
  311. {
  312. g_mode2[id] = 0
  313. g_mode[id] = 2
  314. }
  315. }
  316.  
  317. public mode_new1(id)
  318. {
  319. if(g_mode2[id] == 1 && is_user_alive(id))
  320. {
  321. g_mode2[id] = 0
  322. g_mode[id] = 0
  323. }
  324. }
  325.  
  326. public fw_UseStationary_Post(entity, caller, activator, use_type)
  327. {
  328. if (use_type == USE_STOPPED && is_user_connected(caller))
  329. replace_weapon_models(caller, get_user_weapon(caller))
  330. }
  331.  
  332. public fw_Item_Deploy_Post(weapon_ent)
  333. {
  334. static owner
  335. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  336.  
  337. static weaponid
  338. weaponid = cs_get_weapon_id(weapon_ent)
  339.  
  340. replace_weapon_models(owner, weaponid)
  341. }
  342.  
  343. public CurrentWeapon(id)
  344. {
  345. replace_weapon_models(id, read_data(2))
  346. remove_task(id)
  347. g_reload[id] = 0
  348. g_mode2[id] = 0
  349. }
  350.  
  351. replace_weapon_models(id, weaponid)
  352. {
  353. switch (weaponid)
  354. {
  355. case CSW_P90:
  356. {
  357. if(g_has_tomi[id])
  358. {
  359. if(g_mode[id] == 0) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
  360. if(g_mode[id] == 2) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
  361. set_pev(id, pev_weaponmodel2, tomi_P_MODEL)
  362. }
  363. }
  364. }
  365. }
  366.  
  367. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  368. {
  369. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_P90) || !g_has_tomi[Player])
  370. return FMRES_IGNORED
  371.  
  372. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.00001)
  373. return FMRES_HANDLED
  374. }
  375.  
  376. public fw_tomi_PrimaryAttack(Weapon)
  377. {
  378. new Player = get_pdata_cbase(Weapon, 41, 4)
  379.  
  380. if (!g_has_tomi[Player])
  381. return;
  382.  
  383. pev(Player,pev_punchangle,cl_pushangle[Player])
  384.  
  385. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  386. }
  387.  
  388. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  389. {
  390. if ((eventid != g_orig_event_tomi))
  391. return FMRES_IGNORED
  392. if (!(1 <= invoker <= g_MaxPlayers))
  393. return FMRES_IGNORED
  394.  
  395. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  396. return FMRES_SUPERCEDE
  397. }
  398.  
  399. public fw_tomi_PrimaryAttack_Post(Weapon)
  400. {
  401. new Player = get_pdata_cbase(Weapon, 41, 4)
  402.  
  403. new szClip, szAmmo
  404. get_user_weapon(Player, szClip, szAmmo)
  405. if(Player > 0 && Player < 33)
  406. {
  407. if(!g_has_tomi[Player])
  408. {
  409. if(szClip > 0) emit_sound(Player, CHAN_WEAPON, "weapons/p90-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  410. }
  411. if(g_has_tomi[Player])
  412. {
  413. new Float:push[3]
  414. pev(Player,pev_punchangle,push)
  415. xs_vec_sub(push,cl_pushangle[Player],push)
  416.  
  417. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_tomi),push)
  418. xs_vec_add(push,cl_pushangle[Player],push)
  419. set_pev(Player,pev_punchangle,push)
  420.  
  421. if (!g_clip_ammo[Player])
  422. return
  423.  
  424. emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  425. UTIL_PlayWeaponAnimation(Player, 3)
  426.  
  427. make_blood_and_bulletholes(Player)
  428. if(g_mode[Player] == 2) set_pdata_float(Player, m_flNextAttack, 0.3, PLAYER_LINUX_XTRA_OFF)
  429. }
  430. }
  431. }
  432.  
  433. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  434. {
  435. if (victim != attacker && is_user_connected(attacker))
  436. {
  437. if(get_user_weapon(attacker) == CSW_P90)
  438. {
  439. if(g_has_tomi[attacker])
  440. {
  441. if(g_mode[attacker] == 2) SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_tomi2))
  442. if(g_mode[attacker] == 0) SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_tomi))
  443. }
  444. }
  445. }
  446. }
  447.  
  448. public message_DeathMsg(msg_id, msg_dest, id)
  449. {
  450. static szTruncatedWeapon[33], iAttacker, iVictim
  451.  
  452. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
  453.  
  454. iAttacker = get_msg_arg_int(1)
  455. iVictim = get_msg_arg_int(2)
  456.  
  457. if(!is_user_connected(iAttacker) || iAttacker == iVictim)
  458. return PLUGIN_CONTINUE
  459.  
  460. if(equal(szTruncatedWeapon, "p90") && get_user_weapon(iAttacker) == CSW_P90)
  461. {
  462. if(g_has_tomi[iAttacker])
  463. set_msg_arg_string(4, "thompson")
  464. }
  465.  
  466. return PLUGIN_CONTINUE
  467. }
  468.  
  469. stock fm_cs_get_current_weapon_ent(id)
  470. {
  471. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
  472. }
  473.  
  474. stock fm_cs_get_weapon_ent_owner(ent)
  475. {
  476. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
  477. }
  478.  
  479. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  480. {
  481. set_pev(Player, pev_weaponanim, Sequence)
  482.  
  483. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  484. write_byte(Sequence)
  485. write_byte(pev(Player, pev_body))
  486. message_end()
  487. }
  488.  
  489. stock make_blood_and_bulletholes(id)
  490. {
  491. new aimOrigin[3], target, body
  492. get_user_origin(id, aimOrigin, 3)
  493. get_user_aiming(id, target, body)
  494.  
  495. if(target > 0 && target <= g_MaxPlayers)
  496. {
  497. new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
  498. pev(id, pev_origin, fStart)
  499.  
  500. velocity_by_aim(id, 64, fVel)
  501.  
  502. fStart[0] = float(aimOrigin[0])
  503. fStart[1] = float(aimOrigin[1])
  504. fStart[2] = float(aimOrigin[2])
  505. fEnd[0] = fStart[0]+fVel[0]
  506. fEnd[1] = fStart[1]+fVel[1]
  507. fEnd[2] = fStart[2]+fVel[2]
  508.  
  509. new res
  510. engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
  511. get_tr2(res, TR_vecEndPos, fRes)
  512.  
  513. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  514. write_byte(TE_BLOODSPRITE)
  515. write_coord(floatround(fStart[0]))
  516. write_coord(floatround(fStart[1]))
  517. write_coord(floatround(fStart[2]))
  518. write_short( m_iBlood [ 1 ])
  519. write_short( m_iBlood [ 0 ] )
  520. write_byte(70)
  521. write_byte(random_num(1,2))
  522. message_end()
  523.  
  524.  
  525. }
  526. else if(!is_user_connected(target))
  527. {
  528. if(target)
  529. {
  530. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  531. write_byte(TE_DECAL)
  532. write_coord(aimOrigin[0])
  533. write_coord(aimOrigin[1])
  534. write_coord(aimOrigin[2])
  535. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  536. write_short(target)
  537. message_end()
  538. }
  539. else
  540. {
  541. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  542. write_byte(TE_WORLDDECAL)
  543. write_coord(aimOrigin[0])
  544. write_coord(aimOrigin[1])
  545. write_coord(aimOrigin[2])
  546. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  547. message_end()
  548. }
  549.  
  550. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  551. write_byte(TE_GUNSHOTDECAL)
  552. write_coord(aimOrigin[0])
  553. write_coord(aimOrigin[1])
  554. write_coord(aimOrigin[2])
  555. write_short(id)
  556. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  557. message_end()
  558. }
  559. }
  560.  
  561. public tomi__ItemPostFrame(weapon_entity) {
  562. new id = pev(weapon_entity, pev_owner)
  563. if (!is_user_connected(id))
  564. return HAM_IGNORED;
  565.  
  566. if (!g_has_tomi[id])
  567. return HAM_IGNORED;
  568.  
  569. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  570.  
  571. new iBpAmmo = cs_get_user_bpammo(id, CSW_P90);
  572. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  573.  
  574. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  575.  
  576. if( fInReload && flNextAttack <= 0.0 )
  577. {
  578. new j = min(get_pcvar_num(cvar_clip_tomi) - iClip, iBpAmmo)
  579.  
  580. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  581. cs_set_user_bpammo(id, CSW_P90, iBpAmmo-j);
  582.  
  583. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  584. fInReload = 0
  585. g_reload[id] = 0
  586. }
  587.  
  588. return HAM_IGNORED;
  589. }
  590.  
  591. public tomi__Reload(weapon_entity) {
  592. new id = pev(weapon_entity, pev_owner)
  593. if (!is_user_connected(id))
  594. return HAM_IGNORED;
  595.  
  596. if (!g_has_tomi[id])
  597. return HAM_IGNORED;
  598.  
  599. g_tomi_TmpClip[id] = -1;
  600.  
  601. new iBpAmmo = cs_get_user_bpammo(id, CSW_P90);
  602. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  603.  
  604. if (iBpAmmo <= 0)
  605. return HAM_SUPERCEDE;
  606.  
  607. if (iClip >= get_pcvar_num(cvar_clip_tomi))
  608. return HAM_SUPERCEDE;
  609.  
  610.  
  611. g_tomi_TmpClip[id] = iClip;
  612.  
  613. g_reload[id] = 1
  614.  
  615. return HAM_IGNORED;
  616. }
  617.  
  618. public tomi__Reload_Post(weapon_entity) {
  619. new id = pev(weapon_entity, pev_owner)
  620. if (!is_user_connected(id))
  621. return HAM_IGNORED;
  622.  
  623. if (!g_has_tomi[id])
  624. return HAM_IGNORED;
  625.  
  626. if (g_tomi_TmpClip[id] == -1)
  627. return HAM_IGNORED;
  628.  
  629. set_pdata_int(weapon_entity, m_iClip, g_tomi_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  630.  
  631. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, tomi_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)
  632.  
  633. set_pdata_float(id, m_flNextAttack, tomi_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)
  634.  
  635. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  636.  
  637. // relaod animation
  638. UTIL_PlayWeaponAnimation(id, 1)
  639.  
  640. return HAM_IGNORED;
  641. }
  642.  


debugban található hiba:

Kód:
L 03/28/2014 - 08:46:47: [AMXX] Run time error 4: index out of bounds 
L 03/28/2014 - 08:46:47: [AMXX]    [0] gdm_thompson.sma::replace_weapon_models (line 356)
L 03/28/2014 - 08:46:47: [AMXX]    [1] gdm_thompson.sma::fw_Item_Deploy_Post (line 339)


[kozep]Valaki tudná nekem ezt fixelni. Nagyon köszönöm.[/kozep]


miért van 2x a v modell?

Idézet:
{
if(g_mode[id] == 0) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
if(g_mode[id] == 2) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
set_pev(id, pev_weaponmodel2, tomi_P_MODEL)


próbáld meg pl ha van w modell
if(g_mode[id] == 0) set_pev(id, pev_viewmodel2, tomi_V_MODEL)
if(g_mode[id] == 2) set_pev(id, pev_viewmodel2, tomi_W_MODEL)
if(g_mode[id] == 3) set_pev(id, pev_viewmodel2 tomi_P_MODEL)


ez csak példa lehet csak ennyi a hiba ! ezt próbáld meg amit most csináltam neked


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: CSO Thompson FIX! HELP!
HozzászólásElküldve: 2014.03.29. 23:00 
Offline
Újonc

Csatlakozott: 2014.03.28. 16:46
Hozzászólások: 11
Fogadjunk a source-t végig se nézted miért van az?!

A 0 és a 2 defjét nézd már meg.

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. public make_mode1(id)
  3. {
  4. set_task(0.000001,"mode_new1",id)
  5. g_mode2[id] = 1
  6. UTIL_PlayWeaponAnimation(id, 6)
  7. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  8. }
  9.  
  10. public mode_new2(id)
  11. {
  12. if(g_mode2[id] == 1 && is_user_alive(id))
  13. {
  14. g_mode2[id] = 0
  15. g_mode[id] = 2
  16. }
  17. }
  18.  
  19. public mode_new1(id)
  20. {
  21. if(g_mode2[id] == 1 && is_user_alive(id))
  22. {
  23. g_mode2[id] = 0
  24. g_mode[id] = 0
  25. }
  26. }
  27.  


UI: alap h van


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: CSO Thompson FIX! HELP!
HozzászólásElküldve: 2014.03.30. 17:32 
Offline
Beavatott

Csatlakozott: 2014.01.15. 08:48
Hozzászólások: 85
Megköszönték neki: 41 alkalommal
Pawno írta:
Fogadjunk a source-t végig se nézted miért van az?!

A 0 és a 2 defjét nézd már meg.

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. public make_mode1(id)
  3. {
  4. set_task(0.000001,"mode_new1",id)
  5. g_mode2[id] = 1
  6. UTIL_PlayWeaponAnimation(id, 6)
  7. set_pdata_float(id, m_flNextAttack, 0.000001, PLAYER_LINUX_XTRA_OFF)
  8. }
  9.  
  10. public mode_new2(id)
  11. {
  12. if(g_mode2[id] == 1 && is_user_alive(id))
  13. {
  14. g_mode2[id] = 0
  15. g_mode[id] = 2
  16. }
  17. }
  18.  
  19. public mode_new1(id)
  20. {
  21. if(g_mode2[id] == 1 && is_user_alive(id))
  22. {
  23. g_mode2[id] = 0
  24. g_mode[id] = 0
  25. }
  26. }
  27.  


UI: alap h van



ok csak tippvolt.. meg csak rénéztem


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


Ki van itt

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