From f5a7a84c84c1e8c8732c596e03f28e9626b9d39a Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 30 Nov 2025 02:16:24 +0500 Subject: [PATCH] tempknife --- scenes/molikman.tscn | 3 +- scenes/weapons/knife.tscn | 46 +++++++++++++++++++ scripts/multiplayer/session.gd | 10 ++-- .../gun/semi_auto_shoot_state.gd | 4 +- 4 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 scenes/weapons/knife.tscn diff --git a/scenes/molikman.tscn b/scenes/molikman.tscn index cf7434e..7d2956f 100644 --- a/scenes/molikman.tscn +++ b/scenes/molikman.tscn @@ -290,6 +290,7 @@ grow_horizontal = 2 grow_vertical = 2 [node name="PanelContainer" type="PanelContainer" parent="HUD"] +visible = false layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 @@ -446,7 +447,7 @@ spawn_path = NodePath("..") [node name="StartingWeaponSpawner" type="Node" parent="WeaponSystem" node_paths=PackedStringArray("weapon_spawner")] script = ExtResource("17_ownlk") starting_pistol = &"uid://djwjl8xll53vn" -starting_knife = &"uid://djwjl8xll53vn" +starting_knife = &"uid://ts4xccpkjd3g" weapon_spawner = NodePath("../WeaponSpawner") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] diff --git a/scenes/weapons/knife.tscn b/scenes/weapons/knife.tscn new file mode 100644 index 0000000..b931705 --- /dev/null +++ b/scenes/weapons/knife.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=8 format=3 uid="uid://ts4xccpkjd3g"] + +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"] +[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://scripts/weapon_system/gun/idle_state.gd" id="2_c20fe"] +[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://scripts/weapon_system/gun/semi_auto_shoot_state.gd" id="3_qf5yf"] +[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://scripts/weapon_system/gun/reload_state.gd" id="4_ndam4"] +[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://scripts/weapon_system/gun/intro_state.gd" id="5_qa48d"] + +[sub_resource type="Curve" id="Curve_6djxj"] +_limits = [0.0, 0.1, 0.0, 20.0] +metadata/_snap_enabled = true +metadata/_snap_count = 8 + +[sub_resource type="Curve" id="Curve_qb62r"] +_limits = [-0.02, 0.02, 0.0, 20.0] + +[node name="Knife" type="Node" node_paths=PackedStringArray("enter_state")] +script = ExtResource("1_2xf1r") +animation_prefix = &"baked_sp_" +visibility_target = &"sp" +max_ammo = 1000000000 +ammo_mags = 0 +slot = &"knife" +enter_state = NodePath("Intro") +metadata/_custom_type_script = "uid://e6lqknfl4ngt" + +[node name="Idle" type="Node" parent="."] +script = ExtResource("2_c20fe") + +[node name="Shoot" type="Node" parent="." node_paths=PackedStringArray("fire_timer")] +script = ExtResource("3_qf5yf") +vertical_curve = SubResource("Curve_6djxj") +horizontal_curve = SubResource("Curve_qb62r") +damage = 50 +shoot_distance = 2.0 +fire_timer = NodePath("../FireTimer") + +[node name="Reload" type="Node" parent="."] +script = ExtResource("4_ndam4") + +[node name="Intro" type="Node" parent="."] +script = ExtResource("5_qa48d") + +[node name="FireTimer" type="Timer" parent="."] +wait_time = 0.15 +one_shot = true diff --git a/scripts/multiplayer/session.gd b/scripts/multiplayer/session.gd index 9af355d..fe7f547 100644 --- a/scripts/multiplayer/session.gd +++ b/scripts/multiplayer/session.gd @@ -226,21 +226,21 @@ func despawn_internal(path: NodePath) -> void: get_node(path).queue_free() -func shoot(damage: int) -> void: +func shoot(damage: int,distance: float = 100) -> void: if multiplayer.get_unique_id() == 1: - shoot_internal(1,damage) + shoot_internal(1,damage,distance) else: - shoot_internal.rpc_id(1,multiplayer.get_unique_id(),damage) + shoot_internal.rpc_id(1,multiplayer.get_unique_id(),damage,distance) @rpc("any_peer","call_local","reliable") -func shoot_internal(id:int , damage: int) -> void: +func shoot_internal(id:int , damage: int, distance: float) -> void: if multiplayer.is_server() == false: return var player: Player = player_nodes[id] var player_camera: Camera3D = player.get_node("Camera3D") var space: PhysicsDirectSpaceState3D = player.get_world_3d().direct_space_state - var endpoint: Vector3 = player_camera.global_position - player_camera.global_basis.z * 100 + var endpoint: Vector3 = player_camera.global_position - player_camera.global_basis.z * distance var ray = PhysicsRayQueryParameters3D.create(player_camera.global_position,endpoint,1) ray.exclude = [player.get_rid()] diff --git a/scripts/weapon_system/gun/semi_auto_shoot_state.gd b/scripts/weapon_system/gun/semi_auto_shoot_state.gd index e02635d..5abeeec 100644 --- a/scripts/weapon_system/gun/semi_auto_shoot_state.gd +++ b/scripts/weapon_system/gun/semi_auto_shoot_state.gd @@ -3,9 +3,9 @@ extends WeaponState @export var vertical_curve: Curve @export var horizontal_curve: Curve -@export var raycast: RayCast3D @export var emptyable: bool @export var damage: int +@export var shoot_distance: float = 100 @export var fire_timer: Timer @@ -38,7 +38,7 @@ func fire() -> void: machine.animation_player.play(with_morphems("shoot")) if is_multiplayer_authority(): - Session.shoot(damage) + Session.shoot(damage,shoot_distance) fire_timer.start() machine.player_camera.recoil(horizontal_curve.sample(bullets_shot),vertical_curve.sample(bullets_shot))