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
}//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
} //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
} //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