Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Przerobienie klasy na premium


ShuQi

Rekomendowane odpowiedzi

Opublikowano

Witam prosze o przerobienie tej klasy na premium [admin lvl h]

 

 

/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
 
#define TASK_TRANSFER 999
#define TASK_RELOAD 3000
 
 
new const XM8_MODEL_V[] = "models/QTM_CodMod/v_xm8.mdl";
new const XM320_MODEL_V[] = "models/QTM_CodMod/v_xm8xm320.mdl";
new const XM8_MODEL_P[] = "models/QTM_CodMod/p_xm8.mdl";
new const XM320_MODEL_P[] = "models/QTM_CodMod/p_xm8xm320.mdl";
new const XM320_AMMO[] = "models/QTM_CodMod/s_grenade.mdl";
new const XM320_SHOOT2[] = "weapons/xm8xm320_shoot2.wav";
new const XM320_EXPLO[] = "weapons/xm8xm320_exp.wav";
new const XM8_FOLEY1[] = "weapons/xm8_foley1.wav";
new const XM8_FOLEY2[] = "weapons/xm8_foley2.wav";
new const XM8_FOLEY3[] = "weapons/xm8_foley3.wav";
new const XM8_FOLEY4[] = "weapons/xm8_foley4.wav";
new const XM8_FOLEY5[] = "weapons/xm8_foley5.wav";
new const XM8_FOLEY6[] = "weapons/xm8_foley6.wav";
new const XM8_DRAW[] = "weapons/xm8_draw.wav";
new const XM8_CLIPIN[] = "weapons/xm8_clipin.wav";
new const XM8_CLIPON[] = "weapons/xm8_clipon.wav";
new const XM8_CLIPOUT[] = "weapons/xm8_clipout.wav";
new const SPRITE_EXPLO[] = "sprites/xm8xm320_exp.spr";
new const SPRITE_SMOKE[] = "sprites/xm8xm320_smoke.spr";
new const SPRITE_BLAST[] = "sprites/xm8xm320_dexplo.spr";
new const SPRITE_TRAIL[] = "sprites/xm8xm320_trail.spr";
 
new const nazwa[] = "Grenadier";
new const opis[] = "Posiada XM8 z granatnikiem XM320, klawiszem E przelacza miedzy granatnikiem a bronia";
new const bronie = 1<<CSW_SG552 | 1<<CSW_P228 | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_SMOKEGRENADE;
new const zdrowie = 25
new const kondycja = -5;
new const inteligencja = 0;
new const wytrzymalosc = 30;
 
 
new bool: ma_klase[33], bool: g_launcher[33], g_launcher_ammo[33], Float:weapon_idle[33], zabity, magazynek[33], naboje[33], bool:weapon_reloading[33];
new explo, blast, trail, smoke;
new PCvarDamage, PCvarRadius, PCvarAmmo
 
public plugin_init() 
{
    register_plugin(nazwa, "1.0", "Hleb")
    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    RegisterHam(Ham_Item_Deploy, "weapon_sg552", "WeaponDeploy", 1);
    RegisterHam(Ham_Weapon_WeaponIdle, "weapon_sg552", "Weapon_Idle", 1);
    RegisterHam(Ham_Spawn, "player", "Client_Spawn", 1);
    
    register_forward(FM_CmdStart, "CmdStart");
    register_forward(FM_Touch, "Nade_Touch")
    register_event("CurWeapon","CurWeapon","be", "1=1");
    register_event("DeathMsg", "Death", "ade");
    register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    register_forward(FM_PlayerPreThink, "PokazInfo");
    
    PCvarAmmo = register_cvar("cod_xm320_ammo", "3");
    PCvarDamage = register_cvar("cod_xm320_damage", "100");
    PCvarRadius = register_cvar("cod_xm320_radius", "250");
    
}
public cod_class_enabled(id)
{
    ma_klase[id] = true;
    g_launcher_ammo[id] = get_pcvar_num(PCvarAmmo);
    g_launcher[id] = false;
}
public cod_class_disabled(id)
{
    ma_klase[id] = false;
    g_launcher[id] = false;
    remove_task(id+TASK_RELOAD)
    remove_task(id+TASK_TRANSFER)
}
public PokazInfo(id)
{
    if(!is_user_alive(id))
        return PLUGIN_CONTINUE;
    
    if(!ma_klase[id])
        return PLUGIN_CONTINUE
    
    if(get_user_weapon(id) != CSW_SG552)
        return PLUGIN_CONTINUE
    
    if(!g_launcher[id])
        return PLUGIN_CONTINUE
        
    
    new text[512]
    format(text,511,"Ilosc Granatow: %d",g_launcher_ammo[id])
    message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id)
    write_byte(0)
    write_string(text)
    message_end() 
    
    return PLUGIN_CONTINUE;
}
public plugin_precache()
{
    //dźwięki
    engfunc(EngFunc_PrecacheSound, XM320_SHOOT2)
    engfunc(EngFunc_PrecacheSound, XM320_EXPLO)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY1)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY2)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY3)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY4)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY5)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY6)
    engfunc(EngFunc_PrecacheSound, XM8_DRAW)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPIN)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPON)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPOUT)
    
    //sprites'y
    explo = precache_model(SPRITE_EXPLO)
    smoke = precache_model(SPRITE_SMOKE)
    blast = precache_model(SPRITE_BLAST)
    trail = precache_model(SPRITE_TRAIL)
    
    //modele
    engfunc(EngFunc_PrecacheModel, XM8_MODEL_V)
    engfunc(EngFunc_PrecacheModel, XM320_MODEL_V)
    engfunc(EngFunc_PrecacheModel, XM8_MODEL_P)
    engfunc(EngFunc_PrecacheModel, XM320_MODEL_P)
    engfunc(EngFunc_PrecacheModel, XM320_AMMO)
}
public WeaponDeploy(ent)
{
    new id = get_pdata_cbase(ent, 41, 4)
    if(!ma_klase[id])
        return PLUGIN_CONTINUE
        
    if(g_launcher[id])
    {
        set_pev(id, pev_viewmodel2, XM320_MODEL_V)
        set_pev(id, pev_weaponmodel2, XM320_MODEL_P)
    }
    else
    {
        set_pev(id, pev_viewmodel2, XM8_MODEL_V)
        set_pev(id, pev_weaponmodel2, XM8_MODEL_P)
    }
    set_pev(id, pev_weaponanim, 2);
    
    return PLUGIN_CONTINUE;
}
public Weapon_Idle(ent)
{
    new id = get_pdata_cbase(ent, 41, 4);
    if(get_user_weapon(id) == 27 && ma_klase[id])
    {
        if(!weapon_idle[id]) 
            weapon_idle[id] = get_gametime();
    }
}
public cod_class_skill_used(id)
{
    if(!ma_klase[id] && get_user_weapon(id) != CSW_SG552)
        return PLUGIN_CONTINUE
        
    if(get_gametime()-weapon_idle[id]<=1.5)
        return PLUGIN_CONTINUE
        
    if(task_exists(id+TASK_TRANSFER))
        return PLUGIN_CONTINUE
        
    if(task_exists(id+TASK_RELOAD))
        return PLUGIN_CONTINUE
        
    set_pev(id, pev_weaponanim, 6)
    set_task(2.0, "Transfer", id+TASK_TRANSFER);
    return PLUGIN_CONTINUE;
}
public Transfer(id)
{
    if(task_exists(id+TASK_RELOAD))
        return PLUGIN_CONTINUE
        
    id-=TASK_TRANSFER;
    new ent = fm_find_ent_by_owner(-1, "weapon_sg552", id)
    if(!g_launcher[id])
    {
        magazynek[id] = cs_get_weapon_ammo(ent)
        naboje[id] = cs_get_user_bpammo(id, CSW_SG552)
    }
    g_launcher[id] =(g_launcher[id])?false:true;
    set_pev(id, pev_viewmodel2, (g_launcher[id])?XM320_MODEL_V:XM8_MODEL_V);
    set_pev(id, pev_weaponanim, 0);
    if(!g_launcher[id])
    {
        cs_set_weapon_ammo(ent, magazynek[id])
        cs_set_user_bpammo(id, CSW_SG552, naboje[id])
    }
    return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
    if(!ma_klase[id])
        return PLUGIN_CONTINUE;
    
    if(read_data(2) != CSW_SG552 && task_exists(id+TASK_TRANSFER))
        remove_task(id+TASK_TRANSFER)
    
    return PLUGIN_CONTINUE;
}
public Client_Spawn(id)
{
    if(!ma_klase[id])
        return PLUGIN_CONTINUE;
        
    g_launcher_ammo[id] = get_pcvar_num(PCvarAmmo);
    magazynek[id] = 30;
    naboje[id] = 90;
    weapon_reloading[id] = false;
    return PLUGIN_CONTINUE;
    
}
public Death()
{
    if(!ma_klase[read_data(2)])
        return PLUGIN_CONTINUE;
        
    remove_task(read_data(2)+TASK_TRANSFER)    
    remove_task(read_data(2)+TASK_RELOAD)
    return PLUGIN_CONTINUE
}
public CmdStart(id, uc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
        
    if(get_user_weapon(id) == CSW_SG552 && ma_klase[id])
    { 
        new button = get_uc(uc, UC_Buttons);
        new ent = fm_find_ent_by_owner(-1, "weapon_sg552", id);
        
        if(!g_launcher[id])
            return FMRES_IGNORED
            
        if(button & IN_ATTACK)
        {
            button &= ~IN_ATTACK;
            set_uc(uc, UC_Buttons, button);
            
            if(!g_launcher_ammo[id] || weapon_reloading[id] || !weapon_idle[id]) 
                return FMRES_IGNORED;
            if(weapon_idle[id] && (get_gametime()-weapon_idle[id]<=1.5)) 
                return FMRES_IGNORED;
        
            new Float:Origin[3], Float:Angle[3], Float:Velocity[3];
            pev(id, pev_origin, Origin);
            pev(id, pev_v_angle, Angle);
            velocity_by_aim(id, 2000, Velocity);
            
            Angle[0] *= -1.0
            
            new ent = fm_create_entity("info_target")
            set_pev(ent, pev_classname, "mortar");
            engfunc(EngFunc_SetModel, ent, XM320_AMMO);
            
            set_pev(ent, pev_solid, SOLID_BBOX);
            set_pev(ent, pev_movetype, MOVETYPE_TOSS);
            set_pev(ent, pev_owner, id);
            set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0});
            set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0});
            set_pev(ent, pev_gravity, 0.3);
            
            set_pev(ent, pev_origin, Origin);
            set_pev(ent, pev_velocity, Velocity);
            set_pev(ent, pev_angles, Angle);
            
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(TE_BEAMFOLLOW)
            write_short(ent)
            write_short(trail)
            write_byte(6)
            write_byte(3)
            write_byte(224)    
            write_byte(224)    
            write_byte(255)
            write_byte(100)
            message_end()
            
            g_launcher_ammo[id]--;
            set_pev(id, pev_weaponanim, (!g_launcher_ammo[id])?8:7)
            new entwpn = fm_find_ent_by_owner(-1, "weapon_sg552", id)
            if(entwpn)
                set_pdata_float(entwpn, 48, 1.5+3.0, 4)
            set_pdata_float(id, 83, 1.5, 4)
            
            weapon_reloading[id] = true;
            emit_sound(id, CHAN_WEAPON, XM320_SHOOT2, 1.0, ATTN_NORM, 0, PITCH_NORM)
            
            if(task_exists(id+TASK_RELOAD)) 
                remove_task(id+TASK_RELOAD)
            
            set_task(3.7, "RELOADING", id+TASK_RELOAD)
        }
        else if(button & IN_RELOAD)
        {
            button &= ~IN_RELOAD;
            set_uc(uc, UC_Buttons, button);
            
            set_pev(id, pev_weaponanim, 0);
            set_pdata_float(id, 83, 0.5, 4);
            if(ent)
                set_pdata_float(ent, 48, 0.5+3.0, 4);
        }
        if(ent)
            cs_set_weapon_ammo(ent, -1);
    }
    else if(get_user_weapon(id) != CSW_SG552 && ma_klase[id])
        weapon_idle[id] = 0.0;
        
    return FMRES_IGNORED;
}
public RELOADING(id)
{
    id -= TASK_RELOAD;
    weapon_reloading[id] = false;
    set_pev(id, pev_weaponanim, 0);
}    
public Nade_Touch(ent, id)
{
    if(!pev_valid(ent))
        return FMRES_IGNORED
    
    new class[32]
    pev(ent, pev_classname, class, charsmax(class))
 
    if(!equal(class, "mortar"))
        return FMRES_IGNORED
        
    new attacker = pev(ent, pev_owner);
    new Float:entOrigin[3], Float:fDamage, Float:Origin[3];
    pev(ent, pev_origin, entOrigin);
    entOrigin[2] += 1.0;
    
    new Float:xm320_damage = get_pcvar_float(PCvarDamage)+(cod_get_user_intelligence(attacker, 1,1,1)*0.9);
    new Float:xm320_radius = get_pcvar_float(PCvarRadius);
    
    new victim = -1
    while((victim = engfunc(EngFunc_FindEntityInSphere, victim, entOrigin, xm320_radius)) != 0)
    {        
        if(!is_user_alive(victim) || get_user_team(attacker) == get_user_team(victim))
            continue;
        
        pev(victim, pev_origin, Origin);
        fDamage = xm320_damage - floatmul(xm320_damage, floatdiv(get_distance_f(Origin, entOrigin), xm320_radius));
        fDamage *= estimate_take_hurt(entOrigin, victim);
        if(fDamage>0.0)
            UTIL_Kill(attacker, victim, fDamage, DMG_BULLET);
    }
    emit_sound(ent, CHAN_WEAPON, XM320_EXPLO, 1.0, ATTN_NORM, 0, PITCH_NORM)
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
    write_byte(TE_EXPLOSION);
    write_coord(floatround(entOrigin[0]));
    write_coord(floatround(entOrigin[1]));
    write_coord(floatround(entOrigin[2]));
    write_short(explo); 
    write_byte(40); 
    write_byte(30); 
    write_byte(14); 
    message_end(); 
    
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
    write_byte(TE_EXPLOSION); 
    write_coord(floatround(entOrigin[0])); 
    write_coord(floatround(entOrigin[1])); 
    write_coord(floatround(entOrigin[2])); 
    write_short(blast); 
    write_byte(40);
    write_byte(30);
    write_byte(TE_EXPLFLAG_NONE); 
    message_end(); 
    
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(5)
    write_coord(floatround(entOrigin[0])); 
    write_coord(floatround(entOrigin[1])); 
    write_coord(floatround(entOrigin[2]));
    write_short(smoke);
    write_byte(35);
    write_byte(5);
    message_end();
    fm_remove_entity(ent);
    return FMRES_IGNORED
}
stock Float:estimate_take_hurt(Float:fPoint[3], ent) 
{
    new Float:fOrigin[3], tr, Float:fFraction;
    pev(ent, pev_origin, fOrigin);
    engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, 0, tr);
    get_tr2(tr, TR_flFraction, fFraction);
    if(fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
        return 1.0;
    return 0.75;
}
stock UTIL_Kill(atakujacy, obrywajacy, Float:damage, damagebits)
{
    zabity |= (1<<atakujacy);
    cod_inflict_damage(atakujacy, obrywajacy, damage, 0.0, atakujacy, damagebits);
    zabity &= ~(1<<atakujacy);
    
}
public message_DeathMsg()
{
    new killer = get_msg_arg_int(1);
        
    if(zabity & (1<<killer))
    {
        set_msg_arg_string(4, "grenade");
        return PLUGIN_CONTINUE;
    }
    return PLUGIN_CONTINUE;
}
Opublikowano

Proszę,

 

 

/* Plugin generated by AMXX-Studio */


#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>


#define TASK_TRANSFER 999
#define TASK_RELOAD 3000




new const XM8_MODEL_V[] = "models/QTM_CodMod/v_xm8.mdl";
new const XM320_MODEL_V[] = "models/QTM_CodMod/v_xm8xm320.mdl";
new const XM8_MODEL_P[] = "models/QTM_CodMod/p_xm8.mdl";
new const XM320_MODEL_P[] = "models/QTM_CodMod/p_xm8xm320.mdl";
new const XM320_AMMO[] = "models/QTM_CodMod/s_grenade.mdl";
new const XM320_SHOOT2[] = "weapons/xm8xm320_shoot2.wav";
new const XM320_EXPLO[] = "weapons/xm8xm320_exp.wav";
new const XM8_FOLEY1[] = "weapons/xm8_foley1.wav";
new const XM8_FOLEY2[] = "weapons/xm8_foley2.wav";
new const XM8_FOLEY3[] = "weapons/xm8_foley3.wav";
new const XM8_FOLEY4[] = "weapons/xm8_foley4.wav";
new const XM8_FOLEY5[] = "weapons/xm8_foley5.wav";
new const XM8_FOLEY6[] = "weapons/xm8_foley6.wav";
new const XM8_DRAW[] = "weapons/xm8_draw.wav";
new const XM8_CLIPIN[] = "weapons/xm8_clipin.wav";
new const XM8_CLIPON[] = "weapons/xm8_clipon.wav";
new const XM8_CLIPOUT[] = "weapons/xm8_clipout.wav";
new const SPRITE_EXPLO[] = "sprites/xm8xm320_exp.spr";
new const SPRITE_SMOKE[] = "sprites/xm8xm320_smoke.spr";
new const SPRITE_BLAST[] = "sprites/xm8xm320_dexplo.spr";
new const SPRITE_TRAIL[] = "sprites/xm8xm320_trail.spr";


new const nazwa[] = "Grenadier";
new const opis[] = "Posiada XM8 z granatnikiem XM320, klawiszem E przelacza miedzy granatnikiem a bronia";
new const bronie = 1<<CSW_SG552 | 1<<CSW_P228 | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_SMOKEGRENADE;
new const zdrowie = 25
new const kondycja = -5;
new const inteligencja = 0;
new const wytrzymalosc = 30;




new bool: ma_klase[33], bool: g_launcher[33], g_launcher_ammo[33], Float:weapon_idle[33], zabity, magazynek[33], naboje[33], bool:weapon_reloading[33];
new explo, blast, trail, smoke;
new PCvarDamage, PCvarRadius, PCvarAmmo


public plugin_init() 
{
    register_plugin(nazwa, "1.0", "Hleb")
    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    RegisterHam(Ham_Item_Deploy, "weapon_sg552", "WeaponDeploy", 1);
    RegisterHam(Ham_Weapon_WeaponIdle, "weapon_sg552", "Weapon_Idle", 1);
    RegisterHam(Ham_Spawn, "player", "Client_Spawn", 1);
    
    register_forward(FM_CmdStart, "CmdStart");
    register_forward(FM_Touch, "Nade_Touch")
    register_event("CurWeapon","CurWeapon","be", "1=1");
    register_event("DeathMsg", "Death", "ade");
    register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    register_forward(FM_PlayerPreThink, "PokazInfo");
    
    PCvarAmmo = register_cvar("cod_xm320_ammo", "3");
    PCvarDamage = register_cvar("cod_xm320_damage", "100");
    PCvarRadius = register_cvar("cod_xm320_radius", "250");
    
}
public cod_class_enabled(id)


{


    if(!(get_user_flags(id) & ADMIN_LEVEL_H))


    {


        client_print(id, print_chat, "[] Nie masz uprawnien, aby uzywac tej klasy.")


        return COD_STOP;


    }


    


    ma_klase[id] = true;


    g_launcher_ammo[id] = get_pcvar_num(PCvarAmmo);


    g_launcher[id] = false;


        


    return COD_CONTINUE;


}
public cod_class_disabled(id)
{
    ma_klase[id] = false;
    g_launcher[id] = false;
    remove_task(id+TASK_RELOAD)
    remove_task(id+TASK_TRANSFER)
}
public PokazInfo(id)
{
    if(!is_user_alive(id))
        return PLUGIN_CONTINUE;
    
    if(!ma_klase[id])
        return PLUGIN_CONTINUE
    
    if(get_user_weapon(id) != CSW_SG552)
        return PLUGIN_CONTINUE
    
    if(!g_launcher[id])
        return PLUGIN_CONTINUE
        
    
    new text[512]
    format(text,511,"Ilosc Granatow: %d",g_launcher_ammo[id])
    message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id)
    write_byte(0)
    write_string(text)
    message_end() 
    
    return PLUGIN_CONTINUE;
}
public plugin_precache()
{
    //dźwięki
    engfunc(EngFunc_PrecacheSound, XM320_SHOOT2)
    engfunc(EngFunc_PrecacheSound, XM320_EXPLO)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY1)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY2)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY3)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY4)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY5)
    engfunc(EngFunc_PrecacheSound, XM8_FOLEY6)
    engfunc(EngFunc_PrecacheSound, XM8_DRAW)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPIN)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPON)
    engfunc(EngFunc_PrecacheSound, XM8_CLIPOUT)
    
    //sprites'y
    explo = precache_model(SPRITE_EXPLO)
    smoke = precache_model(SPRITE_SMOKE)
    blast = precache_model(SPRITE_BLAST)
    trail = precache_model(SPRITE_TRAIL)
    
    //modele
    engfunc(EngFunc_PrecacheModel, XM8_MODEL_V)
    engfunc(EngFunc_PrecacheModel, XM320_MODEL_V)
    engfunc(EngFunc_PrecacheModel, XM8_MODEL_P)
    engfunc(EngFunc_PrecacheModel, XM320_MODEL_P)
    engfunc(EngFunc_PrecacheModel, XM320_AMMO)
}
public WeaponDeploy(ent)
{
    new id = get_pdata_cbase(ent, 41, 4)
    if(!ma_klase[id])
        return PLUGIN_CONTINUE
        
    if(g_launcher[id])
    {
        set_pev(id, pev_viewmodel2, XM320_MODEL_V)
        set_pev(id, pev_weaponmodel2, XM320_MODEL_P)
    }
    else
    {
        set_pev(id, pev_viewmodel2, XM8_MODEL_V)
        set_pev(id, pev_weaponmodel2, XM8_MODEL_P)
    }
    set_pev(id, pev_weaponanim, 2);
    
    return PLUGIN_CONTINUE;
}
public Weapon_Idle(ent)
{
    new id = get_pdata_cbase(ent, 41, 4);
    if(get_user_weapon(id) == 27 && ma_klase[id])
    {
        if(!weapon_idle[id]) 
            weapon_idle[id] = get_gametime();
    }
}
public cod_class_skill_used(id)
{
    if(!ma_klase[id] && get_user_weapon(id) != CSW_SG552)
        return PLUGIN_CONTINUE
        
    if(get_gametime()-weapon_idle[id]<=1.5)
        return PLUGIN_CONTINUE
        
    if(task_exists(id+TASK_TRANSFER))
        return PLUGIN_CONTINUE
        
    if(task_exists(id+TASK_RELOAD))
        return PLUGIN_CONTINUE
        
    set_pev(id, pev_weaponanim, 6)
    set_task(2.0, "Transfer", id+TASK_TRANSFER);
    return PLUGIN_CONTINUE;
}
public Transfer(id)
{
    if(task_exists(id+TASK_RELOAD))
        return PLUGIN_CONTINUE
        
    id-=TASK_TRANSFER;
    new ent = fm_find_ent_by_owner(-1, "weapon_sg552", id)
    if(!g_launcher[id])
    {
        magazynek[id] = cs_get_weapon_ammo(ent)
        naboje[id] = cs_get_user_bpammo(id, CSW_SG552)
    }
    g_launcher[id] =(g_launcher[id])?false:true;
    set_pev(id, pev_viewmodel2, (g_launcher[id])?XM320_MODEL_V:XM8_MODEL_V);
    set_pev(id, pev_weaponanim, 0);
    if(!g_launcher[id])
    {
        cs_set_weapon_ammo(ent, magazynek[id])
        cs_set_user_bpammo(id, CSW_SG552, naboje[id])
    }
    return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
    if(!ma_klase[id])
        return PLUGIN_CONTINUE;
    
    if(read_data(2) != CSW_SG552 && task_exists(id+TASK_TRANSFER))
        remove_task(id+TASK_TRANSFER)
    
    return PLUGIN_CONTINUE;
}
public Client_Spawn(id)
{
    if(!ma_klase[id])
        return PLUGIN_CONTINUE;
        
    g_launcher_ammo[id] = get_pcvar_num(PCvarAmmo);
    magazynek[id] = 30;
    naboje[id] = 90;
    weapon_reloading[id] = false;
    return PLUGIN_CONTINUE;
    
}
public Death()
{
    if(!ma_klase[read_data(2)])
        return PLUGIN_CONTINUE;
        
    remove_task(read_data(2)+TASK_TRANSFER)    
    remove_task(read_data(2)+TASK_RELOAD)
    return PLUGIN_CONTINUE
}
public CmdStart(id, uc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
        
    if(get_user_weapon(id) == CSW_SG552 && ma_klase[id])
    { 
        new button = get_uc(uc, UC_Buttons);
        new ent = fm_find_ent_by_owner(-1, "weapon_sg552", id);
        
        if(!g_launcher[id])
            return FMRES_IGNORED
            
        if(button & IN_ATTACK)
        {
            button &= ~IN_ATTACK;
            set_uc(uc, UC_Buttons, button);
            
            if(!g_launcher_ammo[id] || weapon_reloading[id] || !weapon_idle[id]) 
                return FMRES_IGNORED;
            if(weapon_idle[id] && (get_gametime()-weapon_idle[id]<=1.5)) 
                return FMRES_IGNORED;
        
            new Float:Origin[3], Float:Angle[3], Float:Velocity[3];
            pev(id, pev_origin, Origin);
            pev(id, pev_v_angle, Angle);
            velocity_by_aim(id, 2000, Velocity);
            
            Angle[0] *= -1.0
            
            new ent = fm_create_entity("info_target")
            set_pev(ent, pev_classname, "mortar");
            engfunc(EngFunc_SetModel, ent, XM320_AMMO);
            
            set_pev(ent, pev_solid, SOLID_BBOX);
            set_pev(ent, pev_movetype, MOVETYPE_TOSS);
            set_pev(ent, pev_owner, id);
            set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0});
            set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0});
            set_pev(ent, pev_gravity, 0.3);
            
            set_pev(ent, pev_origin, Origin);
            set_pev(ent, pev_velocity, Velocity);
            set_pev(ent, pev_angles, Angle);
            
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(TE_BEAMFOLLOW)
            write_short(ent)
            write_short(trail)
            write_byte(6)
            write_byte(3)
            write_byte(224)    
            write_byte(224)    
            write_byte(255)
            write_byte(100)
            message_end()
            
            g_launcher_ammo[id]--;
            set_pev(id, pev_weaponanim, (!g_launcher_ammo[id])?8:7)
            new entwpn = fm_find_ent_by_owner(-1, "weapon_sg552", id)
            if(entwpn)
                set_pdata_float(entwpn, 48, 1.5+3.0, 4)
            set_pdata_float(id, 83, 1.5, 4)
            
            weapon_reloading[id] = true;
            emit_sound(id, CHAN_WEAPON, XM320_SHOOT2, 1.0, ATTN_NORM, 0, PITCH_NORM)
            
            if(task_exists(id+TASK_RELOAD)) 
                remove_task(id+TASK_RELOAD)
            
            set_task(3.7, "RELOADING", id+TASK_RELOAD)
        }
        else if(button & IN_RELOAD)
        {
            button &= ~IN_RELOAD;
            set_uc(uc, UC_Buttons, button);
            
            set_pev(id, pev_weaponanim, 0);
            set_pdata_float(id, 83, 0.5, 4);
            if(ent)
                set_pdata_float(ent, 48, 0.5+3.0, 4);
        }
        if(ent)
            cs_set_weapon_ammo(ent, -1);
    }
    else if(get_user_weapon(id) != CSW_SG552 && ma_klase[id])
        weapon_idle[id] = 0.0;
        
    return FMRES_IGNORED;
}
public RELOADING(id)
{
    id -= TASK_RELOAD;
    weapon_reloading[id] = false;
    set_pev(id, pev_weaponanim, 0);
}    
public Nade_Touch(ent, id)
{
    if(!pev_valid(ent))
        return FMRES_IGNORED
    
    new class[32]
    pev(ent, pev_classname, class, charsmax(class))


    if(!equal(class, "mortar"))
        return FMRES_IGNORED
        
    new attacker = pev(ent, pev_owner);
    new Float:entOrigin[3], Float:fDamage, Float:Origin[3];
    pev(ent, pev_origin, entOrigin);
    entOrigin[2] += 1.0;
    
    new Float:xm320_damage = get_pcvar_float(PCvarDamage)+(cod_get_user_intelligence(attacker, 1,1,1)*0.9);
    new Float:xm320_radius = get_pcvar_float(PCvarRadius);
    
    new victim = -1
    while((victim = engfunc(EngFunc_FindEntityInSphere, victim, entOrigin, xm320_radius)) != 0)
    {        
        if(!is_user_alive(victim) || get_user_team(attacker) == get_user_team(victim))
            continue;
        
        pev(victim, pev_origin, Origin);
        fDamage = xm320_damage - floatmul(xm320_damage, floatdiv(get_distance_f(Origin, entOrigin), xm320_radius));
        fDamage *= estimate_take_hurt(entOrigin, victim);
        if(fDamage>0.0)
            UTIL_Kill(attacker, victim, fDamage, DMG_BULLET);
    }
    emit_sound(ent, CHAN_WEAPON, XM320_EXPLO, 1.0, ATTN_NORM, 0, PITCH_NORM)
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
    write_byte(TE_EXPLOSION);
    write_coord(floatround(entOrigin[0]));
    write_coord(floatround(entOrigin[1]));
    write_coord(floatround(entOrigin[2]));
    write_short(explo); 
    write_byte(40); 
    write_byte(30); 
    write_byte(14); 
    message_end(); 
    
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
    write_byte(TE_EXPLOSION); 
    write_coord(floatround(entOrigin[0])); 
    write_coord(floatround(entOrigin[1])); 
    write_coord(floatround(entOrigin[2])); 
    write_short(blast); 
    write_byte(40);
    write_byte(30);
    write_byte(TE_EXPLFLAG_NONE); 
    message_end(); 
    
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(5)
    write_coord(floatround(entOrigin[0])); 
    write_coord(floatround(entOrigin[1])); 
    write_coord(floatround(entOrigin[2]));
    write_short(smoke);
    write_byte(35);
    write_byte(5);
    message_end();
    fm_remove_entity(ent);
    return FMRES_IGNORED
}
stock Float:estimate_take_hurt(Float:fPoint[3], ent) 
{
    new Float:fOrigin[3], tr, Float:fFraction;
    pev(ent, pev_origin, fOrigin);
    engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, 0, tr);
    get_tr2(tr, TR_flFraction, fFraction);
    if(fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
        return 1.0;
    return 0.75;
}
stock UTIL_Kill(atakujacy, obrywajacy, Float:damage, damagebits)
{
    zabity |= (1<<atakujacy);
    cod_inflict_damage(atakujacy, obrywajacy, damage, 0.0, atakujacy, damagebits);
    zabity &= ~(1<<atakujacy);
    
}
public message_DeathMsg()
{
    new killer = get_msg_arg_int(1);
        
    if(zabity & (1<<killer))
    {
        set_msg_arg_string(4, "grenade");
        return PLUGIN_CONTINUE;
    }
    return PLUGIN_CONTINUE;
}
 

 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...