diff options
Diffstat (limited to 'godot/scripts/characters')
| -rw-r--r-- | godot/scripts/characters/NetworkedCharacter.gd | 17 | ||||
| -rw-r--r-- | godot/scripts/characters/player_controller_new.gd | 17 |
2 files changed, 21 insertions, 13 deletions
diff --git a/godot/scripts/characters/NetworkedCharacter.gd b/godot/scripts/characters/NetworkedCharacter.gd index 8a0282d..d904593 100644 --- a/godot/scripts/characters/NetworkedCharacter.gd +++ b/godot/scripts/characters/NetworkedCharacter.gd @@ -2,7 +2,7 @@ extends RigidBody class_name NetChar # Game -export var team: String = "RED" +export var team = 0 export var health: int = 100 export var weapon_slot1: Resource = null export var weapon_slot2: Resource = null @@ -40,7 +40,7 @@ remote func set_phys_transform(trfrm: Transform, lvel: Vector3): transform = trfrm linear_velocity = lvel -remotesync func set_net_owner(owner_id: int): +remotesync func set_net_owner(owner_id: int, singleplayer_reset: bool = false): $Nametag.text = "" set_network_master(owner_id) if owner_id != 1: @@ -55,12 +55,19 @@ remotesync func set_net_owner(owner_id: int): $Nametag.visible = true is_player = false world.get_node("HUD").update_characters() + elif world.is_local: + if singleplayer_reset: + is_player = false + else: + world.player_char = self + is_player = true + world.cam.attach(self, "FIRSTPERSON", "./Neck/Head") func deselect_character(): - if is_network_master(): + if is_network_master() and world.player_char == self: world.player_char = null - if world.client_id != 1: world.cam.attach(world, "STATIC", "./DEFAULTCAM") - rpc("set_net_owner", 1) + world.cam.attach(world, "STATIC", "./DEFAULTCAM") + rpc("set_net_owner", 1, true) func take_control_of_machine(slave_machine: RigidBody): machine = slave_machine diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd index 62f5ef6..232e5e0 100644 --- a/godot/scripts/characters/player_controller_new.gd +++ b/godot/scripts/characters/player_controller_new.gd @@ -63,6 +63,9 @@ const DROWN_DICT: Dictionary = {"type" : "DROWN", "attacker_net_id" : 1, "attack # Called when the node enters the scene tree func _ready() -> void: + if get_parent().name == "CREW": + team = owner.team + if weapon_slot1 == null: weapon_slot1 = preload("res://scenes/weapons/hands.res") weapons = [weapon_slot1,weapon_slot2,weapon_slot3,weapon_slot4,weapon_slot5] @@ -74,8 +77,6 @@ func _ready() -> void: $"%UseRay".add_exception(self) $"%MeleeRay".add_exception(self) - $"%UseRay".add_exception($AreaDetect) - $"%MeleeRay".add_exception($AreaDetect) if ai_target_machine_path: ai_target_machine = get_node(ai_target_machine_path) @@ -181,15 +182,15 @@ func load_process(delta) -> void: if use_ray.is_colliding() and use_ray.get_collider().get_parent() == load_target and use_held: var progress: float =load_target.increase_load(delta) if progress < 0: - if get_network_master() != 1: world.hud.hide_progress() + if is_player: world.hud.hide_progress() load_target.reset_load() loading = false load_target = null inventory[load_ammo] -= 1 else: - if get_network_master() != 1: world.hud.set_progress(progress) + if is_player: world.hud.set_progress(progress) else: - if get_network_master() != 1: world.hud.hide_progress() + if is_player: world.hud.hide_progress() load_target.reset_load() loading = false load_target = null @@ -263,7 +264,7 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void: return player_state = state velocity = state.get_linear_velocity() - for i in range(player_state.get_contact_count()): + if is_player: for i in range(player_state.get_contact_count()): var contact_angle_from_up : float = Vector3.UP.angle_to(player_state.get_contact_local_normal(i)) if contact_angle_from_up > FLOOR_MAX_ANGLE and !is_on_floor: physics_material_override.friction = 0 @@ -271,11 +272,11 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void: if i == player_state.get_contact_count() - 1: physics_material_override.friction = 1 - rpc("set_phys_transform", transform, linear_velocity) + rpc_unreliable("set_phys_transform", transform, linear_velocity) if global_transform.origin.y < -30: rpc("damage", 500000, DROWN_DICT) - nav.set_velocity(velocity) + #nav.set_velocity(velocity) func walk(_delta: float) -> void: if floor_normal != Vector3.UP: direction = direction.rotated(floor_normal.cross(Vector3.UP).normalized(), Vector3.UP.angle_to(floor_normal)) |
