hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 20:50



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-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  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Nail Luncher vásárlás
HozzászólásElküldve:2012.06.18. 10:28 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3. #include <fakemeta>

  4. #include <cstrike>

  5. #include <fakemeta_util>

  6. #include <fun>

  7.  

  8. #define OFFSET_MONEY   115

  9. #define ADMIN_CMD ADMIN_BAN

  10. #define fm_find_ent_by_class(%1,%2)   engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

  11.  

  12.  

  13. new const PLUGIN[]    = "Deagle Nail Launcher";

  14. new const VERSION[]    = "2.7+";

  15. new const AUTH[]    = "GameMoon&CeDee";

  16.  

  17. new nail_MODEL[]    = "models/nail.mdl";

  18. new nail_SOUND[]   = "misc/spike1.wav";

  19. new trail[]       = "sprites/smoke.spr";

  20. new explode[]      = "sprites/zerogxplode.spr";

  21. new smokesZ[]      = "sprites/steam1.spr";

  22. new nail_classname[]   = "deagle_nail";

  23.  

  24.  

  25. new Float:was_nail[33];

  26. new  trail2, explode2, smokesZ2;

  27. new g_toggle_enable, g_toggle_speed, g_toggle_delay, g_toggle_trail_width;

  28. new g_toggle_admin_only, g_toggle_damageradius, g_toggle_nail_damage, g_maxplayers;

  29. new gMsgID, gDmsgID, g_toggle_colormode, gMsgIDMoney, g_toggle_moneybonus, g_toggle_loosemoney;

  30. new g_fragbonus, g_loosefrags;

  31. new penz,ar,id2;

  32.  

  33.  

  34.  

  35. public plugin_init() {

  36.      

  37.    register_plugin(PLUGIN, VERSION, AUTH);

  38.    register_forward(FM_Touch, "pfn_touch" );

  39.    register_forward(FM_StartFrame, "server_frame");

  40.    register_logevent("logevent_round_end", 2, "1=Round_End");

  41.    g_toggle_enable = register_cvar("nail_enable", "1");// 1-enabled/2-disabled

  42.    g_toggle_admin_only= register_cvar("nail_admin_only", "0");// set this to 1 from ADMINONLY

  43.    g_toggle_speed = register_cvar("nail_speed","600");// nail speed

  44.    g_toggle_delay = register_cvar("nail_delay","3.0"); // nail delay

  45.    g_toggle_damageradius = register_cvar("nail_damage_radius", "500");// nail explode radius damage

  46.    g_toggle_nail_damage = register_cvar("nail_damage", "200");// nail damage when hit someone

  47.    g_toggle_trail_width = register_cvar("nail_trail_width", "5");// trail width

  48.    g_toggle_colormode = register_cvar("nail_trail_colormode", "1");// 0-grey and 1- team color (default: 1 - team color)

  49.    g_toggle_moneybonus = register_cvar("nail_kill_money_bonus", "1000"); // the kill money bonus xD

  50.    g_toggle_loosemoney = register_cvar("nail_tk_loose_money", "5000");// -money if you kill a teammate :|

  51.    g_fragbonus = register_cvar("nail_fragbonus", "3"); // frag bonus when you kill some1 with nail

  52.    g_loosefrags = register_cvar("nail_loosefrags", "5"); // loose frags when you kill a teammmate :

  53.    ar = register_cvar("Ar","10000");

  54.    gMsgID = get_user_msgid("Damage");

  55.    gDmsgID = get_user_msgid("DeathMsg");

  56.    gMsgIDMoney = get_user_msgid("Money");

  57.    g_maxplayers = get_maxplayers();

  58.    register_clcmd("say /deagle","vasarlas");

  59.    register_clcmd("say_team /deagle","vasarlas");

  60. }

  61. public server_frame()

  62. {

  63.    if(get_pcvar_num(g_toggle_enable) == 0)

  64.       return FMRES_IGNORED;

  65.      

  66.    new id;

  67.    for(id = 1; id <= g_maxplayers; id++)

  68.    {  

  69.       if(is_user_alive(id))

  70.       {

  71.          check_nails(id);

  72.       }

  73.    }

  74.    return FMRES_IGNORED;

  75. }

  76. public plugin_precache()

  77. {

  78.    engfunc(EngFunc_PrecacheModel, nail_MODEL);

  79.    engfunc(EngFunc_PrecacheSound, nail_SOUND);

  80.    trail2 = engfunc(EngFunc_PrecacheModel, trail);

  81.    explode2 = engfunc(EngFunc_PrecacheModel, explode);

  82.    smokesZ2 = engfunc(EngFunc_PrecacheModel, smokesZ);

  83. }

  84. public check_nails(id)

  85. {  

  86.    if(get_pcvar_num(g_toggle_enable) == 0)

  87.       return PLUGIN_HANDLED;

  88.      

  89.    new wpnid = get_user_weapon(id);

  90.    new button = pev(id, pev_button);

  91.    

  92.    if(wpnid == CSW_DEAGLE && id==id2)

  93.    {  

  94.       if(button & IN_ATTACK2)

  95.       {      

  96.          launch_nail(id);

  97.       }

  98.      

  99.    }

  100.    return PLUGIN_CONTINUE;

  101. }

  102. public launch_nail(id)

  103. {

  104.    if(get_pcvar_num(g_toggle_admin_only) == 1)

  105.    {  

  106.       if(!(get_user_flags(id) & ADMIN_CMD))

  107.       {

  108.          log_amx("[DNL] The plugin has been set just 4 admins!");

  109.          return PLUGIN_HANDLED;

  110.       }

  111.    }

  112.    new Float:nexTime = get_gametime();

  113.    if(was_nail[id] > nexTime)

  114.    {  

  115.       return PLUGIN_CONTINUE;

  116.    }

  117.    else

  118.    {

  119.       new nail = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

  120.      

  121.       if(nail == 0)

  122.          return PLUGIN_CONTINUE;

  123.      

  124.       set_pev(nail, pev_classname, nail_classname);

  125.       engfunc(EngFunc_SetModel, nail, nail_MODEL);

  126.       set_pev(nail, pev_size, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0});

  127.       set_pev(nail, pev_movetype, MOVETYPE_FLY);

  128.       set_pev(nail, pev_solid, SOLID_BBOX);

  129.      

  130.       new Float:vSrc[3];

  131.       pev(id, pev_origin, vSrc);

  132.       new Float:Aim[3], Float:origin[3];

  133.       velocity_by_aim(id, 64, Aim);

  134.       pev(id,pev_origin,origin);

  135.      

  136.       vSrc[0] += Aim[0];

  137.       vSrc[1] += Aim[1];

  138.  

  139.       engfunc(EngFunc_SetOrigin, nail, vSrc);

  140.       new Float:velocity[3], Float:angles[3];

  141.      

  142.       velocity_by_aim(id, get_pcvar_num(g_toggle_speed), velocity);

  143.       set_pev(nail, pev_velocity, velocity);

  144.       vector_to_angle(velocity, angles);

  145.       set_pev(nail, pev_angles, angles);

  146.       set_pev(nail, pev_owner,id);

  147.       set_pev(nail, pev_takedamage, 1.0);

  148.      

  149.       message_begin(MSG_BROADCAST, SVC_TEMPENTITY);

  150.       write_byte(TE_BEAMFOLLOW);

  151.       write_short(nail);

  152.       write_short(trail2);

  153.       write_byte(25);

  154.       write_byte(get_pcvar_num(g_toggle_trail_width));

  155.       if(get_pcvar_num(g_toggle_colormode))

  156.       {

  157.          new r, g, b;

  158.          switch(get_user_team(id))

  159.          {

  160.             case 1:

  161.             {

  162.                r = 255;

  163.                g = 0;

  164.                b = 0;

  165.             }

  166.             case 2:

  167.             {

  168.                r = 0;

  169.                g = 0;

  170.                b = 255;

  171.             }

  172.             default:

  173.             {

  174.                r = 211;

  175.                g = 211;

  176.                b = 211;

  177.             }

  178.          }

  179.          write_byte(r);

  180.          write_byte(g);

  181.          write_byte(b);

  182.       }

  183.       else

  184.       {  

  185.          write_byte(211);

  186.          write_byte(211);

  187.          write_byte(211);

  188.       }  

  189.       write_byte(255);

  190.       message_end();

  191.  

  192.       emit_sound(nail, CHAN_WEAPON, nail_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM);

  193.       was_nail[id] = nexTime + get_pcvar_float(g_toggle_delay);

  194.    }

  195.    return PLUGIN_CONTINUE;

  196. }

  197. public pfn_touch(ptr, ptd)

  198. {  

  199.    if(get_pcvar_num(g_toggle_enable) == 1)

  200.    {

  201.       if(pev_valid(ptr))

  202.       {  

  203.          new classname[32];

  204.          pev(ptr, pev_classname, classname, 31);

  205.      

  206.          if(equal(classname, nail_classname))

  207.          {  

  208.             new Float:fOrigin[3];

  209.             new iOrigin[3];

  210.             pev(ptr, pev_origin, fOrigin);

  211.             FVecIVec(fOrigin,iOrigin);

  212.          

  213.             nail_radius_damage(ptr);

  214.            

  215.             message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin);

  216.             write_byte(TE_EXPLOSION);

  217.             write_coord(iOrigin[0]);

  218.             write_coord(iOrigin[1]);

  219.             write_coord(iOrigin[2]);

  220.             write_short(explode2);

  221.             write_byte(30);

  222.             write_byte(15);

  223.             write_byte(0);

  224.             message_end();

  225.          

  226.             message_begin(MSG_BROADCAST, SVC_TEMPENTITY);

  227.             write_byte(TE_SMOKE);

  228.             write_coord(iOrigin[0]);

  229.             write_coord(iOrigin[1]);

  230.             write_coord(iOrigin[2]);

  231.             write_short(smokesZ2);

  232.             write_byte(40);

  233.             write_byte(5);

  234.             message_end();

  235.            

  236.             engfunc(EngFunc_RemoveEntity, ptr);

  237.          }

  238.       }

  239.    }

  240. }

  241. public logevent_round_end()

  242. {

  243.    if(get_pcvar_num(g_toggle_enable) == 1)

  244.    {

  245.       new ent = -1;

  246.       while((ent = fm_find_ent_by_class(ent, nail_classname)))

  247.          engfunc(EngFunc_RemoveEntity, ent);      

  248.    }

  249. }

  250. stock nail_radius_damage(entity)

  251. {  

  252.    new id = pev(entity, pev_owner);

  253.    

  254.    new i;

  255.    for(i = 1; i <= g_maxplayers; i++)

  256.    {  

  257.       if(is_user_alive(i))

  258.       {  

  259.          new dist = floatround(fm_entity_range(entity,i));

  260.          

  261.          if(dist <= get_pcvar_num(g_toggle_damageradius))

  262.          {  

  263.             new hp = get_user_health(i);

  264.             new Float:damage = get_pcvar_float(g_toggle_nail_damage)-(get_pcvar_float(g_toggle_nail_damage) / get_pcvar_float(g_toggle_damageradius))*float(dist);

  265.            

  266.             new Origin[3];

  267.             get_user_origin(i,Origin);

  268.             if(!get_cvar_num("mp_friendlyfire"))

  269.             {  

  270.                if(get_user_team(id) != get_user_team(i))

  271.                {  

  272.                   if(hp > damage)

  273.                   {

  274.                      nail_take_damage(i, floatround(damage), Origin, DMG_BLAST);

  275.                   }

  276.                   else

  277.                   {

  278.                      nail_kill(id, i, "** Deagle-Nail **", 0);

  279.                   }

  280.                }

  281.             }

  282.          }

  283.       }

  284.    }

  285. }

  286. stock nail_take_damage(victim,damage,origin[3],bit)

  287. {

  288.    message_begin(MSG_ONE_UNRELIABLE, gMsgID,{0,0,0}, victim);

  289.    write_byte(21);

  290.    write_byte(20);

  291.    write_long(bit);

  292.    write_coord(origin[0]);

  293.    write_coord(origin[1]);

  294.    write_coord(origin[2]);

  295.    message_end();

  296.    

  297.    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);

  298.    write_byte(TE_LAVASPLASH);

  299.    write_coord(origin[0]);

  300.    write_coord(origin[1]);

  301.    write_coord(origin[2]);

  302.    message_end();

  303.    

  304.    fm_set_user_health(victim, get_user_health(victim) - damage);

  305. }

  306. stock nail_kill(killer, victim, weapon[],headshot)

  307. {

  308.    set_msg_block(gDmsgID , BLOCK_ONCE);

  309.    user_kill(victim, 1);

  310.    set_msg_block(gDmsgID, BLOCK_NOT);

  311.    

  312.    message_begin(MSG_ALL, gDmsgID, {0,0,0}, 0);

  313.    write_byte(killer);

  314.    write_byte(victim);

  315.    write_byte(headshot);

  316.    write_string(weapon);

  317.    message_end();

  318.    

  319.    new money = fm_get_user_money(killer);

  320.    if(get_user_team(killer)!= get_user_team(victim))

  321.    {

  322.       fm_set_user_frags(killer,get_user_frags(killer) + get_pcvar_num(g_fragbonus));

  323.       fm_set_user_money(killer, money + get_pcvar_num(g_toggle_moneybonus));

  324.    }

  325.    else

  326.    {

  327.       fm_set_user_frags(killer,get_user_frags(killer) - get_pcvar_num(g_loosefrags));

  328.       fm_set_user_money(killer, money - get_pcvar_num(g_toggle_loosemoney));

  329.    }

  330.     return 1;

  331. }

  332. stock fm_get_user_money( index )

  333. {

  334.    new money = get_pdata_int(index, OFFSET_MONEY);

  335.    return money;

  336. }

  337. stock fm_set_user_money(index, money, flash = 1)

  338. {

  339.    set_pdata_int(index, OFFSET_MONEY, money);

  340.    fm_set_money(index, money, flash);

  341.    return 1;

  342. }

  343. stock fm_set_money(index, money, flash)

  344. {

  345.    message_begin( MSG_ONE_UNRELIABLE, gMsgIDMoney, {0, 0, 0}, index);

  346.    write_long(money);

  347.    write_byte(flash ? 1 : 0);

  348.    message_end();

  349.    

  350. }

  351. public vasarlas(id)

  352. {

  353.    penz = cs_get_user_money(id);

  354.    if(penz>=get_pcvar_num(ar))

  355.    {

  356.    cs_set_user_money(id,penz - get_pcvar_num(ar));

  357.    if(is_user_alive(id))

  358.    {

  359.        give_item(id, "weapon_deagle")

  360.    }

  361.     id2 = id;

  362.    

  363.    } else {

  364.    client_print(id,print_chat,"Nincs eleg penzed");

  365.    }

  366.    

  367. }

  368. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE

  369. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }

Ezt a kódot még anno IrOn javitotta ki mert a /deagle parancsra nem adott desertet, azt meg is csinálta de a desert rakétája nem sebzett..:D valaki megtudná nekem ezt csinálni? h sebezzen?:D

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


Ki van itt

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