hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 23:26



Jelenlévő felhasználók

Jelenleg 229 felhasználó van jelen :: 1 regisztrált, 1 rejtett és 227 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  [ 6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Zombi élet
HozzászólásElküldve: 2016.04.04. 10:41 
Offline
Senior Tag

Csatlakozott: 2016.01.17. 07:11
Hozzászólások: 296
Megköszönt másnak: 60 alkalommal
Megköszönték neki: 11 alkalommal
Hali!

Itt hol tudom be állítani a zombi életét?
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <fakemeta_util>
  4. #include <engine>
  5. #include <zombieplague>
  6. #include <fun>
  7. #include <hero>
  8.  
  9. #define PLUGIN "NST Zombie Class Deimos"
  10. #define VERSION "1.0"
  11. #define AUTHOR "NST"
  12.  
  13. const Float:zclass_speed = 255.0
  14. const Float:zclass_gravity = 0.8
  15.  
  16. new const light_classname[] = "nst_deimos_skill"
  17.  
  18. new class_deimos[33]
  19. const skill_dmg = 300
  20. const Float:skill_time_wait = 7.0
  21. new const sound_skill_start[] = "zombie_plague/deimos_skill_start.wav"
  22. new const sound_skill_hit[] = "zombie_plague/deimos_skill_hit2.wav"
  23. new sprites_exp_index, sprites_trail_index
  24.  
  25. new g_wait[33]
  26. new g_useskill[33]
  27.  
  28. new g_maxplayers
  29. new g_msgSayText, g_msgScreenFade, g_msgScreenShake
  30. new g_roundend, index_deimos
  31.  
  32. const WPN_NOT_DROP = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
  33.  
  34. enum (+= 100)
  35. {
  36.     TASK_WAIT = 2000,
  37.     TASK_ATTACK,
  38.     TASK_BOT_USE_SKILL,
  39.     TASK_USE_SKILL
  40. }
  41.  
  42. #define ID_WAIT (taskid - TASK_WAIT)
  43. #define ID_ATTACK (taskid - TASK_ATTACK)
  44. #define ID_BOT_USE_SKILL (taskid - TASK_BOT_USE_SKILL)
  45. #define ID_USE_SKILL (taskid - TASK_USE_SKILL)
  46. new DEIMOS_V_MODEL[64] = "models/zombie_plague/v_knife_deimos_zombi.mdl"
  47. new const g_vgrenade[] = "models/zombie_plague/bomb/v_zombibomb_deimos.mdl"
  48. const UNIT_SECOND = (1<<12)
  49. const FFADE_IN = 0x0000
  50. const m_flTimeWeaponIdle = 48
  51. const m_flNextAttack = 83
  52.  
  53. public plugin_precache()
  54. {
  55.     sprites_exp_index = precache_model("sprites/deimosexp.spr")
  56.     sprites_trail_index = precache_model("sprites/laserbeam.spr")
  57.    
  58.     precache_sound(sound_skill_start)
  59.     precache_sound(sound_skill_hit)
  60.     index_deimos = precache_model("models/player/deimos_zombi_origin/deimos_zombi_origin.mdl")
  61.     precache_model(DEIMOS_V_MODEL)
  62.     precache_model(g_vgrenade)
  63. }
  64.  
  65. public plugin_init()
  66. {
  67.     register_plugin(PLUGIN, VERSION, AUTHOR)
  68.    
  69.     register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  70.     register_event("DeathMsg", "Death", "a")
  71.     register_logevent("logevent_round_end", 2, "1=Round_End")
  72.     register_event("CurWeapon","EventCurWeapon","be","1=1")
  73.     register_forward(FM_CmdStart, "fw_CmdStart")
  74.     register_forward(FM_Touch, "fw_Touch")
  75.  
  76.     register_clcmd("drop", "use_skill")
  77.    
  78.     g_maxplayers = get_maxplayers()
  79.     g_msgSayText = get_user_msgid("SayText")
  80.     g_msgScreenFade = get_user_msgid("ScreenFade")
  81.     g_msgScreenShake = get_user_msgid("ScreenShake")
  82. }
  83.  
  84. public plugin_natives()
  85. {
  86.     register_native("give_deimos", "native_give_deimos", 1)
  87.     register_native("deimos_reset_value_player", "native_deimos_reset_value", 1)
  88. }
  89.  
  90. public native_give_deimos(id)
  91. {
  92.         give_deimos(id)
  93. }
  94.  
  95. public native_deimos_reset_value(id)
  96. {
  97.         deimos_reset_value_player(id)
  98. }
  99.  
  100.  
  101. public client_putinserver(id)
  102. {
  103.     deimos_reset_value_player(id)
  104. }
  105.  
  106. public client_disconnect(id)
  107. {
  108.     deimos_reset_value_player(id)
  109. }
  110.  
  111. public event_round_start()
  112. {
  113.     g_roundend = 0
  114.    
  115.     for (new id=1; id<=g_maxplayers; id++)
  116.     {
  117.         if (!is_user_connected(id)) continue;
  118.        
  119.         deimos_reset_value_player(id)
  120.     }
  121. }
  122.  
  123. public logevent_round_end()
  124. {
  125.     g_roundend = 1
  126. }
  127.  
  128. public Death()
  129. {
  130.     new victim = read_data(2)
  131.    
  132.     deimos_reset_value_player(victim)
  133. }
  134.  
  135. public give_deimos(id)
  136. {
  137.     deimos_reset_value_player(id)
  138.     class_deimos[id] = true
  139.  
  140.     fm_strip_user_weapons(id)
  141.     fm_give_item(id, "weapon_knife")
  142.     zp_override_user_model(id, "deimos_zombi_origin")
  143.     set_pdata_int(id, 491, index_deimos, 5)
  144.     set_user_maxspeed(id, zclass_speed)
  145.     set_user_gravity(id, zclass_gravity)
  146.     zp_colored_print(id, "^x04[Zombie: The Hero]^x01 Gomb^x03 [G]^x01 hogy használd a fény tamadást")
  147. }
  148.  
  149. public zp_user_humanized_post(id)
  150. {
  151.     deimos_reset_value_player(id)
  152. }
  153.  
  154. public use_skill(id)
  155. {
  156.     if (g_roundend) return PLUGIN_CONTINUE
  157.    
  158.     if (!is_user_alive(id) || !zp_get_user_zombie(id) || zp_get_user_nemesis(id)) return PLUGIN_CONTINUE
  159.    
  160.     new health = get_user_health(id) - skill_dmg
  161.    
  162.     if (class_deimos[id] && !g_wait[id] && health>0 && get_user_weapon(id)==CSW_KNIFE)
  163.     {
  164.         g_useskill[id] = 1
  165.         g_wait[id] = 1
  166.        
  167.         fm_set_user_health(id, health)
  168.         set_task(skill_time_wait, "RemoveWait", id+TASK_WAIT)
  169.        
  170.         return PLUGIN_HANDLED
  171.     }
  172.    
  173.     return PLUGIN_CONTINUE
  174. }
  175.  
  176. public bot_use_skill(taskid)
  177. {
  178.     new id = ID_BOT_USE_SKILL
  179.     if (!is_user_alive(id)) return;
  180.  
  181.     use_skill(id)
  182.    
  183.     set_task(random_float(5.0,15.0), "bot_use_skill", id+TASK_BOT_USE_SKILL)
  184. }
  185.  
  186. public task_use_skill(taskid)
  187. {
  188.     new id = ID_USE_SKILL
  189.    
  190.     play_weapon_anim(id, 8)
  191.     set_weapons_timeidle(id, skill_time_wait)
  192.     set_player_nextattack(id, 0.5)
  193.     PlayEmitSound(id, sound_skill_start)
  194.     entity_set_int(id, EV_INT_sequence, 10)
  195.     set_task(0.5, "launch_light", id+TASK_ATTACK)
  196. }
  197.  
  198. public launch_light(taskid)
  199. {
  200.     new id = ID_ATTACK
  201.  
  202.     if (!is_user_alive(id)) return;
  203.    
  204.     new Float:vecAngle[3],Float:vecOrigin[3],Float:vecVelocity[3],Float:vecForward[3]
  205.     new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
  206.     fm_get_user_startpos(id,5.0,2.0,-1.0,vecOrigin)
  207.     pev(id,pev_angles,vecAngle)
  208.     engfunc(EngFunc_MakeVectors,vecAngle)
  209.     global_get(glb_v_forward,vecForward)
  210.     velocity_by_aim(id,2000,vecVelocity)
  211.     set_pev(ent,pev_origin,vecOrigin)
  212.     set_pev(ent,pev_angles,vecAngle)
  213.     set_pev(ent,pev_classname,light_classname)
  214.     set_pev(ent,pev_movetype,MOVETYPE_FLY)
  215.     set_pev(ent,pev_solid,SOLID_BBOX)
  216.     engfunc(EngFunc_SetSize,ent,{-1.0,-1.0,-1.0},{1.0,1.0,1.0})
  217.     engfunc(EngFunc_SetModel,ent,"models/w_hegrenade.mdl")
  218.     set_pev(ent,pev_owner,id)
  219.     set_pev(ent,pev_velocity,vecVelocity)
  220.    
  221.     set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
  222.    
  223.     message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  224.     write_byte(TE_BEAMFOLLOW)
  225.     write_short(ent)
  226.     write_short(sprites_trail_index)
  227.     write_byte(5)
  228.     write_byte(3)
  229.     write_byte(209)
  230.     write_byte(120)
  231.     write_byte(9)
  232.     write_byte(200)
  233.     message_end()
  234.    
  235.     return;
  236. }
  237.  
  238. public EventCurWeapon(id)
  239. {
  240.     if(!is_user_alive(id)) return PLUGIN_CONTINUE;
  241.     replace_weapon_models(id, read_data(2))
  242.     if(class_deimos[id]) set_user_maxspeed(id, zclass_speed)
  243.    
  244.     new weap = get_user_weapon(id)
  245.    
  246.     if(weap == CSW_SMOKEGRENADE && class_deimos[id] && zp_get_user_zombie(id))
  247.     {
  248.         entity_set_string(id, EV_SZ_viewmodel, g_vgrenade)
  249.     }
  250.    
  251.     return PLUGIN_HANDLED
  252. }
  253.  
  254. public fw_Touch(ent, victim)
  255. {
  256.     if (!pev_valid(ent)) return FMRES_IGNORED
  257.    
  258.     new EntClassName[32]
  259.     entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName))
  260.    
  261.     if (equal(EntClassName, light_classname))
  262.     {
  263.         light_exp(ent, victim)
  264.        
  265.         return FMRES_IGNORED
  266.     }
  267.    
  268.     return FMRES_IGNORED
  269. }
  270.  
  271. light_exp(ent, victim)
  272. {
  273.     if (!pev_valid(ent)) return;
  274.    
  275.     if (is_user_alive(victim) && !zp_get_user_zombie(victim) && !zp_get_user_survivor(victim))
  276.     {
  277.         new wpn, wpnname[32]
  278.         wpn = get_user_weapon(victim)
  279.         if(!(WPN_NOT_DROP & (1<<wpn)) && get_weaponname(wpn, wpnname, charsmax(wpnname)) && !revo_get_user_hero(victim))
  280.         {
  281.             engclient_cmd(victim, "drop", wpnname)
  282.         }
  283.        
  284.         message_begin(MSG_ONE, g_msgScreenFade, _, victim)
  285.         write_short(UNIT_SECOND)
  286.         write_short(0)
  287.         write_short(FFADE_IN)
  288.         write_byte(209)
  289.         write_byte(120)
  290.         write_byte(9)
  291.         write_byte (255)
  292.         message_end()
  293.    
  294.         message_begin(MSG_ONE, g_msgScreenShake, _, victim)
  295.         write_short(UNIT_SECOND*4)
  296.         write_short(UNIT_SECOND*2)
  297.         write_short(UNIT_SECOND*10)
  298.         message_end()
  299.     }
  300.    
  301.     PlayEmitSound(ent, sound_skill_hit)
  302.    
  303.     static Float:origin[3]
  304.     pev(ent, pev_origin, origin)
  305.     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  306.     write_byte(TE_EXPLOSION)
  307.     write_coord(floatround(origin[0]))
  308.     write_coord(floatround(origin[1]))
  309.     write_coord(floatround(origin[2]))
  310.     write_short(sprites_exp_index)
  311.     write_byte(40)
  312.     write_byte(30)
  313.     write_byte(14)
  314.     message_end()
  315.    
  316.     remove_entity(ent)
  317. }
  318.  
  319. public RemoveWait(taskid)
  320. {
  321.     new id = ID_WAIT
  322.     g_wait[id] = 0
  323.    
  324.     zp_colored_print(id, "^x04[Zombie: The Hero]^x01 A^x04 Fény tamadás^x01 készen áll.")
  325. }
  326.  
  327. public fw_CmdStart(id, uc_handle, seed)
  328. {
  329.     if (!is_user_alive(id) || !zp_get_user_zombie(id)) return FMRES_IGNORED
  330.    
  331.     if (class_deimos[id])
  332.     {
  333.         if (g_useskill[id])
  334.         {
  335.             set_uc(uc_handle, UC_Buttons, IN_ATTACK2)
  336.             g_useskill[id] = 0
  337.             remove_task(id+TASK_USE_SKILL)
  338.             set_task(0.1, "task_use_skill", id+TASK_USE_SKILL)
  339.         }
  340.     }
  341.    
  342.     return FMRES_IGNORED
  343. }
  344.  
  345. PlayEmitSound(id, const sound[])
  346. {
  347.     emit_sound(id, CHAN_WEAPON, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
  348. }
  349.  
  350. play_weapon_anim(player, anim)
  351. {
  352.     set_pev(player, pev_weaponanim, anim)
  353.     message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
  354.     write_byte(anim)
  355.     write_byte(pev(player, pev_body))
  356.     message_end()
  357. }
  358.  
  359. get_weapon_ent(id, weaponid)
  360. {
  361.     static wname[32], weapon_ent
  362.     get_weaponname(weaponid, wname, charsmax(wname))
  363.     weapon_ent = find_ent_by_owner(-1, wname, id)
  364.     return weapon_ent
  365. }
  366.  
  367. set_weapons_timeidle(id, Float:timeidle)
  368. {
  369.     new entwpn = get_weapon_ent(id, get_user_weapon(id))
  370.     if (pev_valid(entwpn)) set_pdata_float(entwpn, m_flTimeWeaponIdle, timeidle+3.0, 4)
  371. }
  372.  
  373. set_player_nextattack(id, Float:nexttime)
  374. {
  375.     set_pdata_float(id, m_flNextAttack, nexttime, 4)
  376. }
  377.  
  378. fm_get_user_startpos(id,Float:forw,Float:right,Float:up,Float:vStart[])
  379. {
  380.     new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
  381.    
  382.     pev(id, pev_origin, vOrigin)
  383.     pev(id, pev_v_angle, vAngle)
  384.    
  385.     engfunc(EngFunc_MakeVectors, vAngle)
  386.    
  387.     global_get(glb_v_forward, vForward)
  388.     global_get(glb_v_right, vRight)
  389.     global_get(glb_v_up, vUp)
  390.    
  391.     vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
  392.     vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
  393.     vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
  394. }
  395.  
  396. replace_weapon_models(id, weaponid)
  397. {
  398. switch (weaponid)
  399. {
  400.     case CSW_KNIFE:
  401.     {
  402.         if(!zp_get_user_zombie(id))
  403.             return;
  404.            
  405.         if(class_deimos[id])
  406.             {
  407.                 set_pev(id, pev_viewmodel2, DEIMOS_V_MODEL)
  408.                 set_pev(id, pev_weaponmodel2, "")
  409.             }
  410.         }
  411.     }
  412. }
  413.  
  414. deimos_reset_value_player(id)
  415. {
  416.     g_wait[id] = 0
  417.     g_useskill[id] = 0
  418.     class_deimos[id] = false
  419.     remove_task(id+TASK_WAIT)
  420.     remove_task(id+TASK_ATTACK)
  421.     remove_task(id+TASK_BOT_USE_SKILL)
  422.     remove_task(id+TASK_USE_SKILL)
  423. }
  424.  
  425. stock fm_strip_user_weapons2(id)
  426. {
  427.     static ent
  428.     ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
  429.     if (!pev_valid(ent)) return;
  430.    
  431.     dllfunc(DLLFunc_Spawn, ent)
  432.     dllfunc(DLLFunc_Use, ent, id)
  433.     engfunc(EngFunc_RemoveEntity, ent)
  434. }
  435.  
  436. zp_colored_print(target, const message[], any:...)
  437. {
  438.     static buffer[512], i, argscount
  439.     argscount = numargs()
  440.    
  441.     if (!target)
  442.     {
  443.         static player
  444.         for (player = 1; player <= g_maxplayers; player++)
  445.         {
  446.             if (!is_user_connected(player))
  447.                 continue;
  448.            
  449.             static changed[5], changedcount
  450.             changedcount = 0
  451.            
  452.             for (i = 2; i < argscount; i++)
  453.             {
  454.                 if (getarg(i) == LANG_PLAYER)
  455.                 {
  456.                     setarg(i, 0, player)
  457.                     changed[changedcount] = i
  458.                     changedcount++
  459.                 }
  460.             }
  461.            
  462.             vformat(buffer, charsmax(buffer), message, 3)
  463.            
  464.             message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
  465.             write_byte(player)
  466.             write_string(buffer)
  467.             message_end()
  468.            
  469.             for (i = 0; i < changedcount; i++)
  470.                 setarg(changed[i], 0, LANG_PLAYER)
  471.         }
  472.     }
  473.     else
  474.     {
  475.         vformat(buffer, charsmax(buffer), message, 3)
  476.        
  477.         message_begin(MSG_ONE, g_msgSayText, _, target)
  478.         write_byte(target)
  479.         write_string(buffer)
  480.         message_end()
  481.     }
  482. }

_________________
Global Offensive: (50%)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombi élet
HozzászólásElküldve: 2016.04.04. 11:02 
Offline
Nagyúr
Avatar

Csatlakozott: 2014.08.24. 18:28
Hozzászólások: 584
Megköszönt másnak: 122 alkalommal
Megköszönték neki: 120 alkalommal
Egyáltalán nem találtam benne semmit, ami erre szolgálna, de még a zombi fajt regisztráló natív használatát sem leltem benne. :D
Megoldás: Beleírod magadnak. ;)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombi élet
HozzászólásElküldve: 2016.04.04. 11:04 
Offline
Senior Tag

Csatlakozott: 2016.01.17. 07:11
Hozzászólások: 296
Megköszönt másnak: 60 alkalommal
Megköszönték neki: 11 alkalommal
LyleChriss írta:
Egyáltalán nem találtam benne semmit, ami erre szolgálna, de még a zombi fajt regisztráló natív használatát sem leltem benne. :D
Megoldás: Beleírod magadnak. ;)

És hogy? :D

_________________
Global Offensive: (50%)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombi élet
HozzászólásElküldve: 2016.04.04. 11:07 
Offline
Nagyúr
Avatar

Csatlakozott: 2014.08.24. 18:28
Hozzászólások: 584
Megköszönt másnak: 122 alkalommal
Megköszönték neki: 120 alkalommal
Kód:
public give_deimos(id)
{
    deimos_reset_value_player(id)
    class_deimos[id] = true
 
    fm_strip_user_weapons(id)
    fm_give_item(id, "weapon_knife")
    zp_override_user_model(id, "deimos_zombi_origin")
    set_pdata_int(id, 491, index_deimos, 5)
    set_user_maxspeed(id, zclass_speed)
    set_user_gravity(id, zclass_gravity)
    set_user_health(id, ide_a_hp)
    zp_colored_print(id, "^x04[Zombie: The Hero]^x01 Gomb^x03 [G]^x01 hogy használd a fény tamadást")
}


Szerintem ez megteszi, végül is akkor válik zombivá (elvileg).

Ők köszönték meg LyleChriss nek ezt a hozzászólást: SZILARD (2016.04.04. 11:13)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombi élet
HozzászólásElküldve: 2016.04.04. 11:43 
Offline
Senior Tag

Csatlakozott: 2016.01.17. 07:11
Hozzászólások: 296
Megköszönt másnak: 60 alkalommal
Megköszönték neki: 11 alkalommal
Nem jó :(

_________________
Global Offensive: (50%)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Zombi élet
HozzászólásElküldve: 2016.04.05. 18:24 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2011.09.18. 13:01
Hozzászólások: 4270
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 513 alkalommal
Amugy megy is a zombi? Mert elmeletileg ha zombi plague-t hasznalsz regisztralni kellene utana beirja az adatokat zp_zombieclass.ini -be vagy hogy irjak azutan tudod alitgatni a dolgokat.

_________________
Idk. Csak ugy funbooo.
Kép


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


Ki van itt

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