mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-16 00:44:50 +00:00
✨ Assign kills and points on kill, not on respawn
This commit is contained in:
parent
baa4d2d5f1
commit
c3ce3b96b0
2 changed files with 15 additions and 17 deletions
|
|
@ -62,6 +62,10 @@ var g : float = ProjectSettings.get_setting("physics/3d/default_gravity") # in m
|
||||||
var gravity : Vector3 = g * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
|
var gravity : Vector3 = g * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
|
||||||
var _jumping : bool = false
|
var _jumping : bool = false
|
||||||
|
|
||||||
|
@rpc("call_local")
|
||||||
|
func set_nickname(value : String) -> void:
|
||||||
|
nickname = value
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
energy_changed.connect(hud._on_energy_changed)
|
energy_changed.connect(hud._on_energy_changed)
|
||||||
health_component.health_changed.connect(hud._on_health_changed)
|
health_component.health_changed.connect(hud._on_health_changed)
|
||||||
|
|
@ -228,28 +232,17 @@ func _update_third_person_animations() -> void:
|
||||||
tp_player.set_locomotion(Vector2(local_velocity.x, local_velocity.z), bias)
|
tp_player.set_locomotion(Vector2(local_velocity.x, local_velocity.z), bias)
|
||||||
|
|
||||||
func _is_player_dead() -> bool:
|
func _is_player_dead() -> bool:
|
||||||
return player_state == PlayerState.PLAYER_DEAD
|
return player_state != PlayerState.PLAYER_ALIVE
|
||||||
|
|
||||||
func die(killer_id : int) -> void:
|
func die(killer_id : int) -> void:
|
||||||
|
flag_carry_component.drop()
|
||||||
player_state = PlayerState.PLAYER_DEAD
|
player_state = PlayerState.PLAYER_DEAD
|
||||||
if _is_pawn():
|
if _is_pawn():
|
||||||
animation_player.stop()
|
|
||||||
animation_player.play("death")
|
animation_player.play("death")
|
||||||
var tween : Tween = create_tween()
|
died.emit(self, killer_id)
|
||||||
tween.tween_interval(4)
|
|
||||||
tween.tween_callback(func() -> void:
|
|
||||||
died.emit(self, killer_id)
|
|
||||||
if _is_pawn():
|
|
||||||
animation_player.stop()
|
|
||||||
)
|
|
||||||
flag_carry_component.drop()
|
|
||||||
|
|
||||||
@rpc("call_local")
|
|
||||||
func set_nickname(value : String) -> void:
|
|
||||||
nickname = value
|
|
||||||
|
|
||||||
func respawn(location : Vector3) -> void:
|
func respawn(location : Vector3) -> void:
|
||||||
|
player_state = PlayerState.PLAYER_ALIVE
|
||||||
linear_velocity = Vector3()
|
linear_velocity = Vector3()
|
||||||
health_component.heal_full()
|
health_component.heal_full()
|
||||||
position = location
|
position = location
|
||||||
player_state = PlayerState.PLAYER_ALIVE
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ script/source = "class_name Multiplayer extends Node
|
||||||
@export var PLAYER : PackedScene
|
@export var PLAYER : PackedScene
|
||||||
@export var FLAG : PackedScene
|
@export var FLAG : PackedScene
|
||||||
@export var MAX_CLIENTS : int = 24
|
@export var MAX_CLIENTS : int = 24
|
||||||
|
@export var RESPAWN_TIME : float = 3.0
|
||||||
|
|
||||||
@onready var players : Node = $Players
|
@onready var players : Node = $Players
|
||||||
@onready var objectives : Node = $Objectives
|
@onready var objectives : Node = $Objectives
|
||||||
|
|
@ -50,7 +51,7 @@ func _on_connected_to_server(nickname : String) -> void:
|
||||||
func _on_connection_failed() -> void:
|
func _on_connection_failed() -> void:
|
||||||
connection_failed.emit()
|
connection_failed.emit()
|
||||||
|
|
||||||
func respawn_player(player : Player, killer_id : int) -> void:
|
func _on_player_died(player : Player, killer_id : int) -> void:
|
||||||
if player.player_id != killer_id:
|
if player.player_id != killer_id:
|
||||||
var node_name : String = str(killer_id)
|
var node_name : String = str(killer_id)
|
||||||
if players.has_node(node_name):
|
if players.has_node(node_name):
|
||||||
|
|
@ -58,6 +59,10 @@ func respawn_player(player : Player, killer_id : int) -> void:
|
||||||
scoreboard.increment_kill_count(killer)
|
scoreboard.increment_kill_count(killer)
|
||||||
scoreboard.add_score_to_player(killer, 10)
|
scoreboard.add_score_to_player(killer, 10)
|
||||||
scoreboard.broadcast_player_score_update(killer)
|
scoreboard.broadcast_player_score_update(killer)
|
||||||
|
await get_tree().create_timer(RESPAWN_TIME).timeout
|
||||||
|
respawn_player(player)
|
||||||
|
|
||||||
|
func respawn_player(player : Player) -> void:
|
||||||
var spawn_location : Vector3 = _map_manager.get_player_spawn().position
|
var spawn_location : Vector3 = _map_manager.get_player_spawn().position
|
||||||
player.respawn(spawn_location)
|
player.respawn(spawn_location)
|
||||||
|
|
||||||
|
|
@ -68,7 +73,7 @@ func add_player(peer_id : int, nickname : String) -> void:
|
||||||
player.nickname = nickname
|
player.nickname = nickname
|
||||||
player.global_position = _map_manager.get_player_spawn().position
|
player.global_position = _map_manager.get_player_spawn().position
|
||||||
players.add_child(player)
|
players.add_child(player)
|
||||||
player.died.connect(respawn_player)
|
player.died.connect(_on_player_died)
|
||||||
scoreboard.add_entry(player)
|
scoreboard.add_entry(player)
|
||||||
print(\"Peer `%s` connected\" % player.name)
|
print(\"Peer `%s` connected\" % player.name)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue