Добро пожаловать

Для полноценного пользования форумом и общения с его участниками, пройдите регистрацию ниже
Регистрация

Закрыто Не даются деньги за убийство базукой (BazookaWarsDM)

Тема в разделе "Свалка", создана пользователем Levinson, 4 июл 2017.

Статус темы:
Закрыта.
  1. Levinson

    Levinson Проверенный

    26
    11
    20
    Код:
    #include <amxmodx>
    #include <xs>
    #include <fun>
    #include <cstrike>
    #include <engine>
    #include <fakemeta>
    #include <hamsandwich>
    
    #define FL_MAX_DAMAGE 175.0
    #define FL_EXPLOSION_RADIUS 200.0
    #define FL_MAX_THROW_SPEED 1700.0
    #define INT_ROCKET_SPEED 1500
    ///////////////////////////////////////////////
    #define MODEL_V_BAZOOKA "models/a4_project/v_bazooka.mdl"
    #define MODEL_P_BAZOOKA "models/a4_project/p_bazooka.mdl"
    #define MODEL_ROCKET "models/a4_project/raketa.mdl"
    #define SOUND_LAUNCH "Bazooka/launch.wav"
    #define SOUND_EXPLODE "Bazooka/explode.wav"
    #define SPRITE_TRAIL "sprites/a4_project/vselennaya.spr"
    #define SPRITE_EXPLOSION "sprites/a4_project/explosion.spr"
    
    new g_iExplosion, g_iTrail;
    
    new g_iDeathMsg, g_iBarTimeMsg;
    
    new g_fwdKeyValue;
    
    public plugin_init()
    {
        register_plugin("Bazooka DM: Main", "2.0 stable", "didoWEE");
        register_cvar( "bzdm_version", "2.0 stable", FCVAR_SERVER | FCVAR_SPONLY);
        
        g_iBarTimeMsg = get_user_msgid("BarTime");
        g_iDeathMsg = get_user_msgid("DeathMsg");
        
        register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon");            // buy menu block
        register_message(get_user_msgid("HudTextArgs"), "Message_HudTextArgs");             // *spawned with bomb* message block
        
        register_clcmd("jointeam", "cmdTeamChange");                        // team change block
        register_clcmd("chooseteam", "cmdTeamChange");                    // --/--
        
        register_forward(FM_ClientKill, "fwdClientKill");                        // kill cmd block
        register_forward(FM_GetGameDescription, "fwdGameDescription");
        
        register_touch("rocket", "*", "fwdTouch");
        
        register_event("CurWeapon", "eventCurrent_Weapon", "be", "1=1");
        
        RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawnPost", 1);
        RegisterHam(Ham_AddPlayerItem, "player", "fwdAddPlayerItemPre");             // bomb remove
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwdKnifePrimaryAttackPre");
        RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwdKnifeSecondaryAttackPre");
    
        unregister_forward(FM_KeyValue, g_fwdKeyValue);
    }
    
    public plugin_precache()
    {
        g_fwdKeyValue = register_forward(FM_KeyValue, "fwdKeyValue");                // remove all map weapons
        
        precache_model(MODEL_V_BAZOOKA);
        precache_model(MODEL_P_BAZOOKA);
        precache_model(MODEL_ROCKET);
        precache_sound(SOUND_LAUNCH);
        precache_sound(SOUND_EXPLODE);
        g_iTrail = precache_model(SPRITE_TRAIL);
        g_iExplosion = precache_model(SPRITE_EXPLOSION);
    }
    
    public fwdPlayerSpawnPost(id)
    {
        if(is_user_alive(id))
        {
            strip_user_weapons(id);
            give_item(id, "weapon_knife");
        }
    }
    
    public fwdAddPlayerItemPre(id , iWeapon)
    {
        if(cs_get_weapon_id( iWeapon ) == CSW_C4)
        {
            cs_set_user_plant(id, 0, 0);
            entity_set_int(id, EV_INT_body, 0);
            SetHamReturnInteger(false);
            return HAM_SUPERCEDE;
        }
        return HAM_IGNORED;
    }
    
    public eventCurrent_Weapon(id)
    {
        if(read_data(2) == CSW_KNIFE)
        {
            entity_set_string(id, EV_SZ_viewmodel, MODEL_V_BAZOOKA);
            entity_set_string(id, EV_SZ_weaponmodel, MODEL_P_BAZOOKA);
        }
    }
    
    public fwdKnifePrimaryAttackPre(ent)
    {
        ExecuteHamB(Ham_Weapon_SecondaryAttack, ent);
        return HAM_SUPERCEDE;
    }
    
    public fwdKnifeSecondaryAttackPre(ent)
    {
        set_pdata_float(ent, 46, 2.2, 4);
        set_pdata_float(ent, 47, 2.2, 4);
        Launch(entity_get_edict(ent, EV_ENT_owner));
        return HAM_SUPERCEDE;
    }
    
    public fwdTouch(ent1, ent2)
    {
        if(!is_valid_ent(ent1))
            return PLUGIN_CONTINUE;
        // do we need this?
        static classname[7];
        entity_get_string(ent1, EV_SZ_classname, classname, charsmax(classname));
        
        if(!equal(classname, "rocket"))
            return PLUGIN_CONTINUE;
        ////////////////////////
        
        Explode(ent1);
        return PLUGIN_CONTINUE;
    }
    
    Launch(id)
    {
        static Float:Origin[3], Float:Angle[3], Float:Velocity[3];
        static Float:Box[3] = {-1.0, -1.0, -1.0};
        
        showBarTime(id, 2);
        
        entity_get_vector(id, EV_VEC_v_angle, Angle);
        entity_get_vector(id, EV_VEC_origin, Origin);
        Angle[0] *= -1.0;
        Origin[2] += 16.0;
        
        new ent = create_entity("info_target");
        entity_set_string(ent, EV_SZ_classname, "rocket");
        entity_set_model(ent, MODEL_ROCKET);
        entity_set_vector(ent, EV_VEC_origin, Origin);
        entity_set_vector(ent, EV_VEC_angles, Angle);
        
        entity_set_vector(ent, EV_VEC_mins, Box);
        Box[0] *= -1.0; Box[1] *= -1.0; Box[2] *= -1.0;
        entity_set_vector(ent, EV_VEC_maxs, Box);
        
        entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
        entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY);
        entity_set_edict(ent, EV_ENT_owner, id);
        
        velocity_by_aim(id, INT_ROCKET_SPEED, Velocity);
        entity_set_vector(ent, EV_VEC_velocity, Velocity);
        
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMFOLLOW);
        write_short(ent);
        write_short(g_iTrail);
        write_byte(25);
        write_byte(5);
        write_byte(255);
        write_byte(255);
        write_byte(255);
        write_byte(255);
        message_end();
        emit_sound(ent, CHAN_AUTO, SOUND_LAUNCH, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        
        showWeaponAnimation(id, 2);
    }
    
    Explode(ent)
    {
        static attacker;
        attacker = entity_get_edict(ent, EV_ENT_owner);
        if(!is_user_connected(attacker))
        {
            remove_entity(ent);
            return PLUGIN_HANDLED;
        }
        
        static Float:vecEntityOrigin[3];
        entity_get_vector(ent, EV_VEC_origin, vecEntityOrigin);
        
        emit_sound(ent, CHAN_AUTO, SOUND_EXPLODE, VOL_NORM, ATTN_NORM, 0, PITCH_HIGH);
        
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_SPRITE);
        write_coord(floatround(vecEntityOrigin[0]));
        write_coord(floatround(vecEntityOrigin[1]));
        write_coord(floatround(vecEntityOrigin[2]));
        write_short(g_iExplosion);
        write_byte(floatround(FL_EXPLOSION_RADIUS/2));
        write_byte(255);
        message_end();
        
        static Float:vecPlayerOrigin[3];
        static Float:vecVelocity[3];
        static Float:flDistance;
        static Float:flPercent;
        static Float:flDamage;
        
        static i, id, iCount, iPlayers[32];
        get_players(iPlayers, iCount, "a");
        
        for(i=0; i<iCount; i++)
        {
            id = iPlayers[i];
            entity_get_vector(id, EV_VEC_origin, vecPlayerOrigin);
            xs_vec_sub(vecPlayerOrigin, vecEntityOrigin, vecVelocity);
            flDistance = vector_length(vecVelocity);
            
            if(flDistance > FL_EXPLOSION_RADIUS)
                continue;
                
            flPercent = 1.0 - flDistance / FL_EXPLOSION_RADIUS;
            flDamage = flPercent * FL_MAX_DAMAGE;
                
            xs_vec_mul_scalar(vecVelocity, (flPercent * FL_MAX_THROW_SPEED) / flDistance, vecVelocity);
            vecVelocity[2] *= 1.5; // more fun
            entity_set_vector(id, EV_VEC_velocity, vecVelocity);
                
            if(get_user_health(id) > flDamage)
                ExecuteHamB(Ham_TakeDamage, id, ent, attacker, flDamage, DMG_BLAST);
            else
            {
                if(id != attacker)
                    ExecuteHam(Ham_AddPoints, attacker, 1, 0);
                    
                set_msg_block(g_iDeathMsg, BLOCK_SET);
                user_kill(id, 1);
                set_msg_block(g_iDeathMsg, BLOCK_NOT);
                    
                message_begin(MSG_BROADCAST, g_iDeathMsg);
                write_byte(attacker)
                write_byte(id)
                write_byte(0);
                write_string("bazooka");
                message_end();
                
                showBarTime(id, 0);
            }
        }
        remove_entity(ent);
        return PLUGIN_CONTINUE;
    }
    
    public fwdClientKill(id)
        return FMRES_SUPERCEDE;
    
    public cmdTeamChange(id)
    {
        if(cs_get_user_team(id) != CS_TEAM_T
        && cs_get_user_team(id) != CS_TEAM_CT)
            return PLUGIN_CONTINUE;
        return PLUGIN_HANDLED;
    }
    
    public fwdGameDescription()
    {
        forward_return(FMV_STRING, "Bazooka DM");
        return FMRES_SUPERCEDE;
    }
    
    public fwdKeyValue(const ent, const KvdHandle)
    {
        if(pev_valid(ent))
        {
            new szClassname[16];
            get_kvd(KvdHandle, KV_ClassName, szClassname, charsmax(szClassname));
            if(equal(szClassname, "armoury_entity"))
            {
                engfunc(EngFunc_RemoveEntity, ent);
                return FMRES_SUPERCEDE;
            }
        }
        return FMRES_IGNORED;
    }
    
    public Message_HudTextArgs(iMsgId, iMsgDest, id)
    {
        new szMessage[64];
        get_msg_arg_string(1, szMessage, charsmax(szMessage));
        if(equal(szMessage, "#Hint_you_have_the_bomb"))
            return PLUGIN_HANDLED;
        return PLUGIN_CONTINUE;
    }
    
    public Message_StatusIcon(iMsgId, iMsgDest, id)
    {
        static szIcon[8];
        get_msg_arg_string(2, szIcon, charsmax(szIcon));
        
        if(!equal(szIcon, "buyzone"))
            return PLUGIN_CONTINUE;
            
        if(!get_msg_arg_int(1))
            return PLUGIN_CONTINUE;
            
        set_pdata_int(id, 235, get_pdata_int(id, 235, 5) & ~(1<<0), 5);
        return PLUGIN_HANDLED;
    }
    
    showBarTime(id, time)
    {
        message_begin(MSG_ONE_UNRELIABLE, g_iBarTimeMsg,. player=id);
        write_short(time);
        message_end();
    }
    
    showWeaponAnimation(id, anim)
    {
        entity_set_int(id, EV_INT_weaponanim, anim);
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM,. player=id);
        write_byte(anim);
        write_byte(entity_get_int(id, EV_INT_body));
        message_end();
    }
    Здравствуйте, хочу поставить на свой сервер магазин с деньгами, но у меня мод Базука варс, и за убийство базукой деньги не прибавляются и значок убийства справа вверху (скелет, типа сам себя убил) .
    Как сделать так, чтобы деньги давались за это убийство? Вот вам исход
     
Похожие темы
  1. Saints
    Ответов:
    0
    Просмотров:
    403
  2. Streetbit

    Закрыто Деньги

    Streetbit, 3 фев 2016, в разделе: Свалка
    Ответов:
    9
    Просмотров:
    558
  3. artemkaint
    Ответов:
    5
    Просмотров:
    620
  4. Kekcik
    Ответов:
    5
    Просмотров:
    679
  5. QWERTY

    Обманули На деньги

    Ответов:
    1
    Просмотров:
    691
Загрузка...
Статус темы:
Закрыта.