hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 230 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 229 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  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Smoker Zombi
HozzászólásElküldve: 2018.06.17. 19:28 
Offline
Beavatott
Avatar

Csatlakozott: 2013.11.24. 19:19
Hozzászólások: 76
Megköszönt másnak: 24 alkalommal
Hali

Annyit kéne csinálni hogy ki szedni a menüt ami mindig felhoz
és bele írni hogy e betűvel lehessen húzni


Csatolmányok:
smoker-zombi.sma [14.27 KiB]
Letöltve 109 alkalommal.
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Smoker Zombi
HozzászólásElküldve: 2018.06.17. 19:44 
Offline
Jómunkásember
Avatar

Csatlakozott: 2016.02.10. 12:46
Hozzászólások: 429
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 157 alkalommal
Szia. Parancsolj:
  1. #include <amxmodx>
  2. #include <zombieplague>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5. #include <engine>
  6.  
  7. #define PLUGIN "Smoker"
  8. #define VERSION "1.0"
  9. #define AUTHOR "sfGOD"
  10.  
  11. #pragma tabsize 0
  12.  
  13. //Main Class, modelT & Sprite Beam
  14. new g_zclass_smoker, g_Line
  15. //Sounds
  16. new g_sndMiss[] = "interclaps-zm-hangok/interclaps-zm-smoker-1.wav"
  17. new g_sndDrag[] = "interclaps-zm-hangok/interclaps-zm-smoker-2.wav"
  18. //Some vars
  19. new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33]
  20. new Float:g_lastHook[33]
  21. new bool: g_drag_i[33] = false
  22. //Cvars
  23. new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor, cvar_headstop;
  24. //Smoker Atributes
  25. new const zclass_name[] = { "Smoker" }
  26. new const zclass_info[] = { "Huzni tud" }
  27. new const zclass_model[] = { "interclaps-zm-smoker" }
  28. new const zclass_clawmodel[] = { "interclaps-zm-smoker-kes.mdl" }
  29. const zclass_health = 2000
  30. const zclass_speed = 240
  31. const Float:zclass_gravity = 0.9
  32. const Float:zclass_knockback = 1.0
  33.  
  34. public plugin_init()
  35. {    
  36.     // Added by nullbyte
  37.     register_dictionary("interclaps-zm-smoker.txt");
  38.     cvar_headstop = register_cvar("zp_smoker_headstop", "0");
  39.     RegisterHam(Ham_TraceAttack, "player", "forward_trace_attack");
  40.    
  41.     cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "150")
  42.     cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "15")
  43.     cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
  44.     cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "350")
  45.     cvar_mates = register_cvar("zp_smoker_mates", "0")
  46.     cvar_extrahook = register_cvar("zp_smoker_extrahook", "2")
  47.     cvar_unb2move = register_cvar("zp_smoker_unable_move", "0")
  48.     cvar_nemesis = register_cvar("zp_smoker_nemesis", "0")
  49.     cvar_survivor = register_cvar("zp_smoker_survivor", "1")
  50.     register_event("ResetHUD", "newSpawn", "b")
  51.     register_event("DeathMsg", "smoker_death", "a")
  52.     register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
  53.     RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  54.     register_clcmd("+drag","drag_start", ADMIN_USER, "bind ^"key^" ^"+drag^"")
  55.     register_clcmd("-drag","drag_end")
  56. }
  57. public plugin_precache()
  58. {
  59.     register_plugin(PLUGIN, VERSION, AUTHOR)
  60.     g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
  61.     precache_sound(g_sndDrag)
  62.     precache_sound(g_sndMiss)
  63.     g_Line = precache_model("sprites/zbeam4.spr")    
  64. }
  65.  
  66. public forward_trace_attack()
  67. {
  68.     if(!get_pcvar_num(cvar_headstop))
  69.         return PLUGIN_HANDLED;
  70.  
  71.     new victim = read_data(1);
  72.     new attacker = read_data(2);
  73.     new where = read_data(5);
  74.    
  75.     if(zp_get_user_zombie(victim) && !zp_get_user_zombie(attacker) && (get_tr2(where, TR_iHitgroup) == HIT_HEAD))
  76.     {
  77.         drag_end(victim);
  78.     }
  79.     return PLUGIN_HANDLED;
  80. }
  81.  
  82. public zp_user_infected_post(id, infector)
  83. {
  84.     if ((zp_get_user_zombie_class(infector) == g_zclass_smoker) && (get_pcvar_num(cvar_extrahook) > 0))
  85.     {
  86.         g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
  87.         set_hudmessage(255, 0, 0, -1.0, 0.45, 0, 0.0, 3.0, 0.01, 0.01, -1)
  88.         show_hudmessage(infector, "+%d drag%s!", get_pcvar_num(cvar_extrahook), (get_pcvar_num(cvar_extrahook) < 2) ? "" : "s")
  89.     }
  90.    
  91.     if (zp_get_user_zombie_class(id) == g_zclass_smoker)
  92.         g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
  93. }
  94.  
  95. public newSpawn(id)
  96. {
  97.     if (g_hooked[id])
  98.         drag_end(id)
  99. }
  100.  
  101. public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
  102. {        
  103.     if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker) && !g_drag_i[id]) {
  104.        
  105.         static Float:cdown
  106.         cdown = get_pcvar_float(cvar_cooldown)
  107.  
  108.         if (!is_user_alive(id)) {
  109.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_DEAD");
  110.             return PLUGIN_HANDLED
  111.         }
  112.  
  113.         if (g_hooksLeft[id] <= 0) {
  114.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_ANYMORE");
  115.             return PLUGIN_HANDLED
  116.         }
  117.  
  118.         if (get_gametime() - g_lastHook[id] < cdown) {
  119.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_WAIT", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]));
  120.             return PLUGIN_HANDLED
  121.         }
  122.        
  123.         new hooktarget, body
  124.         get_user_aiming(id, hooktarget, body)
  125.        
  126.         if (zp_get_user_nemesis(id) && get_pcvar_num(cvar_nemesis) == 0) {
  127.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_NEMESIS");
  128.             return PLUGIN_HANDLED
  129.         }
  130.        
  131.         if (is_user_alive(hooktarget)) {
  132.             if (!zp_get_user_zombie(hooktarget))
  133.                 {
  134.                     if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
  135.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_SURVIVOR");
  136.                         return PLUGIN_HANDLED
  137.                     }
  138.                    
  139.                     g_hooked[id] = hooktarget
  140.                     emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  141.                 }
  142.             else
  143.                 {
  144.                     if (get_pcvar_num(cvar_mates) == 1)
  145.                     {
  146.                         g_hooked[id] = hooktarget
  147.                         emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  148.                     }
  149.                     else
  150.                     {
  151.     print_color(id, "!g[ZP] %L", id, "CANT_DRAG_TEAM");
  152.                         return PLUGIN_HANDLED
  153.                     }
  154.                 }
  155.  
  156.             if (get_pcvar_float(cvar_dragspeed) <= 0.0)
  157.                 cvar_dragspeed = 1
  158.            
  159.             new parm[2]
  160.             parm[0] = id
  161.             parm[1] = hooktarget
  162.            
  163.             set_task(0.1, "smoker_reelin", id, parm, 2, "b")
  164.             harpoon_target(parm)
  165.            
  166.             g_hooksLeft[id]--
  167.     print_color(id, "!g[ZP] %L", id, "CAN_DRAG_TIMES", g_hooksLeft[id]);
  168.             g_drag_i[id] = true
  169.            
  170.             if(get_pcvar_num(cvar_unb2move) == 1)
  171.                 g_unable2move[hooktarget] = true
  172.                
  173.             if(get_pcvar_num(cvar_unb2move) == 2)
  174.                 g_unable2move[id] = true
  175.                
  176.             if(get_pcvar_num(cvar_unb2move) == 3)
  177.             {
  178.                 g_unable2move[hooktarget] = true
  179.                 g_unable2move[id] = true
  180.             }
  181.         } else {
  182.             g_hooked[id] = 33
  183.             noTarget(id)
  184.             emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  185.             g_drag_i[id] = true
  186.             g_hooksLeft[id]--
  187.     print_color(id, "!g[ZP] %L", id, "CAN_DRAG_TIMES", g_hooksLeft[id]);
  188.         }
  189.     }
  190.     else
  191.         return PLUGIN_HANDLED
  192.    
  193.     return PLUGIN_CONTINUE
  194. }
  195.  
  196. public smoker_reelin(parm[]) // dragging player to smoker
  197. {
  198.     new id = parm[0]
  199.     new victim = parm[1]
  200.  
  201.     if (!g_hooked[id] || !is_user_alive(victim))
  202.     {
  203.         drag_end(id)
  204.         return
  205.     }
  206.  
  207.     new Float:fl_Velocity[3]
  208.     new idOrigin[3], vicOrigin[3]
  209.  
  210.     get_user_origin(victim, vicOrigin)
  211.     get_user_origin(id, idOrigin)
  212.  
  213.     new distance = get_distance(idOrigin, vicOrigin)
  214.  
  215.     if (distance > 1) {
  216.         new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)
  217.  
  218.         fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
  219.         fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
  220.         fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
  221.     } else {
  222.         fl_Velocity[0] = 0.0
  223.         fl_Velocity[1] = 0.0
  224.         fl_Velocity[2] = 0.0
  225.     }
  226.  
  227.     entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
  228. }
  229.  
  230. public drag_end(id) // drags end function
  231. {
  232.     g_hooked[id] = 0
  233.     beam_remove(id)
  234.     remove_task(id)
  235.    
  236.     if (g_drag_i[id])
  237.         g_lastHook[id] = get_gametime()
  238.    
  239.     g_drag_i[id] = false
  240.     g_unable2move[id] = false
  241. }
  242.  
  243. public smoker_death() // if smoker dies drag off
  244. {
  245.     new id = read_data(2)
  246.    
  247.     beam_remove(id)
  248.    
  249.     if (g_hooked[id])
  250.         drag_end(id)
  251. }
  252.  
  253. public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
  254. {
  255.     if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0))
  256.     {
  257.         g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage)
  258.         if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop))
  259.         {
  260.             g_ovr_dmg[victim] = 0
  261.             drag_end(victim)
  262.             return HAM_IGNORED;
  263.         }
  264.     }
  265.  
  266.     return HAM_IGNORED;
  267. }
  268.  
  269. public fw_PlayerPreThink(id)
  270. {
  271.     if (!is_user_alive(id))
  272.         return FMRES_IGNORED
  273.    
  274.     new button = get_user_button(id)
  275.     new oldbutton = get_user_oldbutton(id)
  276.    
  277.     if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
  278.     {
  279.         if (!(oldbutton & IN_USE) && (button & IN_USE))
  280.             drag_start(id)
  281.        
  282.         if ((oldbutton & IN_USE) && !(button & IN_USE))
  283.             drag_end(id)
  284.     }
  285.    
  286.     if (!g_drag_i[id]) {
  287.         g_unable2move[id] = false
  288.     }
  289.        
  290.     if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
  291.     {
  292.         set_pev(id, pev_maxspeed, 1.0)
  293.     }
  294.    
  295.     return PLUGIN_CONTINUE
  296. }
  297.  
  298. public client_disconnect(id) // if client disconnects drag off
  299. {
  300.     if (id <= 0 || id > 32)
  301.         return
  302.    
  303.     if (g_hooked[id])
  304.         drag_end(id)
  305.    
  306.     if(g_unable2move[id])
  307.         g_unable2move[id] = false
  308. }
  309.  
  310. public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
  311. {
  312.     new id = parm[0]
  313.     new hooktarget = parm[1]
  314.  
  315.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  316.     write_byte(8)    // TE_BEAMENTS
  317.     write_short(id)
  318.     write_short(hooktarget)
  319.     write_short(g_Line)    // sprite index
  320.     write_byte(0)    // start frame
  321.     write_byte(0)    // framerate
  322.     write_byte(200)    // life
  323.     write_byte(8)    // width
  324.     write_byte(1)    // noise
  325.     write_byte(155)    // r, g, b
  326.     write_byte(155)    // r, g, b
  327.     write_byte(55)    // r, g, b
  328.     write_byte(90)    // brightness
  329.     write_byte(10)    // speed
  330.     message_end()
  331. }
  332.  
  333. public noTarget(id) // set beam if target isn't player
  334. {
  335.     new endorigin[3]
  336.  
  337.     get_user_origin(id, endorigin, 3)
  338.  
  339.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  340.     write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
  341.     write_short(id)
  342.     write_coord(endorigin[0])
  343.     write_coord(endorigin[1])
  344.     write_coord(endorigin[2])
  345.     write_short(g_Line) // sprite index
  346.     write_byte(0)    // start frame
  347.     write_byte(0)    // framerate
  348.     write_byte(200)    // life
  349.     write_byte(8)    // width
  350.     write_byte(1)    // noise
  351.     write_byte(155)    // r, g, b
  352.     write_byte(155)    // r, g, b
  353.     write_byte(55)    // r, g, b
  354.     write_byte(75)    // brightness
  355.     write_byte(0)    // speed
  356.     message_end()
  357. }
  358.  
  359. public beam_remove(id) // remove beam
  360. {
  361.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  362.     write_byte(99)    //TE_KILLBEAM
  363.     write_short(id)    //entity
  364.     message_end()
  365. }
  366.  
  367. public client_putinserver(id){
  368.     client_cmd(id, "bind e ^"+drag^"");
  369.  
  370. }
  371.  
  372. stock print_color(const id, const input[], any:...)
  373. {
  374.     new count = 1, players[32];
  375.     static msg[191];
  376.     vformat(msg, 190, input, 3);
  377.    
  378.     replace_all(msg, 190, "!g", "^4");
  379.     replace_all(msg, 190, "!y", "^1");
  380.     replace_all(msg, 190, "!t", "^3");
  381.     replace_all(msg, 190, "á", "á");
  382.     replace_all(msg, 190, "é", "Ă©");
  383.     replace_all(msg, 190, "í", "Ă­");
  384.     replace_all(msg, 190, "ó", "Ăł");
  385.     replace_all(msg, 190, "ö", "ö");
  386.     replace_all(msg, 190, "ő", "Ĺ‘");
  387.     replace_all(msg, 190, "ú", "Ăş");
  388.     replace_all(msg, 190, "ü", "ĂĽ");
  389.     replace_all(msg, 190, "ű", "ű");
  390.     replace_all(msg, 190, "Á", "Á");
  391.     replace_all(msg, 190, "É", "É");
  392.     replace_all(msg, 190, "Í", "ĂŤ");
  393.     replace_all(msg, 190, "Ó", "Ă“");
  394.     replace_all(msg, 190, "Ö", "Ă–");
  395.     replace_all(msg, 190, "Ő", "Ő");
  396.     replace_all(msg, 190, "Ú", "Ăš");
  397.     replace_all(msg, 190, "Ü", "Ăś");
  398.     replace_all(msg, 190, "Ű", "Ĺ°");      
  399.    
  400.     if (id) players[0] = id; else get_players(players, count, "ch");
  401.     {
  402.         for (new i = 0; i < count; i++)
  403.         {
  404.             if (is_user_connected(players[i]))
  405.             {
  406.                 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  407.                 write_byte(players[i]);
  408.                 write_string(msg);
  409.                 message_end();
  410.             }
  411.         }
  412.     }
  413.     return PLUGIN_HANDLED;
  414. }  
  415.  
  416.  
  417.  
  418. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  419. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  420. */

Nem teszteltem. Ha bármiféle problémát tapasztalsz, írj.

Ők köszönték meg Dooz nek ezt a hozzászólást: sZmolka (2018.06.17. 19:55)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Smoker Zombi
HozzászólásElküldve: 2018.06.17. 19:55 
Offline
Beavatott
Avatar

Csatlakozott: 2013.11.24. 19:19
Hozzászólások: 76
Megköszönt másnak: 24 alkalommal
Köszi !!! :)


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


Ki van itt

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