Example #1
0
    public void WeaponGive(int index, bool _find_weapon, int _bullets, int _clips)
    {
        if (!weapon_info_script)
        {
            weapon_info_script = GameObject.Find("Game").GetComponent <WeaponInfo>();
        }
        for (var i = 0; i < weapon.Count; i++)
        {
            if (weapon[i].index == index)
            {
                weapon[i].clips += weapon[i].max_clips;
                return;
            } //index
        }     //for


        AudioSource.PlayClipAtPoint(sound_wg, transform.position, 0.2f);

        ClassWeapon new_weapon = new ClassWeapon();

        if (index != 0)
        {
            Transform temp_object = Instantiate(weapon_info_script.weapon[index].prefab, weapon_ob.FindChild("create_point").position, weapon_ob.FindChild("create_point").rotation) as Transform;
            temp_object.parent    = weapon_ob;
            new_weapon._transform = temp_object;
        }//index

        new_weapon.index           = index;
        new_weapon.sound_shoot     = weapon_info_script.weapon[index].sound_shoot;
        new_weapon.type            = weapon_info_script.weapon[index].type;
        new_weapon.power           = weapon_info_script.weapon[index].power;
        new_weapon.force           = weapon_info_script.weapon[index].force;
        new_weapon.fire_rate       = weapon_info_script.weapon[index].fire_rate;
        new_weapon.fire_wait       = weapon_info_script.weapon[index].fire_wait;
        new_weapon.bot_rate        = weapon_info_script.weapon[index].bot_rate;
        new_weapon._return         = weapon_info_script.weapon[index]._return;
        new_weapon.max_return      = weapon_info_script.weapon[index].max_return;
        new_weapon.min_return      = weapon_info_script.weapon[index].min_return;
        new_weapon.recovery_return = weapon_info_script.weapon[index].recovery_return;
        new_weapon.bullet          = weapon_info_script.weapon[index].bullet;
        new_weapon.cross           = weapon_info_script.weapon[index].cross;
        new_weapon._camera         = weapon_info_script.weapon[index]._camera;
        new_weapon.bullet_speed    = weapon_info_script.weapon[index].bullet_speed;
        new_weapon.auto_target     = weapon_info_script.weapon[index].auto_target;
        new_weapon.range           = weapon_info_script.weapon[index].range;
        new_weapon.bullets         = weapon_info_script.weapon[index].bullets;
        new_weapon.clips           = weapon_info_script.weapon[index].clips;
        new_weapon.max_bullets     = weapon_info_script.weapon[index].max_bullets;
        new_weapon.max_clips       = weapon_info_script.weapon[index].max_clips;
        new_weapon.image           = weapon_info_script.weapon[index].image;
        new_weapon._name           = weapon_info_script.weapon[index]._name;
        new_weapon.target_type     = weapon_info_script.weapon[index].target_type;
        new_weapon.bullet_count    = weapon_info_script.weapon[index].bullet_count;
        weapon.Add(new_weapon);
    }//weapon_give
Example #2
0
    }//WeaponSelectInvoke

    public void Shoot()
    {
        ClassWeapon temp_weapon = weapon[weapon_index];

        FireEffectTrue();
        Invoke("FireEffectFalse", 0.05f);

        if (temp_weapon.sound_shoot)
        {
            AudioSource.PlayClipAtPoint(temp_weapon.sound_shoot, transform.position, 0.5f);
        }
        float temp_return = now_return * metkost;

        for (var i = 0; i < temp_weapon.bullet_count; i++)
        {
            float ran_hor = Random.Range(-temp_return, temp_return) * 0.1f;
            float ran_ver = Random.Range(-temp_return, temp_return) * 0.1f;

            Quaternion temp_bullet_angle = Quaternion.LookRotation(target_pos - shoot_point.position);
            Transform  temp_object       = Instantiate(temp_weapon.bullet, shoot_point.position, temp_bullet_angle) as Transform;
            Bullet     temp_script       = temp_object.GetComponent <Bullet>();
            temp_object.localEulerAngles += new Vector3(ran_hor, ran_ver, 0);
            temp_script.root              = transform;
            temp_script.power             = temp_weapon.power;
            temp_script._speed            = temp_weapon.bullet_speed;
            temp_script.force             = temp_weapon.force;
            temp_script.game_sc           = game_script;
            if (target)
            {
                temp_script.target = target;
            }
        }//for
        if (now_return < max_return)
        {
            now_return += _return;
        }
        temp_weapon.bullets--;
    }//Shoot
Example #3
0
    }             //Update

    public void FindEnemy()
    {
        Invoke("FindEnemy", 1);
        if (man_script.doing == "sit_vehicle")
        {
            return;
        }
        Man         temp_enemy_sc;
        ClassWeapon temp_weapon = weapon_script.weapon[weapon_script.weapon_index];
        Transform   temp_enemy;
        Transform   temp_near_enemy   = null;
        float       temp_distance_big = temp_weapon.range;
        float       temp_distance;
        RaycastHit  hit = new RaycastHit();

        if (enemy && man_script_enemy && man_script_enemy.health > 0)
        {
            temp_distance = Vector3.Distance(enemy.position, transform.position);
            if (temp_distance < temp_distance_big && Physics.Linecast(transform.position + new Vector3(0, 1.7f, 0), man_script_enemy.bip_target.position, out hit))
            {
                if (hit.transform == enemy || hit.transform.root == man_script_enemy.vehicle || (hit.collider.name != "Terrain" && hit.collider.material.name == "Glass (Instance)"))
                {
                    enemy_distance = temp_distance;
                    return;
                }//enemy
                else if (man_script_enemy.doing != "sit_vehicle")
                {
                    game_sc.GetPositionKiller(enemy);
                }
            } //temp_distance
        }     //enemy


        enemy = null;
        for (var i = 0; i < game_sc.man.Count; i++)
        {
            temp_enemy    = game_sc.man[i];
            temp_enemy_sc = temp_enemy.GetComponent <Man>();
            if (temp_enemy && temp_enemy_sc && temp_enemy_sc.health > 0 && ((man_script.team != 0 && temp_enemy_sc.team != 0 && temp_enemy_sc.team != man_script.team) ||
                                                                            (boss && (man_script_boss.enemy == temp_enemy || (man_script_boss.danger && temp_enemy_sc.cop))) || (temp_enemy != boss && (temp_enemy_sc.team != man_script.team || man_script.team == 0) && (man_script.killer == temp_enemy || man_script.enemy == temp_enemy))))
            {
                temp_distance = Vector3.Distance(temp_enemy.position, transform.position);
                if (temp_distance < temp_distance_big && Physics.Linecast(transform.position + new Vector3(0, 1.7f, 0), temp_enemy_sc.bip_target.position, out hit))
                {
                    if (hit.transform == temp_enemy || hit.transform.root == temp_enemy || hit.transform.root == temp_enemy_sc.vehicle || (hit.collider.name != "Terrain" && hit.collider.material.name == "Glass (Instance)"))
                    {
                        temp_near_enemy   = temp_enemy;
                        temp_distance_big = temp_distance;
                    } //temp_enemy
                }     //temp_distance
            }         //danger
        }             //for

        if (temp_near_enemy != null)
        {
            if (weapon_script.weapon_index == 0 && weapon_script.weapon.Count > 1)
            {
                weapon_script.WeaponSelect(1); return;
            }
            fire                  = true;
            enemy                 = temp_near_enemy;
            man_script_enemy      = enemy.GetComponent <Man>();
            enemy_distance        = temp_distance_big;
            bot_script.have_point = false;
        }//temp_near_enemy
        else if (fire)
        {
            fire = false;
            if (!boss)
            {
                bot_script.have_point = true;
            }
            bot_script.other_doing = false;
            weapon_script.EndFire();
        }
    }//FindEnemy
Example #4
0
    }     //Update

    public void FindEnemy()
    {
        Invoke("FindEnemy", 1);
        Man         temp_enemy_sc;
        ClassWeapon temp_weapon = weapon_script.weapon[weapon_script.weapon_index];
        Transform   temp_enemy;
        Transform   temp_near_enemy   = null;
        float       temp_distance_big = 100;
        float       temp_distance;
        RaycastHit  hit;


        if (temp_weapon.range > temp_distance_big)
        {
            temp_distance_big = temp_weapon.range;
        }
        if (enemy && man_script_enemy && man_script_enemy.health > 0)
        {
            temp_distance = Vector3.Distance(enemy.position, transform.position);
            if (temp_distance < temp_distance_big && Physics.Linecast(transform.position + game_sc.Vector(0, 1.7f, 0), man_script_enemy.bip_target.position, out hit))
            {
                if (hit.transform == enemy || hit.transform.root == man_script_enemy.vehicle || (hit.collider.name != "Terrain" && hit.collider.material.name == "Glass (Instance)"))
                {
                    enemy_distance = temp_distance;
                    return;
                }//enemy
                else
                {
                    game_sc.GetPositionKiller(enemy);
                }
            } //temp_distance
        }     //enemy


        enemy = null;
        for (var i = 0; i < game_sc.man.Count; i++)
        {
            temp_enemy    = game_sc.man[i];
            temp_enemy_sc = temp_enemy.GetComponent <Man>();
            if (temp_enemy && temp_enemy_sc && temp_enemy_sc.health > 0 && temp_enemy_sc.danger)
            {
                temp_distance = Vector3.Distance(temp_enemy.position, transform.position);
                if (temp_distance < temp_distance_big && Physics.Linecast(transform.position + game_sc.Vector(0, 1.7f, 0), temp_enemy_sc.bip_target.position, out hit))
                {
                    if (hit.transform == temp_enemy || hit.transform.root == temp_enemy || hit.transform.root == temp_enemy_sc.vehicle || (hit.collider.name != "Terrain" && hit.collider.material.name == "Glass (Instance)"))
                    {
                        temp_near_enemy   = temp_enemy;
                        temp_distance_big = temp_distance;
                        old_pos           = temp_enemy.position;
                    } //temp_enemy
                }     //temp_distance
            }         //danger
        }             //for

        if (temp_near_enemy != null)
        {
            if (weapon_script.weapon_index == 0)
            {
                weapon_script.WeaponSelect(1); return;
            }
            fire             = true;
            enemy            = temp_near_enemy;
            man_script_enemy = enemy.GetComponent <Man>();
            man_script_enemy.Danger();
            enemy_distance = temp_distance_big;
            old_pos        = enemy.position;
        }//temp_near_enemy
        else if (fire)
        {
            fire          = false;
            go_to_old_pos = true;
            weapon_script.EndFire();
        }
    }//FindEnemy