hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 466 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 465 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]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  [4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: ZP-s kések
HozzászólásElküldve:2012.07.14. 07:43 
Offline
Őskövület
Avatar

Csatlakozott:2011.09.26. 20:33
Hozzászólások:2105
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 33 alkalommal
Hali
Átkéne írni ezt az sma-t meg a hozzá tartozó cfg-t publicra. Köszi :D

SMA:
Kód:
  1.  

  2. #include <amxmodx>

  3. #include <cstrike>

  4. #include <engine>

  5. #include <fakemeta>

  6. #include <fun>

  7. #include <hamsandwich>

  8. #include <zombieplague>

  9.  

  10. #define KNIFE_NAME                                                              ARRAY_knife_name[knife]

  11. #define KNIFE_DESC                                                              ARRAY_knife_desc[knife]

  12. #define KNIFE_SPEED                                                             ARRAY_knife_speed[knife]

  13. #define KNIFE_GRAV                                                              ARRAY_knife_grav[knife]

  14. #define KNIFE_JUMP                                                              ARRAY_knife_jump[knife]

  15. #define KNIFE_KNOCK                                                             ARRAY_knife_knock[knife]

  16. #define KNIFE_DMG                                                               ARRAY_knife_dmg[knife]

  17. #define KNIFE_PRIMATTRATE                                               ARRAY_knife_primattrate[knife]

  18. #define KNIFE_SECATTRATE                                                ARRAY_knife_secattrate[knife]

  19. #define KNIFE_FLAGS                                                             ARRAY_knife_flags[knife]

  20. #define KNIFE_HITSOUNDS                                                 ARRAY_knife_hitsounds[knife]

  21. #define KNIFE_SLASHSOUNDS                                               ARRAY_knife_slashsounds[knife]

  22. #define KNIFE_MODEL_V                                                   ARRAY_knife_model_v[knife]

  23. #define KNIFE_MODEL_P                                                   ARRAY_knife_model_p[knife]

  24. #define KNIFE_SOUND_DEPLOY                                              ARRAY_knife_sound_deploy[knife]

  25. #define KNIFE_SOUND_HIT(%1)                                             ARRAY_knife_sound_hit[knife][%1]

  26. #define KNIFE_SOUND_HITWALL                                             ARRAY_knife_sound_hitwall[knife]

  27. #define KNIFE_SOUND_SLASH(%1)                                   ARRAY_knife_sound_slash[knife][%1]

  28. #define KNIFE_SOUND_STAB                                                ARRAY_knife_sound_stab[knife]

  29. #define KNIFE_SAVED_AUTHID                                              ARRAY_knife_saved_authid[i]

  30. #define KNIFE_SAVED_ID                                                  ARRAY_knife_saved_id[i]

  31. #define KNIFES_TOTAL                                                    INT_knifes_total

  32. #define KNIFES_TOTAL_SAVED                                              INT_knifes_total_saved

  33. #define KNIFE_SURV                                                              INT_knife_surv

  34. #define KNIFE_USER(%1)                                                  PSZ_knife{%1}

  35.  

  36. #define KNIFE_SURVIVOR                                                  9

  37.  

  38. #define USE_STOPPED                                                             0

  39.  

  40. #define m_pPlayer                                                               41

  41. #define m_flNextPrimaryAttack                                   46

  42. #define m_flNextSecondaryAttack                                 47

  43.  

  44. #define m_pActiveItem                                                   373

  45.  

  46. #define LINUXDIFF                                                               5

  47. #define LINUXDIFFWEAP                                                   4

  48.  

  49. #define get_user_weapon_entity(%1)                              get_pdata_cbase(%1, m_pActiveItem, LINUXDIFF)

  50. #define get_weapon_owner(%1)                                    get_pdata_cbase(%1, m_pPlayer, LINUXDIFFWEAP)

  51. #define get_weapon_nextprimatt(%1)                              get_pdata_float(%1, m_flNextPrimaryAttack, LINUXDIFFWEAP)

  52. #define get_weapon_nextsecatt(%1)                               get_pdata_float(%1, m_flNextSecondaryAttack, LINUXDIFFWEAP)

  53. #define set_weapon_nextprimatt(%1,%2)                   set_pdata_float(%1, m_flNextPrimaryAttack, %2, LINUXDIFFWEAP)

  54. #define set_weapon_nextsecatt(%1,%2)                    set_pdata_float(%1, m_flNextSecondaryAttack, %2, LINUXDIFFWEAP)

  55.  

  56. #define register_menu(%1,%2,%3)                                 register_menucmd(register_menuid(%1), %2, %3)

  57.  

  58. #define MENU_KNIFES_KEYS                                                MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_9 | MENU_KEY_0

  59. #define MENU_KNIFES                                                             "/knife"

  60.  

  61. new PSZ_knife[33 char]

  62.  

  63. new Float:ARRAY_knife_speed[10]

  64. new Float:ARRAY_knife_grav[10]

  65. new Float:ARRAY_knife_jump[10]

  66. new Float:ARRAY_knife_knock[10]

  67. new Float:ARRAY_knife_dmg[10]

  68. new Float:ARRAY_knife_primattrate[10]

  69. new Float:ARRAY_knife_secattrate[10]

  70. new ARRAY_knife_flags[10]

  71. new ARRAY_knife_hitsounds[10]

  72. new ARRAY_knife_slashsounds[10]

  73. new ARRAY_knife_name[10][64]

  74. new ARRAY_knife_desc[10][64]

  75. new ARRAY_knife_model_v[10][64]

  76. new ARRAY_knife_model_p[10][64]

  77. new ARRAY_knife_sound_deploy[10][64]

  78. new ARRAY_knife_sound_hit[10][4][64]

  79. new ARRAY_knife_sound_hitwall[10][64]

  80. new ARRAY_knife_sound_slash[10][2][64]

  81. new ARRAY_knife_sound_stab[10][64]

  82. new ARRAY_knife_saved_authid[1024][32]

  83. new ARRAY_knife_saved_id[1024]

  84.  

  85. new INT_knifes_total

  86. new INT_knifes_total_saved

  87. new INT_knife_surv

  88.  

  89. new Float:FL_gravity

  90. new Float:FL_gravity_surv

  91.  

  92. public plugin_precache()

  93. {

  94.         register_srvcmd("register_knife", "SRVCMD__register_knife")

  95.        

  96.         server_cmd("exec addons/amxmodx/configs/cso_knifes.cfg")

  97.         server_exec()

  98. }

  99.  

  100. public SRVCMD__register_knife()

  101. {

  102.         new data[17][64]

  103.         read_argv(1, data[0], 63)

  104.         read_argv(2, data[1], 63)

  105.         read_argv(3, data[2], 63)

  106.         read_argv(4, data[3], 63)

  107.         read_argv(5, data[4], 63)

  108.         read_argv(6, data[5], 63)

  109.         read_argv(7, data[6], 63)

  110.         read_argv(8, data[7], 63)

  111.         read_argv(9, data[8], 63)

  112.         read_argv(10, data[9], 63)

  113.         read_argv(11, data[10], 63)

  114.         read_argv(12, data[11], 63)

  115.         read_argv(13, data[12], 63)

  116.         read_argv(14, data[13], 63)

  117.         read_argv(15, data[14], 63)

  118.         read_argv(16, data[15], 63)

  119.         read_argv(17, data[16], 63)

  120.        

  121.         for (new i = 0; i < 17; i++) remove_quotes(data[i])

  122.        

  123.         new knife

  124.         (data[9][0] == 'S') ? (knife = KNIFE_SURVIVOR) : (knife = KNIFES_TOTAL)

  125.        

  126.         formatex(KNIFE_NAME, 63, data[0])

  127.         formatex(KNIFE_DESC, 63, data[1])

  128.         KNIFE_SPEED = floatstr(data[2])

  129.         KNIFE_GRAV = floatstr(data[3])

  130.         KNIFE_JUMP = floatstr(data[4])

  131.         KNIFE_KNOCK = floatstr(data[5])

  132.         KNIFE_DMG = floatstr(data[6])

  133.         KNIFE_PRIMATTRATE = floatstr(data[7])

  134.         KNIFE_SECATTRATE = floatstr(data[8])

  135.         if (data[9][0] > 0 && knife != KNIFE_SURVIVOR) KNIFE_FLAGS = read_flags(data[9])

  136.        

  137.         formatex(KNIFE_MODEL_V, 63, data[10])

  138.         precache_model(KNIFE_MODEL_V)

  139.         formatex(KNIFE_MODEL_P, 63, data[11])

  140.         precache_model(KNIFE_MODEL_P)

  141.         formatex(KNIFE_SOUND_DEPLOY, 63, data[12])

  142.         precache_sound(KNIFE_SOUND_DEPLOY)

  143.         if (containi(data[13], ",") != -1)

  144.         {

  145.                 KNIFE_HITSOUNDS = 2

  146.                 strtok(data[13], KNIFE_SOUND_HIT(0), 63, KNIFE_SOUND_HIT(1), 63, ',')

  147.                 precache_sound(KNIFE_SOUND_HIT(0))

  148.                 precache_sound(KNIFE_SOUND_HIT(1))

  149.         }

  150.         else

  151.         {

  152.                 KNIFE_HITSOUNDS = 1

  153.                 formatex(KNIFE_SOUND_HIT(0), 63, data[13])

  154.                 precache_sound(KNIFE_SOUND_HIT(0))

  155.         }

  156.         formatex(KNIFE_SOUND_HITWALL, 63, data[14])

  157.         precache_sound(KNIFE_SOUND_HITWALL)

  158.         if (containi(data[15], ",") != -1)

  159.         {

  160.                 KNIFE_SLASHSOUNDS = 2

  161.                 strtok(data[15], KNIFE_SOUND_SLASH(0), 63, KNIFE_SOUND_SLASH(1), 63, ',')

  162.                 precache_sound(KNIFE_SOUND_SLASH(0))

  163.                 precache_sound(KNIFE_SOUND_SLASH(1))

  164.         }

  165.         else

  166.         {

  167.                 KNIFE_SLASHSOUNDS = 1

  168.                 formatex(KNIFE_SOUND_SLASH(0), 63, data[15])

  169.                 precache_sound(KNIFE_SOUND_SLASH(0))

  170.         }

  171.         formatex(KNIFE_SOUND_STAB, 63, data[16])

  172.         precache_sound(KNIFE_SOUND_STAB)

  173.        

  174.         if (knife != KNIFE_SURVIVOR) KNIFES_TOTAL++

  175.         else KNIFE_SURV = 1

  176. }

  177.  

  178. public plugin_init()

  179. {

  180.         register_plugin("[CSO] Knifes", "Omega", "WPMG Team")

  181.        

  182.         RegisterHam(Ham_Spawn,                                  "player",                       "CPlayer__Spawn_Post",                  1)

  183.         RegisterHam(Ham_Item_Deploy,                    "weapon_knife",         "CKNIFE__Deploy_Post",                  1)

  184.         RegisterHam(Ham_Use,                                    "func_tank",            "CStationary__Use_Post",                1)

  185.         RegisterHam(Ham_Use,                                    "func_tankmortar",      "CStationary__Use_Post",                1)

  186.         RegisterHam(Ham_Use,                                    "func_tankrocket",      "CStationary__Use_Post",                1)

  187.         RegisterHam(Ham_Use,                                    "func_tanklaser",       "CStationary__Use_Post",                1)

  188.         RegisterHam(Ham_Weapon_PrimaryAttack,   "weapon_knife",         "CKNIFE__PrimaryAttack_Post",   1)

  189.         RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife",         "CKNIFE__SecondaryAttack_Post", 1)

  190.         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage")

  191.         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage_Post",             1)

  192.         RegisterHam(Ham_Player_PreThink,                "player",                       "CPlayer__PreThink")

  193.        

  194.         register_forward(FM_EmitSound,                                                          "CEntity__EmitSound")

  195.        

  196.         register_srvcmd("load_knife", "SRVCMD__load_knife")

  197.         register_clcmd("say /knife", "CMD__knife")

  198.        

  199.         register_menu(MENU_KNIFES, MENU_KNIFES_KEYS, "MENU__Knifes")

  200. }

  201.  

  202. public plugin_cfg()

  203. {

  204.         server_cmd("exec addons/amxmodx/configs/zombieplague.cfg")

  205.         server_cmd("exec addons/amxmodx/configs/cso_knifes_saved.cfg")

  206.         server_exec()

  207.        

  208.         FL_gravity = get_cvar_float("zp_human_gravity")

  209.         FL_gravity_surv = get_cvar_float("zp_surv_gravity")

  210. }

  211.  

  212. public client_putinserver(id)

  213. {

  214.         KNIFE_USER(id) = 0

  215.        

  216.         new authid[32]

  217.         get_user_authid(id, authid, 31)

  218.        

  219.         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1)

  220.        

  221.         for (new i = 0; i < KNIFES_TOTAL_SAVED; i++)

  222.         {

  223.                 if (equal(authid, KNIFE_SAVED_AUTHID))

  224.                 {

  225.                         new knife = KNIFE_SAVED_ID

  226.                         (KNIFE_FLAGS > 0) ? (get_user_flags(id) & KNIFE_FLAGS) ? (KNIFE_USER(id) = knife) : (KNIFE_USER(id) = 0) : (KNIFE_USER(id) = knife)

  227.                         break

  228.                 }

  229.         }

  230. }

  231.  

  232. public client_disconnect(id)

  233. {

  234.         new authid[32], i

  235.         get_user_authid(id, authid, 31)

  236.        

  237.         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1)

  238.        

  239.         for (i = 0; i < KNIFES_TOTAL_SAVED; i++)

  240.         {

  241.                 if (equal(authid, KNIFE_SAVED_AUTHID))

  242.                 {

  243.                         KNIFE_SAVED_ID = KNIFE_USER(id)

  244.                         return

  245.                 }

  246.         }

  247.        

  248.         i = KNIFES_TOTAL_SAVED

  249.        

  250.         formatex(KNIFE_SAVED_AUTHID, 31, authid)

  251.         KNIFE_SAVED_ID = KNIFE_USER(id)

  252.         KNIFES_TOTAL_SAVED++

  253. }

  254.  

  255. public plugin_end()

  256. {

  257.         delete_file("addons/amxmodx/configs/cso_knifes_saved.cfg")

  258.        

  259.         new file, data[64], i

  260.         file = fopen("addons/amxmodx/configs/cso_knifes_saved.cfg", "at")

  261.        

  262.         for (i = 0; i < KNIFES_TOTAL_SAVED; i++)

  263.         {

  264.                 formatex(data, 63, "load_knife ^"%s^" ^"%d^"^n", KNIFE_SAVED_AUTHID, KNIFE_SAVED_ID)

  265.                 fputs(file, data)

  266.         }

  267.        

  268.         fclose(file)

  269. }

  270.  

  271. public SRVCMD__load_knife()

  272. {

  273.         new data[2][32], i

  274.         read_argv(1, data[0], 31)

  275.         read_argv(2, data[1], 31)

  276.         for (i = 0; i < 2; i++) remove_quotes(data[i])

  277.        

  278.         i = KNIFES_TOTAL_SAVED

  279.        

  280.         formatex(KNIFE_SAVED_AUTHID, 31, data[0])

  281.         KNIFE_SAVED_ID = str_to_num(data[1])

  282.         KNIFES_TOTAL_SAVED++

  283. }

  284.  

  285. public CPlayer__Spawn_Post(id)

  286. {

  287.         if (!is_user_alive(id)) return

  288.         if (zp_get_user_zombie(id)) return

  289.        

  290.         new entity = get_user_weapon_entity(id)

  291.        

  292.         if (!is_valid_ent(entity)) return

  293.         if (cs_get_weapon_id(entity) != CSW_KNIFE) return

  294.        

  295.         FUNC__replace_knife_models(id)

  296. }

  297.  

  298. public CKNIFE__Deploy_Post(entity)

  299. {

  300.         if (cs_get_weapon_id(entity) != CSW_KNIFE) return

  301.        

  302.         new id = get_weapon_owner(entity)

  303.        

  304.         if (zp_get_user_zombie(id)) return

  305.        

  306.         FUNC__replace_knife_models(id)

  307. }

  308.  

  309. public CStationary__Use_Post(entity, caller, activator, use_type)

  310. {

  311.         if (use_type != USE_STOPPED) return

  312.         if (!is_user_connected(caller)) return

  313.         if (zp_get_user_zombie(caller)) return

  314.         if (get_user_weapon(caller) != CSW_KNIFE) return

  315.        

  316.         FUNC__replace_knife_models(caller)

  317. }

  318.  

  319. public CKNIFE__PrimaryAttack_Post(entity)

  320. {

  321.         new id = get_weapon_owner(entity)

  322.        

  323.         if (zp_get_user_zombie(id)) return

  324.        

  325.         new knife

  326.         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id))

  327.        

  328.         set_weapon_nextprimatt(entity, get_weapon_nextprimatt(entity) * KNIFE_PRIMATTRATE)

  329.         set_weapon_nextsecatt(entity, get_weapon_nextsecatt(entity) * KNIFE_PRIMATTRATE)

  330. }

  331.  

  332. public CKNIFE__SecondaryAttack_Post(entity)

  333. {

  334.         new id = get_weapon_owner(entity)

  335.        

  336.         if (zp_get_user_zombie(id)) return

  337.        

  338.         new knife

  339.         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id))

  340.        

  341.         set_weapon_nextprimatt(entity, get_weapon_nextprimatt(entity) * KNIFE_SECATTRATE)

  342.         set_weapon_nextsecatt(entity, get_weapon_nextsecatt(entity) * KNIFE_SECATTRATE)

  343. }

  344.  

  345. public CPlayer__TakeDamage(victim, inflictor, attacker, Float:damage)

  346. {

  347.         if (inflictor != attacker || victim == attacker) return

  348.         if (!is_user_connected(attacker)) return

  349.         if (zp_get_user_zombie(attacker)) return

  350.         if (get_user_weapon(attacker) != CSW_KNIFE) return

  351.        

  352.         new knife

  353.         (KNIFE_SURV && zp_get_user_survivor(attacker)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(attacker))

  354.        

  355.         SetHamParamFloat(4, damage * KNIFE_DMG)

  356. }

  357.  

  358. public CPlayer__TakeDamage_Post(victim, inflictor, attacker, Float:damage)

  359. {

  360.         if (inflictor != attacker || victim == attacker) return

  361.         if (!is_user_connected(attacker)) return

  362.         if (zp_get_user_zombie(attacker)) return

  363.         if (get_user_weapon(attacker) != CSW_KNIFE) return

  364.        

  365.         client_print(attacker, print_center, "%d", floatround(damage, floatround_floor))

  366.        

  367.         new Float:velocity[3], Float:newvelocity[3]

  368.         entity_get_vector(victim, EV_VEC_velocity, velocity)

  369.        

  370.         new Float:victim_origin[3], Float:attacker_origin[3]

  371.         entity_get_vector(victim, EV_VEC_origin, victim_origin)

  372.         entity_get_vector(attacker, EV_VEC_origin, attacker_origin)

  373.        

  374.         newvelocity[0] = victim_origin[0] - attacker_origin[0]

  375.         newvelocity[1] = victim_origin[1] - attacker_origin[1]

  376.        

  377.         new Float:largestnum = 0.0

  378.        

  379.         if (0 <= floatcmp(floatabs(newvelocity[0]), floatabs(newvelocity[1])) <= 1)

  380.         {

  381.                 if (floatabs(newvelocity[0]) > 0) largestnum = floatabs(newvelocity[0])

  382.         }

  383.         else

  384.         {

  385.                 if (floatabs(newvelocity[1]) > 0) largestnum = floatabs(newvelocity[1])

  386.         }

  387.        

  388.         newvelocity[0] /= largestnum

  389.         newvelocity[1] /= largestnum

  390.        

  391.         new knife

  392.         (KNIFE_SURV && zp_get_user_survivor(attacker)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(attacker))

  393.        

  394.         velocity[0] = newvelocity[0] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin)

  395.         velocity[1] = newvelocity[1] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin)

  396.         if(newvelocity[0] <= 20.0 || newvelocity[1] <= 20.0)

  397.                 newvelocity[2] = random_float(200.0 , 275.0)

  398.        

  399.         newvelocity[0] += velocity[0]

  400.         newvelocity[1] += velocity[1]

  401.         entity_set_vector(victim, EV_VEC_velocity, newvelocity)

  402. }

  403.  

  404. public CPlayer__PreThink(id)

  405. {

  406.         if (!is_user_alive(id)) return

  407.         if (zp_get_user_zombie(id)) return

  408.         if (get_user_weapon(id) != CSW_KNIFE)

  409.         {

  410.                 if (zp_get_user_survivor(id)) set_user_gravity(id, FL_gravity_surv)

  411.                 else set_user_gravity(id, FL_gravity)

  412.                 return

  413.         }

  414.        

  415.         new knife

  416.         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id))

  417.        

  418.         set_user_maxspeed(id, KNIFE_SPEED)

  419.         set_user_gravity(id, KNIFE_GRAV)

  420.        

  421.         if (!(entity_get_int(id, EV_INT_button) & IN_JUMP)) return

  422.         if (entity_get_int(id, EV_INT_oldbuttons) & IN_JUMP) return

  423.        

  424.         new flags = entity_get_int(id, EV_INT_flags)

  425.        

  426.         if (!(flags & FL_ONGROUND)) return

  427.         if (flags & FL_WATERJUMP) return

  428.         if (entity_get_int(id, EV_INT_waterlevel) > 1) return

  429.        

  430.         new Float:velocity[3]

  431.         entity_get_vector(id, EV_VEC_velocity, velocity)

  432.        

  433.         velocity[2] += KNIFE_JUMP

  434.         entity_set_vector(id, EV_VEC_velocity, velocity)

  435.         entity_set_int(id, EV_INT_gaitsequence, 6)

  436. }

  437.  

  438. public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)

  439. {

  440.         if (!is_user_connected(id)) return FMRES_IGNORED

  441.         if (zp_get_user_zombie(id)) return FMRES_IGNORED

  442.        

  443.         if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')

  444.         {

  445.                 new knife

  446.                 (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id))

  447.                 if (sample[14] == 'd') emit_sound(id, channel, KNIFE_SOUND_DEPLOY, volume, attn, flags, pitch)

  448.                 else if (sample[14] == 'h')

  449.                 {

  450.                         if (sample[17] == 'w') emit_sound(id, channel, KNIFE_SOUND_HITWALL, volume, attn, flags, pitch)

  451.                         else emit_sound(id, channel, (KNIFE_HITSOUNDS > 1) ? KNIFE_SOUND_HIT(random_num(0, 1)) : KNIFE_SOUND_HIT(0), volume, attn, flags, pitch)

  452.                 }

  453.                 else

  454.                 {

  455.                         if (sample[15] == 'l') emit_sound(id, channel, (KNIFE_SLASHSOUNDS > 1) ? KNIFE_SOUND_SLASH(random_num(0, 1)) : KNIFE_SOUND_SLASH(0), volume, attn, flags, pitch)

  456.                         else emit_sound(id, channel, KNIFE_SOUND_STAB, volume, attn, flags, pitch)

  457.                 }

  458.                 return FMRES_SUPERCEDE

  459.         }

  460.        

  461.         return FMRES_IGNORED

  462. }

  463.  

  464. public CMD__knife(id)

  465. {

  466.         if (zp_has_round_started() == 1) return PLUGIN_HANDLED

  467.         return SHOWMENU__Knifes(id)

  468. }

  469.  

  470. public SHOWMENU__Knifes(id)

  471. {

  472.         new len, menu[500], keys, flags

  473.         len += formatex(menu, 499, "\yВыбор ножа:^n^n")

  474.         flags = get_user_flags(id)

  475.        

  476.         for (new knife = 0; knife < KNIFES_TOTAL; knife++)

  477.         {

  478.                 if (KNIFE_FLAGS)

  479.                 {

  480.                         if (flags & KNIFE_FLAGS)

  481.                         {

  482.                                 keys |= (1 << knife)

  483.                                 if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  484.                                 else len += formatex(menu[len], 499 - len, "\r%d.\w %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  485.                         }

  486.                         else

  487.                                 len += formatex(menu[len], 499 - len, "\d%d. %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  488.                 }

  489.                 else

  490.                 {

  491.                         keys |= (1 << knife)

  492.                         if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  493.                         else len += formatex(menu[len], 499 - len, "\r%d.\w %s \w%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  494.                 }

  495.         }

  496.        

  497.         keys |= MENU_KEY_0

  498.         len += formatex(menu[len], 499 - len, "^n\r0.\w Выход")

  499.        

  500.         return show_menu(id, keys, menu, -1, MENU_KNIFES)

  501. }

  502.  

  503. public MENU__Knifes(id, key)

  504. {

  505.         if (zp_has_round_started() == 1) return PLUGIN_HANDLED

  506.         if (key != 9)

  507.                 if (KNIFE_USER(id) != key)

  508.                 {

  509.                         KNIFE_USER(id) = key

  510.                         if (is_user_alive(id) && !zp_get_user_zombie(id))

  511.                                 if (get_user_weapon(id) == CSW_KNIFE)

  512.                                         FUNC__replace_knife_models(id)

  513.                 }

  514.         return PLUGIN_HANDLED

  515. }

  516.  

  517. public FUNC__replace_knife_models(id)

  518. {

  519.         new knife

  520.         (KNIFE_SURV && zp_get_user_survivor(id)) ? (knife = KNIFE_SURVIVOR) : (knife = KNIFE_USER(id))

  521.        

  522.         entity_set_string(id, EV_SZ_viewmodel, KNIFE_MODEL_V)

  523.         entity_set_string(id, EV_SZ_weaponmodel, KNIFE_MODEL_P)

  524. }

  525.  


Csatolmányok:
cso_knifes.rar [640bájt]
Letöltve 37 alkalommal.
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZP-s kések
HozzászólásElküldve:2012.07.19. 17:23 
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
Konfig fájlból töröld ki a survivor knife-ot.
Teszt nem volt.

Kód:
  1. #include <amxmodx>

  2. #include <cstrike>

  3. #include <engine>

  4. #include <fakemeta>

  5. #include <fun>

  6. #include <hamsandwich>

  7.  

  8. #define KNIFE_NAME                                                              ARRAY_knife_name[knife]

  9. #define KNIFE_DESC                                                              ARRAY_knife_desc[knife]

  10. #define KNIFE_SPEED                                                             ARRAY_knife_speed[knife]

  11. #define KNIFE_GRAV                                                              ARRAY_knife_grav[knife]

  12. #define KNIFE_JUMP                                                              ARRAY_knife_jump[knife]

  13. #define KNIFE_KNOCK                                                             ARRAY_knife_knock[knife]

  14. #define KNIFE_DMG                                                               ARRAY_knife_dmg[knife]

  15. #define KNIFE_PRIMATTRATE                                               ARRAY_knife_primattrate[knife]

  16. #define KNIFE_SECATTRATE                                                ARRAY_knife_secattrate[knife]

  17. #define KNIFE_FLAGS                                                             ARRAY_knife_flags[knife]

  18. #define KNIFE_HITSOUNDS                                                 ARRAY_knife_hitsounds[knife]

  19. #define KNIFE_SLASHSOUNDS                                               ARRAY_knife_slashsounds[knife]

  20. #define KNIFE_MODEL_V                                                   ARRAY_knife_model_v[knife]

  21. #define KNIFE_MODEL_P                                                   ARRAY_knife_model_p[knife]

  22. #define KNIFE_SOUND_DEPLOY                                              ARRAY_knife_sound_deploy[knife]

  23. #define KNIFE_SOUND_HIT(%1)                                             ARRAY_knife_sound_hit[knife][%1]

  24. #define KNIFE_SOUND_HITWALL                                             ARRAY_knife_sound_hitwall[knife]

  25. #define KNIFE_SOUND_SLASH(%1)                                   ARRAY_knife_sound_slash[knife][%1]

  26. #define KNIFE_SOUND_STAB                                                ARRAY_knife_sound_stab[knife]

  27. #define KNIFE_SAVED_AUTHID                                              ARRAY_knife_saved_authid[i]

  28. #define KNIFE_SAVED_ID                                                  ARRAY_knife_saved_id[i]

  29. #define KNIFES_TOTAL                                                    INT_knifes_total

  30. #define KNIFES_TOTAL_SAVED                                              INT_knifes_total_saved

  31. #define KNIFE_USER(%1)                                                  PSZ_knife{%1}

  32.  

  33.  

  34. #define USE_STOPPED                                                             0

  35.  

  36. #define m_pPlayer                                                               41

  37. #define m_flNextPrimaryAttack                                   46

  38. #define m_flNextSecondaryAttack                                 47

  39.  

  40. #define m_pActiveItem                                                   373

  41.  

  42. #define LINUXDIFF                                                               5

  43. #define LINUXDIFFWEAP                                                   4

  44.  

  45. #define get_user_weapon_entity(%1)                              get_pdata_cbase(%1, m_pActiveItem, LINUXDIFF)

  46. #define get_weapon_owner(%1)                                    get_pdata_cbase(%1, m_pPlayer, LINUXDIFFWEAP)

  47. #define get_weapon_nextprimatt(%1)                              get_pdata_float(%1, m_flNextPrimaryAttack, LINUXDIFFWEAP)

  48. #define get_weapon_nextsecatt(%1)                               get_pdata_float(%1, m_flNextSecondaryAttack, LINUXDIFFWEAP)

  49. #define set_weapon_nextprimatt(%1,%2)                   set_pdata_float(%1, m_flNextPrimaryAttack, %2, LINUXDIFFWEAP)

  50. #define set_weapon_nextsecatt(%1,%2)                    set_pdata_float(%1, m_flNextSecondaryAttack, %2, LINUXDIFFWEAP)

  51.  

  52. #define register_menu(%1,%2,%3)                                 register_menucmd(register_menuid(%1), %2, %3)

  53.  

  54. #define MENU_KNIFES_KEYS                                                MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_9 | MENU_KEY_0

  55. #define MENU_KNIFES                                                             "/knife"

  56.  

  57. new PSZ_knife[33 char]

  58.  

  59. new Float:ARRAY_knife_speed[10]

  60. new Float:ARRAY_knife_grav[10]

  61. new Float:ARRAY_knife_jump[10]

  62. new Float:ARRAY_knife_knock[10]

  63. new Float:ARRAY_knife_dmg[10]

  64. new Float:ARRAY_knife_primattrate[10]

  65. new Float:ARRAY_knife_secattrate[10]

  66. new ARRAY_knife_flags[10]

  67. new ARRAY_knife_hitsounds[10]

  68. new ARRAY_knife_slashsounds[10]

  69. new ARRAY_knife_name[10][64]

  70. new ARRAY_knife_desc[10][64]

  71. new ARRAY_knife_model_v[10][64]

  72. new ARRAY_knife_model_p[10][64]

  73. new ARRAY_knife_sound_deploy[10][64]

  74. new ARRAY_knife_sound_hit[10][4][64]

  75. new ARRAY_knife_sound_hitwall[10][64]

  76. new ARRAY_knife_sound_slash[10][2][64]

  77. new ARRAY_knife_sound_stab[10][64]

  78. new ARRAY_knife_saved_authid[1024][32]

  79. new ARRAY_knife_saved_id[1024]

  80.  

  81. new INT_knifes_total

  82. new INT_knifes_total_saved

  83.  

  84. new knife

  85.  

  86. public plugin_precache()

  87. {

  88.         register_srvcmd("register_knife", "SRVCMD__register_knife")

  89.        

  90.         server_cmd("exec addons/amxmodx/configs/cso_knifes.cfg")

  91.         server_exec()

  92. }

  93.  

  94. public SRVCMD__register_knife()

  95. {

  96.         new data[17][64]

  97.         read_argv(1, data[0], 63)

  98.         read_argv(2, data[1], 63)

  99.         read_argv(3, data[2], 63)

  100.         read_argv(4, data[3], 63)

  101.         read_argv(5, data[4], 63)

  102.         read_argv(6, data[5], 63)

  103.         read_argv(7, data[6], 63)

  104.         read_argv(8, data[7], 63)

  105.         read_argv(9, data[8], 63)

  106.         read_argv(10, data[9], 63)

  107.         read_argv(11, data[10], 63)

  108.         read_argv(12, data[11], 63)

  109.         read_argv(13, data[12], 63)

  110.         read_argv(14, data[13], 63)

  111.         read_argv(15, data[14], 63)

  112.         read_argv(16, data[15], 63)

  113.         read_argv(17, data[16], 63)

  114.        

  115.         for (new i = 0; i < 17; i++) remove_quotes(data[i])

  116.        

  117.         formatex(KNIFE_NAME, 63, data[0])

  118.         formatex(KNIFE_DESC, 63, data[1])

  119.         KNIFE_SPEED = floatstr(data[2])

  120.         KNIFE_GRAV = floatstr(data[3])

  121.         KNIFE_JUMP = floatstr(data[4])

  122.         KNIFE_KNOCK = floatstr(data[5])

  123.         KNIFE_DMG = floatstr(data[6])

  124.         KNIFE_PRIMATTRATE = floatstr(data[7])

  125.         KNIFE_SECATTRATE = floatstr(data[8])

  126.         //if (data[9][0] > 0 KNIFE_FLAGS = read_flags(data[9]))

  127.        

  128.         formatex(KNIFE_MODEL_V, 63, data[10])

  129.         precache_model(KNIFE_MODEL_V)

  130.         formatex(KNIFE_MODEL_P, 63, data[11])

  131.         precache_model(KNIFE_MODEL_P)

  132.         formatex(KNIFE_SOUND_DEPLOY, 63, data[12])

  133.         precache_sound(KNIFE_SOUND_DEPLOY)

  134.         if (containi(data[13], ",") != -1)

  135.         {

  136.                 KNIFE_HITSOUNDS = 2

  137.                 strtok(data[13], KNIFE_SOUND_HIT(0), 63, KNIFE_SOUND_HIT(1), 63, ',')

  138.                 precache_sound(KNIFE_SOUND_HIT(0))

  139.                 precache_sound(KNIFE_SOUND_HIT(1))

  140.         }

  141.         else

  142.         {

  143.                 KNIFE_HITSOUNDS = 1

  144.                 formatex(KNIFE_SOUND_HIT(0), 63, data[13])

  145.                 precache_sound(KNIFE_SOUND_HIT(0))

  146.         }

  147.         formatex(KNIFE_SOUND_HITWALL, 63, data[14])

  148.         precache_sound(KNIFE_SOUND_HITWALL)

  149.         if (containi(data[15], ",") != -1)

  150.         {

  151.                 KNIFE_SLASHSOUNDS = 2

  152.                 strtok(data[15], KNIFE_SOUND_SLASH(0), 63, KNIFE_SOUND_SLASH(1), 63, ',')

  153.                 precache_sound(KNIFE_SOUND_SLASH(0))

  154.                 precache_sound(KNIFE_SOUND_SLASH(1))

  155.         }

  156.         else

  157.         {

  158.                 KNIFE_SLASHSOUNDS = 1

  159.                 formatex(KNIFE_SOUND_SLASH(0), 63, data[15])

  160.                 precache_sound(KNIFE_SOUND_SLASH(0))

  161.         }

  162.         formatex(KNIFE_SOUND_STAB, 63, data[16])

  163.         precache_sound(KNIFE_SOUND_STAB)

  164.        

  165.         KNIFES_TOTAL++

  166. }

  167.  

  168. public plugin_init()

  169. {

  170.         register_plugin("[CSO] Knifes", "Omega", "WPMG Team") //Pub version by VirTuaL ~` (xd)

  171.        

  172.         RegisterHam(Ham_Spawn,                                  "player",                       "CPlayer__Spawn_Post",                  1)

  173.         RegisterHam(Ham_Item_Deploy,                    "weapon_knife",         "CKNIFE__Deploy_Post",                  1)

  174.         RegisterHam(Ham_Use,                                    "func_tank",            "CStationary__Use_Post",                1)

  175.         RegisterHam(Ham_Use,                                    "func_tankmortar",      "CStationary__Use_Post",                1)

  176.         RegisterHam(Ham_Use,                                    "func_tankrocket",      "CStationary__Use_Post",                1)

  177.         RegisterHam(Ham_Use,                                    "func_tanklaser",       "CStationary__Use_Post",                1)

  178.         RegisterHam(Ham_Weapon_PrimaryAttack,   "weapon_knife",         "CKNIFE__PrimaryAttack_Post",   1)

  179.         RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife",         "CKNIFE__SecondaryAttack_Post", 1)

  180.         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage")

  181.         RegisterHam(Ham_TakeDamage,                             "player",                       "CPlayer__TakeDamage_Post",             1)

  182.         RegisterHam(Ham_Player_PreThink,                "player",                       "CPlayer__PreThink")

  183.        

  184.         register_forward(FM_EmitSound,                                                          "CEntity__EmitSound")

  185.        

  186.         register_srvcmd("load_knife", "SRVCMD__load_knife")

  187.         register_clcmd("say /knife", "CMD__knife")

  188.        

  189.         register_menu(MENU_KNIFES, MENU_KNIFES_KEYS, "MENU__Knifes")

  190. }

  191.  

  192. public plugin_cfg()

  193. {

  194.         server_cmd("exec addons/amxmodx/configs/zombieplague.cfg")

  195.         server_cmd("exec addons/amxmodx/configs/cso_knifes_saved.cfg")

  196.         server_exec()

  197. }

  198.  

  199. public client_putinserver(id)

  200. {

  201.         KNIFE_USER(id) = 0

  202.        

  203.         new authid[32]

  204.         get_user_authid(id, authid, 31)

  205.        

  206.         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1)

  207.        

  208.         for (new i = 0; i < KNIFES_TOTAL_SAVED; i++)

  209.         {

  210.                 if (equal(authid, KNIFE_SAVED_AUTHID))

  211.                 {

  212.                         new knife = KNIFE_SAVED_ID

  213.                         (KNIFE_FLAGS > 0) ? (get_user_flags(id) & KNIFE_FLAGS) ? (KNIFE_USER(id) = knife) : (KNIFE_USER(id) = 0) : (KNIFE_USER(id) = knife)

  214.                         break

  215.                 }

  216.         }

  217. }

  218.  

  219. public client_disconnect(id)

  220. {

  221.         new authid[32], i

  222.         get_user_authid(id, authid, 31)

  223.        

  224.         if (authid[5] != '_' || authid[6] == 'I') get_user_ip(id, authid, 31, 1)

  225.        

  226.         for (i = 0; i < KNIFES_TOTAL_SAVED; i++)

  227.         {

  228.                 if (equal(authid, KNIFE_SAVED_AUTHID))

  229.                 {

  230.                         KNIFE_SAVED_ID = KNIFE_USER(id)

  231.                         return

  232.                 }

  233.         }

  234.        

  235.         i = KNIFES_TOTAL_SAVED

  236.        

  237.         formatex(KNIFE_SAVED_AUTHID, 31, authid)

  238.         KNIFE_SAVED_ID = KNIFE_USER(id)

  239.         KNIFES_TOTAL_SAVED++

  240. }

  241.  

  242. public plugin_end()

  243. {

  244.         delete_file("addons/amxmodx/configs/cso_knifes_saved.cfg")

  245.        

  246.         new file, data[64], i

  247.         file = fopen("addons/amxmodx/configs/cso_knifes_saved.cfg", "at")

  248.        

  249.         for (i = 0; i < KNIFES_TOTAL_SAVED; i++)

  250.         {

  251.                 formatex(data, 63, "load_knife ^"%s^" ^"%d^"^n", KNIFE_SAVED_AUTHID, KNIFE_SAVED_ID)

  252.                 fputs(file, data)

  253.         }

  254.        

  255.         fclose(file)

  256. }

  257.  

  258. public SRVCMD__load_knife()

  259. {

  260.         new data[2][32], i

  261.         read_argv(1, data[0], 31)

  262.         read_argv(2, data[1], 31)

  263.         for (i = 0; i < 2; i++) remove_quotes(data[i])

  264.        

  265.         i = KNIFES_TOTAL_SAVED

  266.        

  267.         formatex(KNIFE_SAVED_AUTHID, 31, data[0])

  268.         KNIFE_SAVED_ID = str_to_num(data[1])

  269.         KNIFES_TOTAL_SAVED++

  270. }

  271.  

  272. public CPlayer__Spawn_Post(id)

  273. {

  274.         if (!is_user_alive(id)) return

  275.        

  276.         new entity = get_user_weapon_entity(id)

  277.        

  278.         if (!is_valid_ent(entity)) return

  279.         if (cs_get_weapon_id(entity) != CSW_KNIFE) return

  280.        

  281.         FUNC__replace_knife_models(id)

  282. }

  283.  

  284. public CKNIFE__Deploy_Post(entity)

  285. {

  286.         if (cs_get_weapon_id(entity) != CSW_KNIFE) return

  287.        

  288.         new id = get_weapon_owner(entity)

  289.        

  290.         FUNC__replace_knife_models(id)

  291. }

  292.  

  293. public CStationary__Use_Post(entity, caller, activator, use_type)

  294. {

  295.         if (use_type != USE_STOPPED) return

  296.         if (!is_user_connected(caller)) return

  297.         if (get_user_weapon(caller) != CSW_KNIFE) return

  298.        

  299.         FUNC__replace_knife_models(caller)

  300. }

  301.  

  302. public CPlayer__TakeDamage(victim, inflictor, attacker, Float:damage)

  303. {

  304.         if (inflictor != attacker || victim == attacker) return

  305.         if (!is_user_connected(attacker)) return

  306.         if (get_user_weapon(attacker) != CSW_KNIFE) return

  307.        

  308.         SetHamParamFloat(4, damage * KNIFE_DMG)

  309. }

  310.  

  311. public CPlayer__TakeDamage_Post(victim, inflictor, attacker, Float:damage)

  312. {

  313.         if (inflictor != attacker || victim == attacker) return

  314.         if (!is_user_connected(attacker)) return

  315.         if (get_user_weapon(attacker) != CSW_KNIFE) return

  316.        

  317.         client_print(attacker, print_center, "%d", floatround(damage, floatround_floor))

  318.        

  319.         new Float:velocity[3], Float:newvelocity[3]

  320.         entity_get_vector(victim, EV_VEC_velocity, velocity)

  321.        

  322.         new Float:victim_origin[3], Float:attacker_origin[3]

  323.         entity_get_vector(victim, EV_VEC_origin, victim_origin)

  324.         entity_get_vector(attacker, EV_VEC_origin, attacker_origin)

  325.        

  326.         newvelocity[0] = victim_origin[0] - attacker_origin[0]

  327.         newvelocity[1] = victim_origin[1] - attacker_origin[1]

  328.        

  329.         new Float:largestnum = 0.0

  330.        

  331.         if (0 <= floatcmp(floatabs(newvelocity[0]), floatabs(newvelocity[1])) <= 1)

  332.         {

  333.                 if (floatabs(newvelocity[0]) > 0) largestnum = floatabs(newvelocity[0])

  334.         }

  335.         else

  336.         {

  337.                 if (floatabs(newvelocity[1]) > 0) largestnum = floatabs(newvelocity[1])

  338.         }

  339.        

  340.         newvelocity[0] /= largestnum

  341.         newvelocity[1] /= largestnum

  342.        

  343.         velocity[0] = newvelocity[0] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin)

  344.         velocity[1] = newvelocity[1] * KNIFE_KNOCK * 3000 / get_distance_f(victim_origin, attacker_origin)

  345.         if(newvelocity[0] <= 20.0 || newvelocity[1] <= 20.0)

  346.                 newvelocity[2] = random_float(200.0 , 275.0)

  347.        

  348.         newvelocity[0] += velocity[0]

  349.         newvelocity[1] += velocity[1]

  350.         entity_set_vector(victim, EV_VEC_velocity, newvelocity)

  351. }

  352.  

  353. public CPlayer__PreThink(id)

  354. {

  355.         if (!is_user_alive(id)) return

  356.         if (get_user_weapon(id) != CSW_KNIFE)

  357.        

  358.         set_user_maxspeed(id, KNIFE_SPEED)

  359.         set_user_gravity(id, KNIFE_GRAV)

  360.        

  361.         if (!(entity_get_int(id, EV_INT_button) & IN_JUMP)) return

  362.         if (entity_get_int(id, EV_INT_oldbuttons) & IN_JUMP) return

  363.        

  364.         new flags = entity_get_int(id, EV_INT_flags)

  365.        

  366.         if (!(flags & FL_ONGROUND)) return

  367.         if (flags & FL_WATERJUMP) return

  368.         if (entity_get_int(id, EV_INT_waterlevel) > 1) return

  369.        

  370.         new Float:velocity[3]

  371.         entity_get_vector(id, EV_VEC_velocity, velocity)

  372.        

  373.         velocity[2] += KNIFE_JUMP

  374.         entity_set_vector(id, EV_VEC_velocity, velocity)

  375.         entity_set_int(id, EV_INT_gaitsequence, 6)

  376. }

  377.  

  378. public CEntity__EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)

  379. {

  380.         if (!is_user_connected(id)) return FMRES_IGNORED

  381.        

  382.         if (sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')

  383.         {

  384.                 if (sample[14] == 'd') emit_sound(id, channel, KNIFE_SOUND_DEPLOY, volume, attn, flags, pitch)

  385.                 else if (sample[14] == 'h')

  386.                 {

  387.                         if (sample[17] == 'w') emit_sound(id, channel, KNIFE_SOUND_HITWALL, volume, attn, flags, pitch)

  388.                         else emit_sound(id, channel, (KNIFE_HITSOUNDS > 1) ? KNIFE_SOUND_HIT(random_num(0, 1)) : KNIFE_SOUND_HIT(0), volume, attn, flags, pitch)

  389.                 }

  390.                 else

  391.                 {

  392.                         if (sample[15] == 'l') emit_sound(id, channel, (KNIFE_SLASHSOUNDS > 1) ? KNIFE_SOUND_SLASH(random_num(0, 1)) : KNIFE_SOUND_SLASH(0), volume, attn, flags, pitch)

  393.                         else emit_sound(id, channel, KNIFE_SOUND_STAB, volume, attn, flags, pitch)

  394.                 }

  395.                 return FMRES_SUPERCEDE

  396.         }

  397.        

  398.         return FMRES_IGNORED

  399. }

  400.  

  401. public CMD__knife(id)

  402. {

  403.         SHOWMENU__Knifes(id)

  404. }

  405.  

  406. public SHOWMENU__Knifes(id)

  407. {

  408.         new len, menu[500], keys, flags

  409.         len += formatex(menu, 499, "\yValassz kest \r[\yPUB VERSION BY VirTuaL~`\r]:^n^n")

  410.         flags = get_user_flags(id)

  411.        

  412.         for (new knife = 0; knife < KNIFES_TOTAL; knife++)

  413.         {

  414.                 if (KNIFE_FLAGS)

  415.                 {

  416.                         if (flags & KNIFE_FLAGS)

  417.                         {

  418.                                 keys |= (1 << knife)

  419.                                 if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  420.                                 else len += formatex(menu[len], 499 - len, "\r%d.\w %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  421.                         }

  422.                         else

  423.                                 len += formatex(menu[len], 499 - len, "\d%d. %s \r%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  424.                 }

  425.                 else

  426.                 {

  427.                         keys |= (1 << knife)

  428.                         if (KNIFE_USER(id) == knife) len += formatex(menu[len], 499 - len, "\r%d.\d %s %s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  429.                         else len += formatex(menu[len], 499 - len, "\r%d.\w %s \w%s^n", knife + 1, KNIFE_NAME, KNIFE_DESC)

  430.                 }

  431.         }

  432.        

  433.         keys |= MENU_KEY_0

  434.         len += formatex(menu[len], 499 - len, "^n\r0.\w Выход")

  435.        

  436.         return show_menu(id, keys, menu, -1, MENU_KNIFES)

  437. }

  438.  

  439. public MENU__Knifes(id, key)

  440. {

  441.         if (key != 9)

  442.                 if (KNIFE_USER(id) != key)

  443.                 {

  444.                         KNIFE_USER(id) = key

  445.                         if (is_user_alive(id))

  446.                                 if (get_user_weapon(id) == CSW_KNIFE)

  447.                                         FUNC__replace_knife_models(id)

  448.                 }

  449.         return PLUGIN_HANDLED

  450. }

  451.  

  452. public FUNC__replace_knife_models(id)

  453. {

  454.        

  455.         entity_set_string(id, EV_SZ_viewmodel, KNIFE_MODEL_V)

  456.         entity_set_string(id, EV_SZ_weaponmodel, KNIFE_MODEL_P)

  457. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZP-s kések
HozzászólásElküldve:2012.07.27. 07:25 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Kód:
  1. server_cmd("exec addons/amxmodx/configs/zombieplague.cfg")

  2.             server_cmd("exec addons/amxmodx/configs/cso_knifes_saved.cfg")


Ezmi? :) Kivettem.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZP-s kések
HozzászólásElküldve:2012.07.27. 10:22 
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
Xd ja az benne maradt :)


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


Ki van itt

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