точно есть дэшм

This commit is contained in:
2026-07-21 00:27:17 +07:00
parent 1df926f1d8
commit d74fa3bd80
601 changed files with 2375919 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
extends StaticBody3D
# ID оружия из WeaponResource (например: 0 - пистолет, 1 - автомат)
@export var weaponIdToGive : int = 0
func _on_detect_area_area_entered(area: Area3D):
# Проверяем, что в зону вошел именно игрок
if area.get_parent() is PlayerCharacter:
var playChar = area.get_parent()
# 1. Сначала проверяем, есть ли вообще у игрока LinkComponent (как в вашем ящике)
var linkComponent : Node3D = playChar.get_node_or_null("LinkComponent")
if linkComponent != null:
# 2. Ищем WeaponManager напрямую внутри игрока (playChar) на любой глубине
var weapon_manager = playChar.find_child("WeaponManager", true, false)
# Если по имени "WeaponManager" не нашло, попробуем найти скрипт, где есть weaponStack
if weapon_manager == null:
for child in playChar.get_children():
if "weaponStack" in child:
weapon_manager = child
break
# 3. Если менеджер успешно найден, выполняем подбор
if weapon_manager and "weaponStack" in weapon_manager:
# Проверяем, нет ли этого оружия уже в инвентаре
if not weapon_manager.weaponStack.has(weaponIdToGive):
# Добавляем ID оружия в стек игрока
weapon_manager.weaponStack.append(weaponIdToGive)
# Обновляем текущий индекс оружия на только что подобранное
weapon_manager.weaponIndex = weapon_manager.weaponStack.size() - 1
# Вызываем оригинальную функцию смены оружия
weapon_manager.changeWeapon(weaponIdToGive)
# Удаляем объект оружия с земли
queue_free()
else:
print("У игрока уже есть это оружие в weaponStack")
else:
print("КРИТИЧЕСКАЯ ОШИБКА: Узел WeaponManager вообще не найден внутри сцены игрока!")
else:
print("Player character can't pickup weapons (LinkComponent missing)")