Compare commits

...

102 Commits

Author SHA1 Message Date
Hays 2aa142c350 Add model Ak-12 and glock 2024-04-10 00:23:39 +03:00
leca 6fba0c6e58 fix 2024-04-07 21:02:41 +03:00
leca 74b140fb1d changed icon 2024-03-29 22:27:05 +03:00
leca b3040b4de0 fix first bullet 2024-03-27 20:47:54 +03:00
leca 52400f950a fix killed spectator after last player quit 2024-03-27 20:10:19 +03:00
leca b4677e91b9 added tracers 2024-03-27 20:07:26 +03:00
leca fb839f3467 Fixed weapon 2024-03-10 01:01:27 +03:00
leca a1dbbb72a9 moved properties to GameData singleton 2024-03-07 14:46:59 +03:00
leca f18dc4336e fixed typo 2024-03-07 13:24:51 +03:00
leca 0ddfd64bb5 now changing nicknames of killer and victim 2024-03-07 02:00:22 +03:00
leca 65ea09295e change default map 2024-03-05 22:50:53 +03:00
leca dca91249e0 move spawnpoints 2024-03-05 22:48:00 +03:00
leca aaedb60b86 rework of player rotation, add killog 2024-03-05 22:45:27 +03:00
leca eb1ba01812 Add hud functionality, decomposition of Networking.gd 2024-03-05 18:58:11 +03:00
dise 6b2f1db9f9 Update UI 2024-03-05 15:23:21 +03:00
leca 7190a51e62 Add backend round&games mechanic 2024-03-05 02:46:07 +03:00
dise dc8b70f14b add knife model 2024-03-05 01:16:14 +03:00
dise 8e0093333d Add knife model 2024-03-05 01:16:14 +03:00
dise 250afc6394 Add knife model 2024-03-05 01:16:14 +03:00
leca 151b68d6d8 rework of server loading 2024-03-05 00:18:05 +03:00
Hays eee4baf79a Office: Sosi 2024-03-04 22:13:10 +03:00
dise 8712d1ecda Fix menu 2024-03-04 20:59:50 +03:00
leca e3241121da Add check availability of a map 2024-03-04 20:49:27 +03:00
leca 8457172c53 fix icon 2024-03-03 16:06:22 +03:00
leca 3ee8d878fa add logo 2024-03-03 16:03:33 +03:00
leca 6d8e66815e added ladder functionality 2024-03-02 03:46:17 +03:00
dise 63d3d8cc44 Add icon.SvG 2024-02-29 23:16:55 +03:00
dise bc8850b67d Merge remote-tracking branch 'refs/remotes/origin/master' 2024-02-29 23:15:44 +03:00
dise 5f71e6f9d4 add icon.PnG 2024-02-29 23:14:04 +03:00
leca 10cb509bc5 add ui functionality 2024-02-29 23:13:30 +03:00
dise aed4f324d0 Update hud 2024-02-29 23:01:05 +03:00
leca 256adf14ab add logo 2024-02-29 22:32:56 +03:00
leca 5ac9daba58 sorry not sorry 2024-02-29 20:27:40 +03:00
leca e0664504ff added functionality to targets 2024-02-29 20:23:16 +03:00
dise 4ab2591e79 Update UI 2024-02-29 19:49:33 +03:00
leca f60abab444 Added taskbar buttons functional 2024-02-29 17:52:48 +03:00
leca 945b96e05b Rework of damage mechanic 2024-02-29 17:43:41 +03:00
leca 528a9bc425 fix playermodel collisions 2024-02-29 15:43:16 +03:00
leca 2142fbf55a cleand file structure & rework of playermodel 2024-02-29 15:21:37 +03:00
dise 95eedf8134 Update player model 2024-02-29 14:13:45 +03:00
dise 788e486d6c New models & Update Training map 2024-02-28 22:36:39 +03:00
dise 7b568eb8a9 Update UI & Player Model + Add new materials 2024-02-28 21:28:13 +03:00
dise 6b131e7ee2 Add player and target models 2024-02-28 20:07:56 +03:00
leca 784068289c fix menu 2024-02-28 14:21:56 +03:00
leca c0be7e285d sorry 2024-02-28 14:18:14 +03:00
leca fcf3740f58 Added inertia and acceleration 2024-02-28 09:27:41 +03:00
leca eaa49d7a7f Added acceleration and inertia 2024-02-28 09:23:20 +03:00
dise 59972a49f7 Update UI 2024-02-27 22:17:44 +03:00
dise 4dd4093ca8 Add training map 2024-02-27 20:46:42 +03:00
leca 9bf4fd5b69 So that hays won't cry 2024-02-27 12:05:32 +03:00
dise 46b3100cde Merge branch 'master' of https://git.foxarmy.org/cs-os/cs-os 2024-02-27 11:53:14 +03:00
dise 004a478c43 Add materials & New map 2024-02-27 11:53:01 +03:00
leca 65ca46bdf2 reworked player movement 2024-02-26 23:06:15 +03:00
dise a7cfce5b47 Add materials 2024-02-26 22:32:33 +03:00
dise 0fdd4ba96a Move to 32x32 textures 2024-02-26 21:23:37 +03:00
dise a62f60da74 Merge branch 'master' of https://git.foxarmy.org/cs-os/cs-os 2024-02-26 21:13:06 +03:00
dise 2dedb2664b Add textures 2024-02-26 21:12:05 +03:00
leca 2f4181a18b Player now respawns at proper spawnpoint 2024-02-26 18:18:52 +03:00
dise 73b647484d add textures 2024-02-26 17:56:55 +03:00
dise 981496275f map rework 2024-02-26 17:49:09 +03:00
leca 0f0217713a Implementation of teams and it's spawnpoints and partial(basic) implementation of classes 2024-02-26 13:32:26 +03:00
leca 534a3be505 fixed file structure 2024-02-25 18:26:42 +03:00
leca 18471e74ec Firing is now from the gun itself + bugfixes 2024-02-24 20:11:41 +03:00
leca 25405cf9b5 renamed objects, fixed substraction bug caused hole in floor 2024-02-21 15:58:58 +03:00
leca d1e3e3d313 created settings for class types, embeeded spawnpoint config 2024-02-21 15:52:46 +03:00
leca a1cefe5e5a Spawning point changed 2024-02-21 15:34:19 +03:00
Hays 724a0500a4 MAP | Office update: 0.1/4(Fixed proportions) 2024-02-21 08:06:29 +03:00
Hays 92c1549ec5 MAP | Office update: 0.1/3 2024-02-21 07:54:06 +03:00
leca e2e2bcc13f Making server run custom map 2 2024-02-21 04:55:58 +03:00
leca b64803f190 Making server run custom map2 2024-02-21 04:53:45 +03:00
Hays 0542d067ef Office update: 0.1/2 2024-02-20 15:49:22 -10:00
Hays 3d4c0b63a4 Merge branch 'master' of https://git.foxarmy.org/cs-os/cs-os 2024-02-20 15:45:41 -10:00
leca 38c518e65a Making server run custom map 2024-02-21 04:37:40 +03:00
Hays 2aa0dfe02c Office update: Collision 2024-02-20 15:28:30 -10:00
Hays d957eceb5a Office update 0.1 2024-02-20 15:10:24 -10:00
leca 1f3864d53c added status label 2024-02-21 03:36:47 +03:00
Hays 6ff95be4bc Map Offis create 2024-02-20 14:29:30 -10:00
leca 00ea617f39 Spectator now captures mouse 2024-02-21 03:25:10 +03:00
leca 9bdeb1d1e4 Added reloading timing 2024-02-21 03:22:33 +03:00
leca 71f9cdec66 fixed wrong weapon range change 2024-02-21 02:23:07 +03:00
Hays 8237ec509a 0-0 2024-02-20 13:15:29 -10:00
leca 4e04f38700 Very unstable ammo and reloading system 2024-02-18 17:36:39 +03:00
leca aa113c7ff8 Now nichname is saved in client settings 2024-02-18 15:00:43 +03:00
leca eb99032a63 Implemented firerate 2024-02-18 02:42:31 +03:00
leca 76b8dc3a17 fixed errors, implemented different weapons, code cleanup 2024-02-18 01:35:54 +03:00
leca de44ff2cce Code cleanup 2024-02-17 21:48:03 +03:00
leca 074ea8b463 now headless version is run via --headless. By default, server launches with spectator camera 2024-02-17 21:42:18 +03:00
leca 4dd130ee10 code cleanup 2024-02-17 20:23:18 +03:00
leca df7ad936f8 changed test_map, small improvements 2024-02-17 14:54:16 +03:00
leca fd0afcc42a fixed crosshair position when resizing 2024-02-17 14:24:08 +03:00
leca e99e1fc984 Implemented hp, shooting and dying 2024-02-17 01:57:08 +03:00
leca a23fd5b5bf small changed 2024-02-15 18:12:48 +03:00
leca b49b910382 implemented nicknames 2024-02-15 15:14:21 +03:00
leca 1b6d45a001 Merged rot and pos sync 2024-02-15 13:10:01 +03:00
leca 92ee1513cc a log of changed 2024-02-14 22:18:05 +03:00
leca 46353fc8f6 Embeeded configs of the game to server, made client ask it 2024-02-12 00:11:50 +03:00
leca c47d3da2cf update gitignore 2024-02-12 00:11:15 +03:00
leca 036e69612c remove unneeded 2024-02-08 22:10:10 +03:00
leca 5ebc9f4686 Delete export_presets.cfg 2024-02-08 22:02:16 +03:00
leca 4ca022610c Update .gitignore 2024-02-08 21:58:36 +03:00
leca 77e94131af remove unneeded & made move funcs unreliable 2024-02-08 21:20:49 +03:00
leca 3c066fb99b code cleanup & improvements 2024-02-08 21:16:31 +03:00
235 changed files with 13695 additions and 415 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

17
.gitignore vendored
View File

@ -1,5 +1,22 @@
# ---> Godot
# Godot 4+ specific ignores
.godot/
# Godot-specific ignores
.import/
export.cfg
export_presets.cfg
# Imported translations (automatically generated from CSV files)
*.translation
# Mono-specific ignores
.mono/
data_*/
mono_crash.*.json
#Custom
build/
*.sh
*.x86_64
*.pck

View File

@ -1,5 +1,5 @@
# cs-os
Counter-Strike: Open Source (Close source - Open source)
A fan shooter (cs:go parody) game about Opensource operating systems and Proprietary operating systems
Counter-Strike: Open Source (Close source - Open source)
A fan shooter (cs:go parody) game about Opensource operating systems and Proprietary operating systems

View File

@ -1,59 +0,0 @@
[preset.0]
name="Linux"
platform="Linux/X11"
runnable=true
dedicated_server=true
custom_features=""
export_filter="customized"
customized_files={
"res://": "strip",
"res://icon.svg": "strip",
"res://models/": "strip",
"res://models/player.tscn": "strip",
"res://models/puppet.gd": "strip",
"res://models/puppet.tscn": "strip",
"res://scenes/": "strip",
"res://scenes/menu.tscn": "strip",
"res://scenes/test_map.tscn": "strip",
"res://scripts/": "strip",
"res://scripts/ConnectButton.gd": "strip",
"res://scripts/GameData.gd": "strip",
"res://scripts/Networking.gd": "strip",
"res://scripts/Player.gd": "strip",
"res://scripts/PlayerClass.gd": "strip",
"res://settings/": "strip",
"res://textures/": "strip",
"res://textures/texture_04_2.png": "strip"
}
include_filter=""
exclude_filter=""
export_path="./Cs-os.x86_64"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

View File

@ -1 +0,0 @@
<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="124" height="124" rx="14" fill="#363d52" stroke="#212532" stroke-width="4"/><g transform="scale(.101) translate(122 122)"><g fill="#fff"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 813 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H447l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c3 34 55 34 58 0v-86c-3-34-55-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 950 B

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

34
logo.png.import Normal file
View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dll54u8nmui3b"
path="res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logo.png"
dest_files=["res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

2
models/ak-12.mtl Normal file
View File

@ -0,0 +1,2 @@
# Made in Blockbench 4.9.4
newmtl none

1060
models/ak-12.obj Normal file

File diff suppressed because it is too large Load Diff

22
models/ak-12.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://ci000murhycl2"
path="res://.godot/imported/ak-12.obj-ad26db8e05ecd6bd3f277bc08c0cf9fc.mesh"
[deps]
files=["res://.godot/imported/ak-12.obj-ad26db8e05ecd6bd3f277bc08c0cf9fc.mesh"]
source_file="res://models/ak-12.obj"
dest_files=["res://.godot/imported/ak-12.obj-ad26db8e05ecd6bd3f277bc08c0cf9fc.mesh", "res://.godot/imported/ak-12.obj-ad26db8e05ecd6bd3f277bc08c0cf9fc.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

13
models/ak_47.tscn Normal file
View File

@ -0,0 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://caos4gg5cd6f6"]
[ext_resource type="PackedScene" uid="uid://dndsa6rm6hovq" path="res://models/automatto.dae" id="1_kapkd"]
[node name="ak-47" type="Node3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, -0.570068, 0, 0)
[node name="automatto" parent="." instance=ExtResource("1_kapkd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.18626, -1.25157, 0)
[node name="raycast" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.92407, 0.951779, 0)
target_position = Vector3(-1, 0, 0)

485
models/automatto.dae Normal file
View File

@ -0,0 +1,485 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Anonymous</author>
<authoring_tool>Collada Exporter for Blender 2.6+, by Juan Linietsky (juan@codenix.com)</authoring_tool>
</contributor>
<created>2024-02-17T21:56:07Z</created>
<modified>2024-02-17T21:56:07Z</modified>
<unit meter="1.0" name="meter"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_effects>
<effect id="id-fx-2" name="Material-fx">
<profile_COMMON>
<technique sid="common">
<blinn>
<emission>
<color> 0.800000011920929 0.800000011920929 0.800000011920929 1.0 </color>
</emission>
<ambient>
<color> 0.0 0.0 0.0 1.0 </color>
</ambient>
<diffuse>
<color> 0.6400000095367432 0.6400000095367432 0.6400000095367432 0.8 </color>
</diffuse>
<specular>
<color> 0.5 0.5 0.5 1.0 </color>
</specular>
<shininess>
<float>50</float>
</shininess>
<reflective>
<color> 0.5 0.5 0.5 1.0 </color>
</reflective>
<index_of_refraction>
<float>1.2</float>
</index_of_refraction>
</blinn>
<extra>
<technique profile="FCOLLADA">
</technique>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</technique>
</profile_COMMON>
</effect>
<effect id="id-fx-6" name="Material.001-fx">
<profile_COMMON>
<technique sid="common">
<blinn>
<emission>
<color> 0.800000011920929 0.800000011920929 0.800000011920929 1.0 </color>
</emission>
<ambient>
<color> 0.0 0.0 0.0 1.0 </color>
</ambient>
<diffuse>
<color> 0.6400000095367432 0.6400000095367432 0.6400000095367432 0.8 </color>
</diffuse>
<specular>
<color> 0.5 0.5 0.5 1.0 </color>
</specular>
<shininess>
<float>50</float>
</shininess>
<reflective>
<color> 0.5 0.5 0.5 1.0 </color>
</reflective>
<index_of_refraction>
<float>1.2</float>
</index_of_refraction>
</blinn>
<extra>
<technique profile="FCOLLADA">
</technique>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</technique>
</profile_COMMON>
</effect>
<effect id="id-fx-10" name="Material.002-fx">
<profile_COMMON>
<technique sid="common">
<blinn>
<emission>
<color> 0.800000011920929 0.800000011920929 0.800000011920929 1.0 </color>
</emission>
<ambient>
<color> 0.0 0.0 0.0 1.0 </color>
</ambient>
<diffuse>
<color> 0.6400000095367432 0.6400000095367432 0.6400000095367432 0.8 </color>
</diffuse>
<specular>
<color> 0.5 0.5 0.5 1.0 </color>
</specular>
<shininess>
<float>50</float>
</shininess>
<reflective>
<color> 0.5 0.5 0.5 1.0 </color>
</reflective>
<index_of_refraction>
<float>1.2</float>
</index_of_refraction>
</blinn>
<extra>
<technique profile="FCOLLADA">
</technique>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_materials>
<material id="id-material-3" name="Material">
<instance_effect url="#id-fx-2"/>
</material>
<material id="id-material-7" name="Material.001">
<instance_effect url="#id-fx-6"/>
</material>
<material id="id-material-11" name="Material.002">
<instance_effect url="#id-fx-10"/>
</material>
</library_materials>
<library_geometries>
<geometry id="id-mesh-4" name="Cube">
<mesh>
<source id="id-mesh-4-positions">
<float_array id="id-mesh-4-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-4-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-4-normals">
<float_array id="id-mesh-4-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-4-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-4-texcoord-0">
<float_array id="id-mesh-4-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-4-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-4-vertices">
<input semantic="POSITION" source="#id-mesh-4-positions"/>
</vertices>
<polygons count="6" material="id-trimat-5">
<input semantic="VERTEX" source="#id-mesh-4-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-4-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-4-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-8" name="Cube.001">
<mesh>
<source id="id-mesh-8-positions">
<float_array id="id-mesh-8-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-8-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-8-normals">
<float_array id="id-mesh-8-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-8-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-8-texcoord-0">
<float_array id="id-mesh-8-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-8-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-8-vertices">
<input semantic="POSITION" source="#id-mesh-8-positions"/>
</vertices>
<polygons count="6" material="id-trimat-9">
<input semantic="VERTEX" source="#id-mesh-8-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-8-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-8-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-12" name="Cube.002">
<mesh>
<source id="id-mesh-12-positions">
<float_array id="id-mesh-12-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-12-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-12-normals">
<float_array id="id-mesh-12-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-12-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-12-texcoord-0">
<float_array id="id-mesh-12-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-12-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-12-vertices">
<input semantic="POSITION" source="#id-mesh-12-positions"/>
</vertices>
<polygons count="6" material="id-trimat-13">
<input semantic="VERTEX" source="#id-mesh-12-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-12-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-12-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-14" name="Cube.003">
<mesh>
<source id="id-mesh-14-positions">
<float_array id="id-mesh-14-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-14-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-14-normals">
<float_array id="id-mesh-14-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-14-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-14-texcoord-0">
<float_array id="id-mesh-14-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-14-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-14-vertices">
<input semantic="POSITION" source="#id-mesh-14-positions"/>
</vertices>
<polygons count="6" material="id-trimat-15">
<input semantic="VERTEX" source="#id-mesh-14-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-14-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-14-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-16" name="Cube.004">
<mesh>
<source id="id-mesh-16-positions">
<float_array id="id-mesh-16-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-16-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-16-normals">
<float_array id="id-mesh-16-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-16-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-16-texcoord-0">
<float_array id="id-mesh-16-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-16-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-16-vertices">
<input semantic="POSITION" source="#id-mesh-16-positions"/>
</vertices>
<polygons count="6" material="id-trimat-17">
<input semantic="VERTEX" source="#id-mesh-16-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-16-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-16-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-18" name="Cube.005">
<mesh>
<source id="id-mesh-18-positions">
<float_array id="id-mesh-18-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-18-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-18-normals">
<float_array id="id-mesh-18-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-18-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-18-texcoord-0">
<float_array id="id-mesh-18-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-18-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-18-vertices">
<input semantic="POSITION" source="#id-mesh-18-positions"/>
</vertices>
<polygons count="6" material="id-trimat-19">
<input semantic="VERTEX" source="#id-mesh-18-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-18-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-18-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
</library_geometries>
<library_visual_scenes>
<visual_scene id="id-scene-1" name="scene">
<node id="Cube" name="Cube" type="NODE">
<matrix sid="transform"> 2.6000001430511475 0.0 0.0 0.0 0.0 0.19977541267871857 0.0 0.0 0.0 0.0 0.4598263204097748 2.203359842300415 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-4">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-5" target="#id-material-3"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.001" name="Cube.001" type="NODE">
<matrix sid="transform"> -1.57242467935248e-08 0.0009324373677372932 0.2314780056476593 1.6276607513427734 1.6476175090929246e-08 0.11205510795116425 -0.0019261838169768453 -0.012317478656768799 -0.5210391283035278 3.515240321050328e-09 -7.046598859972164e-09 1.4152696132659912 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-8">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-9" target="#id-material-7"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.002" name="Cube.002" type="NODE">
<matrix sid="transform"> 0.012317821383476257 0.0 -0.23190557956695557 -1.2648444175720215 0.0 0.11228424310684204 0.0 -0.016380950808525085 0.9720970988273621 0.0 0.002938566030934453 1.156082034111023 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-12">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-13" target="#id-material-11"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.003" name="Cube.003" type="NODE">
<matrix sid="transform"> 0.4965575635433197 0.0 0.0 2.8978543281555176 0.0 0.16011132299900055 0.0 -0.0013670185580849648 0.0 0.0 0.24370159208774567 2.1922411918640137 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-14">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-15" target="#id-material-7"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.004" name="Cube.004" type="NODE">
<matrix sid="transform"> 0.4965575635433197 0.0 0.0 3.762096643447876 0.0 0.19658255577087402 0.0 -0.0028609037399291992 0.0 0.0 0.28466933965682983 2.1854066848754883 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-16">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-17" target="#id-material-7"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.005" name="Cube.005" type="NODE">
<matrix sid="transform"> 0.3889171779155731 0.0 0.0 -2.7596819400787354 0.0 0.06061943992972374 0.0 0.0 0.0 0.0 0.06876473128795624 2.203359842300415 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-18">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-19" target="#id-material-11"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#id-scene-1" />
</scene>
</COLLADA>

View File

@ -0,0 +1,34 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dndsa6rm6hovq"
path="res://.godot/imported/automatto.dae-432f9c65d99e4ae982cd03115d636026.scn"
[deps]
source_file="res://models/automatto.dae"
dest_files=["res://.godot/imported/automatto.dae-432f9c65d99e4ae982cd03115d636026.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

189
models/knife.obj Normal file
View File

@ -0,0 +1,189 @@
# Made in Blockbench 4.9.4
mtllib knife.mtl
o knife
v 0.109375 1.109375 0.03125
v 0.109375 1.109375 -0.03125
v 0.109375 0.265625 0.03125
v 0.109375 0.265625 -0.03125
v -0.109375 1.109375 0.03125
v -0.109375 1.109375 -0.03125
v -0.109375 0.265625 0.03125
v -0.109375 0.265625 -0.03125
v 0.09375 1.90625 0.015625
v 0.09375 1.90625 -0.015625
v 0.09375 1.0625 0.015625
v 0.09375 1.0625 -0.015625
v -0.09375 1.90625 0.015625
v -0.09375 1.90625 -0.015625
v -0.09375 1.0625 0.015625
v -0.09375 1.0625 -0.015625
v -0.09375 1.96875 0.015625
v -0.09375 1.96875 -0.015625
v -0.09375 2.03125 0.015625
v -0.09375 2.03125 -0.015625
v -0.09375 2.09375 0.015625
v -0.09375 2.09375 -0.015625
v 0.15625 1.140625 0.0625
v 0.15625 1.140625 -0.0625
v 0.15625 1.078125 0.0625
v 0.15625 1.078125 -0.0625
v -0.15625 1.140625 0.0625
v -0.15625 1.140625 -0.0625
v -0.15625 1.078125 0.0625
v -0.15625 1.078125 -0.0625
vt 0.34375 0.53125
vt 0.3125 0.53125
vt 0.3125 0.03125
vt 0.34375 0.03125
vt 0.5625 0.46875
vt 0.6875 0.46875
vt 0.6875 0.5
vt 0.5625 0.5
vt 0.6875 0.40625
vt 0.6875 0.4375
vt 0.5625 0.4375
vt 0.5625 0.40625
vt 0.125 0.5
vt 0.125 1
vt 0 1
vt 0 0.5
vt 0.28125 1
vt 0.15625 1
vt 0.15625 0.5
vt 0.28125 0.5
vt 0.40625 0.03125
vt 0.40625 0.53125
vt 0.375 0.53125
vt 0.375 0.03125
vt 0.46875 0.53125
vt 0.4375 0.53125
vt 0.4375 0.09375
vt 0.46875 0.09375
vt 0.53125 0.09375
vt 0.53125 0.53125
vt 0.5 0.53125
vt 0.5 0.09375
vt 0 0.34375
vt 0.09375 0.34375
vt 0.09375 0.375
vt 0 0.375
vt 0.71875 0.625
vt 0.71875 0.65625
vt 0.625 0.65625
vt 0.625 0.625
vt 0.40625 0.5625
vt 0.40625 1
vt 0.3125 1
vt 0.3125 0.5625
vt 0.53125 1
vt 0.4375 1
vt 0.4375 0.5625
vt 0.53125 0.5625
vt 0.5625 0.53125
vt 0.59375 0.53125
vt 0.59375 0.65625
vt 0.5625 0.65625
vt 0.1484375 0.3125
vt 0.1328125 0.3125
vt 0.1328125 0.28125
vt 0.1484375 0.28125
vt 0.1484375 0.34375
vt 0.1328125 0.34375
vt 0.1328125 0.3125
vt 0.1484375 0.3125
vt 0.1328125 0.375
vt 0.1328125 0.34375
vt 0.1484375 0.34375
vt 0.1484375 0.375
vt 0 1
vt 0 1
vt 0 1
vt 0 1
vt 0.1875 0.375
vt 0.28125 0.375
vt 0.1875 0.46875
vt 0 1
vt 0 1
vt 0 1
vt 0 1
vt 0.5625 0.8125
vt 0.65625 0.8125
vt 0.5625 0.90625
vt 0.6875 0.59375
vt 0.625 0.59375
vt 0.625 0.5625
vt 0.6875 0.5625
vt 0.625 0.34375
vt 0.625 0.375
vt 0.5625 0.375
vt 0.5625 0.34375
vt 0 0.40625
vt 0.15625 0.40625
vt 0.15625 0.46875
vt 0 0.46875
vt 0.71875 0.9375
vt 0.71875 1
vt 0.5625 1
vt 0.5625 0.9375
vt 0.71875 0.75
vt 0.71875 0.78125
vt 0.5625 0.78125
vt 0.5625 0.75
vt 0.71875 0.71875
vt 0.5625 0.71875
vt 0.5625 0.6875
vt 0.71875 0.6875
vn 1 0 0
vn 0 1 0
vn 0 -1 0
vn 0 0 1
vn 0 0 -1
vn -1 0 0
vn 1 0 0
vn -1 0 0
vn 0 1 0
vn 0 -1 0
vn 0 0 1
vn 0 0 -1
vn 0.7071067811865476 0.7071067811865476 0
vn -1 0 0
vn -1 0 0
vn -1 0 0
vn 0 0 0
vn 0 0 1
vn 0 0 0
vn 0 0 1
vn 1 0 0
vn -1 0 0
vn 0 1 0
vn 0 -1 0
vn 0 0 1
vn 0 0 -1
usemtl m_ca288e41-3249-06b4-832d-889f8712398d
f 2/1/1 1/2/1 3/3/1 4/4/1
f 5/5/2 1/6/2 2/7/2 6/8/2
f 4/9/3 3/10/3 7/11/3 8/12/3
f 3/13/4 1/14/4 5/15/4 7/16/4
f 6/17/5 2/18/5 4/19/5 8/20/5
f 7/21/6 5/22/6 6/23/6 8/24/6
f 10/25/7 9/26/7 11/27/7 12/28/7
f 15/29/8 13/30/8 14/31/8 16/32/8
f 13/33/9 9/34/9 10/35/9 14/36/9
f 12/37/10 11/38/10 15/39/10 16/40/10
f 11/41/11 9/42/11 13/43/11 15/44/11
f 14/45/12 10/46/12 12/47/12 16/48/12
f 9/49/13 10/50/13 22/51/13 21/52/13
f 17/53/14 18/54/14 14/55/14 13/56/14
f 19/57/15 20/58/15 18/59/15 17/60/15
f 22/61/16 20/62/16 19/63/16 21/64/16
f 22/65/17 20/66/17 18/67/17 14/68/17
f 14/69/18 10/70/18 22/71/18
f 21/72/19 19/73/19 17/74/19 13/75/19
f 13/76/20 9/77/20 21/78/20
f 24/79/21 23/80/21 25/81/21 26/82/21
f 29/83/22 27/84/22 28/85/22 30/86/22
f 27/87/23 23/88/23 24/89/23 28/90/23
f 26/91/24 25/92/24 29/93/24 30/94/24
f 25/95/25 23/96/25 27/97/25 29/98/25
f 28/99/26 24/100/26 26/101/26 30/102/26

22
models/knife.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://xh7mm0ldn6yw"
path="res://.godot/imported/knife.obj-6e31f00c1b4ca74b02d0c3dd7352da69.mesh"
[deps]
files=["res://.godot/imported/knife.obj-6e31f00c1b4ca74b02d0c3dd7352da69.mesh"]
source_file="res://models/knife.obj"
dest_files=["res://.godot/imported/knife.obj-6e31f00c1b4ca74b02d0c3dd7352da69.mesh", "res://.godot/imported/knife.obj-6e31f00c1b4ca74b02d0c3dd7352da69.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

3
models/knife.tscn Normal file
View File

@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://cbsmalhxddpi6"]
[node name="Knife" type="Node2D"]

279
models/ladder.obj Normal file
View File

@ -0,0 +1,279 @@
# Made in Blockbench 4.9.4
mtllib ladder.mtl
o cube
v 0.4375 1.375 0.0625
v 0.4375 1.375 -0.0625
v 0.4375 0 0.0625
v 0.4375 0 -0.0625
v 0.3125 1.375 -0.0625
v 0.3125 1.375 0.0625
v 0.3125 0 -0.0625
v 0.3125 0 0.0625
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v -0.3125 1.375 0.0625
v -0.3125 1.375 -0.0625
v -0.3125 0 0.0625
v -0.3125 0 -0.0625
v -0.4375 1.375 -0.0625
v -0.4375 1.375 0.0625
v -0.4375 0 -0.0625
v -0.4375 0 0.0625
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v 0.3125 0.3125 0.0625
v 0.3125 0.3125 -0.0625
v 0.3125 0.1875 0.0625
v 0.3125 0.1875 -0.0625
v -0.3125 0.3125 -0.0625
v -0.3125 0.3125 0.0625
v -0.3125 0.1875 -0.0625
v -0.3125 0.1875 0.0625
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18
o cube
v 0.3125 0.8125 0.0625
v 0.3125 0.8125 -0.0625
v 0.3125 0.6875 0.0625
v 0.3125 0.6875 -0.0625
v -0.3125 0.8125 -0.0625
v -0.3125 0.8125 0.0625
v -0.3125 0.6875 -0.0625
v -0.3125 0.6875 0.0625
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 28/76/19 31/75/19 29/74/19 26/73/19
f 27/80/20 28/79/20 26/78/20 25/77/20
f 32/84/21 27/83/21 25/82/21 30/81/21
f 31/88/22 32/87/22 30/86/22 29/85/22
f 30/92/23 25/91/23 26/90/23 29/89/23
f 31/96/24 28/95/24 27/94/24 32/93/24
o cube
v 0.3125 1.25 0.0625
v 0.3125 1.25 -0.0625
v 0.3125 1.125 0.0625
v 0.3125 1.125 -0.0625
v -0.3125 1.25 -0.0625
v -0.3125 1.25 0.0625
v -0.3125 1.125 -0.0625
v -0.3125 1.125 0.0625
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 36/100/25 39/99/25 37/98/25 34/97/25
f 35/104/26 36/103/26 34/102/26 33/101/26
f 40/108/27 35/107/27 33/106/27 38/105/27
f 39/112/28 40/111/28 38/110/28 37/109/28
f 38/116/29 33/115/29 34/114/29 37/113/29
f 39/120/30 36/119/30 35/118/30 40/117/30
o cube
v 0.3125 1.25 0.0625
v 0.3125 1.25 -0.0625
v 0.3125 1.125 0.0625
v 0.3125 1.125 -0.0625
v -0.3125 1.25 -0.0625
v -0.3125 1.25 0.0625
v -0.3125 1.125 -0.0625
v -0.3125 1.125 0.0625
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 44/124/31 47/123/31 45/122/31 42/121/31
f 43/128/32 44/127/32 42/126/32 41/125/32
f 48/132/33 43/131/33 41/130/33 46/129/33
f 47/136/34 48/135/34 46/134/34 45/133/34
f 46/140/35 41/139/35 42/138/35 45/137/35
f 47/144/36 44/143/36 43/142/36 48/141/36

22
models/ladder.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://bal0u14qxmjfb"
path="res://.godot/imported/ladder.obj-d67956790d02128eb4831fd36b21fcc7.mesh"
[deps]
files=["res://.godot/imported/ladder.obj-d67956790d02128eb4831fd36b21fcc7.mesh"]
source_file="res://models/ladder.obj"
dest_files=["res://.godot/imported/ladder.obj-d67956790d02128eb4831fd36b21fcc7.mesh", "res://.godot/imported/ladder.obj-d67956790d02128eb4831fd36b21fcc7.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

1
models/model.bbmodel Normal file
View File

@ -0,0 +1 @@
{"meta":{"format_version":"4.9","model_format":"free","box_uv":false},"name":"","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,0,-4],"to":[2,2,-2],"autouv":1,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,4,2]},"east":{"uv":[0,0,2,2]},"south":{"uv":[0,0,4,2]},"west":{"uv":[0,0,2,2]},"up":{"uv":[0,0,4,2]},"down":{"uv":[0,0,4,2]}},"type":"cube","uuid":"dfa854cb-ee20-648c-5bfa-d74bfeeb6218"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,0,2],"to":[2,2,4],"autouv":1,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,4,2]},"east":{"uv":[0,0,2,2]},"south":{"uv":[0,0,4,2]},"west":{"uv":[0,0,2,2]},"up":{"uv":[0,0,4,2]},"down":{"uv":[0,0,4,2]}},"type":"cube","uuid":"31f49c98-badb-1000-7140-d73da4f5bb99"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,2,-4],"to":[2,10,-2],"autouv":1,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,8]},"east":{"uv":[0,0,2,8]},"south":{"uv":[0,0,2,8]},"west":{"uv":[0,0,2,8]},"up":{"uv":[0,0,2,2]},"down":{"uv":[0,0,2,2]}},"type":"cube","uuid":"df15f977-647e-8040-8882-5a19e3c1a1b3"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,2,2],"to":[2,10,4],"autouv":1,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,2,8]},"east":{"uv":[0,0,2,8]},"south":{"uv":[0,0,2,8]},"west":{"uv":[0,0,2,8]},"up":{"uv":[0,0,2,2]},"down":{"uv":[0,0,2,2]}},"type":"cube","uuid":"d793f84c-1004-031c-b0f5-e82412154ece"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,10,-4],"to":[2,12,4],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,1,2,3]},"east":{"uv":[0,10,8,12]},"south":{"uv":[0,3,2,5]},"west":{"uv":[0,8,8,10]},"up":{"uv":[14,0,16,8]},"down":{"uv":[14,8,16,16]}},"type":"cube","uuid":"52025b1b-29e8-d9e6-743b-3432fa5598bb"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,12,-4],"to":[2,25,4],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,1,2,3]},"east":{"uv":[0,10,8,12]},"south":{"uv":[0,3,2,5]},"west":{"uv":[0,8,8,10]},"up":{"uv":[14,0,16,8]},"down":{"uv":[14,8,16,16]}},"type":"cube","uuid":"f1dfc558-9761-f697-dafd-a5a9a4823e76"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,12,4],"to":[2,25,6],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,1,2,3]},"east":{"uv":[0,10,8,12]},"south":{"uv":[0,3,2,5]},"west":{"uv":[0,8,8,10]},"up":{"uv":[14,0,16,8]},"down":{"uv":[14,8,16,16]}},"type":"cube","uuid":"4aac22a8-3527-6dcc-7d8c-a3cad36804b5"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,12,-6],"to":[2,25,-4],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[0,1,2,3]},"east":{"uv":[0,10,8,12]},"south":{"uv":[0,3,2,5]},"west":{"uv":[0,8,8,10]},"up":{"uv":[14,0,16,8]},"down":{"uv":[14,8,16,16]}},"type":"cube","uuid":"9124507e-075f-e0c5-e421-23b88f8795e4"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,25,-3],"to":[4,31,3],"autouv":1,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,6,6]},"east":{"uv":[0,0,6,6]},"south":{"uv":[0,0,6,6]},"west":{"uv":[0,0,6,6]},"up":{"uv":[0,0,6,6]},"down":{"uv":[0,0,6,6]}},"type":"cube","uuid":"8b2a2b92-0821-bf07-41f8-1ecb453de551"}],"outliner":["dfa854cb-ee20-648c-5bfa-d74bfeeb6218","df15f977-647e-8040-8882-5a19e3c1a1b3","d793f84c-1004-031c-b0f5-e82412154ece","52025b1b-29e8-d9e6-743b-3432fa5598bb","f1dfc558-9761-f697-dafd-a5a9a4823e76","4aac22a8-3527-6dcc-7d8c-a3cad36804b5","9124507e-075f-e0c5-e421-23b88f8795e4","31f49c98-badb-1000-7140-d73da4f5bb99","8b2a2b92-0821-bf07-41f8-1ecb453de551"],"textures":[]}

417
models/model.obj Normal file
View File

@ -0,0 +1,417 @@
# Made in Blockbench 4.9.4
mtllib model.mtl
o cube
v 0.125 0.125 -0.125
v 0.125 0.125 -0.25
v 0.125 0 -0.125
v 0.125 0 -0.25
v -0.125 0.125 -0.25
v -0.125 0.125 -0.125
v -0.125 0 -0.25
v -0.125 0 -0.125
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v 0.125 0.125 0.25
v 0.125 0.125 0.125
v 0.125 0 0.25
v 0.125 0 0.125
v -0.125 0.125 0.125
v -0.125 0.125 0.25
v -0.125 0 0.125
v -0.125 0 0.25
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vt 0 1
vt 0.25 1
vt 0.25 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v 0.125 0.625 -0.125
v 0.125 0.625 -0.25
v 0.125 0.125 -0.125
v 0.125 0.125 -0.25
v 0 0.625 -0.25
v 0 0.625 -0.125
v 0 0.125 -0.25
v 0 0.125 -0.125
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18
o cube
v 0.125 0.625 0.25
v 0.125 0.625 0.125
v 0.125 0.125 0.25
v 0.125 0.125 0.125
v 0 0.625 0.125
v 0 0.625 0.25
v 0 0.125 0.125
v 0 0.125 0.25
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.5
vt 0 0.5
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vt 0 1
vt 0.125 1
vt 0.125 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 28/76/19 31/75/19 29/74/19 26/73/19
f 27/80/20 28/79/20 26/78/20 25/77/20
f 32/84/21 27/83/21 25/82/21 30/81/21
f 31/88/22 32/87/22 30/86/22 29/85/22
f 30/92/23 25/91/23 26/90/23 29/89/23
f 31/96/24 28/95/24 27/94/24 32/93/24
o cube
v 0.125 0.75 0.25
v 0.125 0.75 -0.25
v 0.125 0.625 0.25
v 0.125 0.625 -0.25
v 0 0.75 -0.25
v 0 0.75 0.25
v 0 0.625 -0.25
v 0 0.625 0.25
vt 0 0.9375
vt 0.125 0.9375
vt 0.125 0.8125
vt 0 0.8125
vt 0 0.375
vt 0.5 0.375
vt 0.5 0.25
vt 0 0.25
vt 0 0.8125
vt 0.125 0.8125
vt 0.125 0.6875
vt 0 0.6875
vt 0 0.5
vt 0.5 0.5
vt 0.5 0.375
vt 0 0.375
vt 0.875 1
vt 1 1
vt 1 0.5
vt 0.875 0.5
vt 0.875 0.5
vt 1 0.5
vt 1 0
vt 0.875 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 36/100/25 39/99/25 37/98/25 34/97/25
f 35/104/26 36/103/26 34/102/26 33/101/26
f 40/108/27 35/107/27 33/106/27 38/105/27
f 39/112/28 40/111/28 38/110/28 37/109/28
f 38/116/29 33/115/29 34/114/29 37/113/29
f 39/120/30 36/119/30 35/118/30 40/117/30
o cube
v 0.125 1.5625 0.25
v 0.125 1.5625 -0.25
v 0.125 0.75 0.25
v 0.125 0.75 -0.25
v 0 1.5625 -0.25
v 0 1.5625 0.25
v 0 0.75 -0.25
v 0 0.75 0.25
vt 0 0.9375
vt 0.125 0.9375
vt 0.125 0.8125
vt 0 0.8125
vt 0 0.375
vt 0.5 0.375
vt 0.5 0.25
vt 0 0.25
vt 0 0.8125
vt 0.125 0.8125
vt 0.125 0.6875
vt 0 0.6875
vt 0 0.5
vt 0.5 0.5
vt 0.5 0.375
vt 0 0.375
vt 0.875 1
vt 1 1
vt 1 0.5
vt 0.875 0.5
vt 0.875 0.5
vt 1 0.5
vt 1 0
vt 0.875 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 44/124/31 47/123/31 45/122/31 42/121/31
f 43/128/32 44/127/32 42/126/32 41/125/32
f 48/132/33 43/131/33 41/130/33 46/129/33
f 47/136/34 48/135/34 46/134/34 45/133/34
f 46/140/35 41/139/35 42/138/35 45/137/35
f 47/144/36 44/143/36 43/142/36 48/141/36
o cube
v 0.125 1.5625 0.375
v 0.125 1.5625 0.25
v 0.125 0.75 0.375
v 0.125 0.75 0.25
v 0 1.5625 0.25
v 0 1.5625 0.375
v 0 0.75 0.25
v 0 0.75 0.375
vt 0 0.9375
vt 0.125 0.9375
vt 0.125 0.8125
vt 0 0.8125
vt 0 0.375
vt 0.5 0.375
vt 0.5 0.25
vt 0 0.25
vt 0 0.8125
vt 0.125 0.8125
vt 0.125 0.6875
vt 0 0.6875
vt 0 0.5
vt 0.5 0.5
vt 0.5 0.375
vt 0 0.375
vt 0.875 1
vt 1 1
vt 1 0.5
vt 0.875 0.5
vt 0.875 0.5
vt 1 0.5
vt 1 0
vt 0.875 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 52/148/37 55/147/37 53/146/37 50/145/37
f 51/152/38 52/151/38 50/150/38 49/149/38
f 56/156/39 51/155/39 49/154/39 54/153/39
f 55/160/40 56/159/40 54/158/40 53/157/40
f 54/164/41 49/163/41 50/162/41 53/161/41
f 55/168/42 52/167/42 51/166/42 56/165/42
o cube
v 0.125 1.5625 -0.25
v 0.125 1.5625 -0.375
v 0.125 0.75 -0.25
v 0.125 0.75 -0.375
v 0 1.5625 -0.375
v 0 1.5625 -0.25
v 0 0.75 -0.375
v 0 0.75 -0.25
vt 0 0.9375
vt 0.125 0.9375
vt 0.125 0.8125
vt 0 0.8125
vt 0 0.375
vt 0.5 0.375
vt 0.5 0.25
vt 0 0.25
vt 0 0.8125
vt 0.125 0.8125
vt 0.125 0.6875
vt 0 0.6875
vt 0 0.5
vt 0.5 0.5
vt 0.5 0.375
vt 0 0.375
vt 0.875 1
vt 1 1
vt 1 0.5
vt 0.875 0.5
vt 0.875 0.5
vt 1 0.5
vt 1 0
vt 0.875 0
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 60/172/43 63/171/43 61/170/43 58/169/43
f 59/176/44 60/175/44 58/174/44 57/173/44
f 64/180/45 59/179/45 57/178/45 62/177/45
f 63/184/46 64/183/46 62/182/46 61/181/46
f 62/188/47 57/187/47 58/186/47 61/185/47
f 63/192/48 60/191/48 59/190/48 64/189/48
o cube
v 0.25 1.9375 0.1875
v 0.25 1.9375 -0.1875
v 0.25 1.5625 0.1875
v 0.25 1.5625 -0.1875
v -0.125 1.9375 -0.1875
v -0.125 1.9375 0.1875
v -0.125 1.5625 -0.1875
v -0.125 1.5625 0.1875
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vt 0 1
vt 0.375 1
vt 0.375 0.625
vt 0 0.625
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 68/196/49 71/195/49 69/194/49 66/193/49
f 67/200/50 68/199/50 66/198/50 65/197/50
f 72/204/51 67/203/51 65/202/51 70/201/51
f 71/208/52 72/207/52 70/206/52 69/205/52
f 70/212/53 65/211/53 66/210/53 69/209/53
f 71/216/54 68/215/54 67/214/54 72/213/54

22
models/model.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://ctvjxmdm3qep1"
path="res://.godot/imported/model.obj-1723858b338ad6ff2290008eeaf5c066.mesh"
[deps]
files=["res://.godot/imported/model.obj-1723858b338ad6ff2290008eeaf5c066.mesh"]
source_file="res://models/model.obj"
dest_files=["res://.godot/imported/model.obj-1723858b338ad6ff2290008eeaf5c066.mesh", "res://.godot/imported/model.obj-1723858b338ad6ff2290008eeaf5c066.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

12
models/pistol.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cnu1vf8k5i3tv"]
[ext_resource type="PackedScene" uid="uid://hf47u08p80fo" path="res://models/pistoletto.dae" id="1_hdcb6"]
[node name="pistol" type="Node3D"]
[node name="pistoletto" parent="." instance=ExtResource("1_hdcb6")]
transform = Transform3D(0.21, 0, 0, 0, 0.21, 0, 0, 0, 0.21, 0, 0, 0)
[node name="raycast" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.461124, 0.0946267, 2.01564e-08)
target_position = Vector3(-1, 0, 0)

2
models/pistoletda.mtl Normal file
View File

@ -0,0 +1,2 @@
# Made in Blockbench 4.9.4
newmtl none

709
models/pistoletda.obj Normal file
View File

@ -0,0 +1,709 @@
# Made in Blockbench 4.9.4
mtllib pistoletda.mtl
o cuboid
v -0.029506699999999986 -0.5437500000000002 0.31834890625
v -0.029506699999999986 -0.5437500000000002 0.46915109374999975
v -0.06874999999999995 0.41875 0.36250000000000004
v -0.07499999999999996 0.41875 -0.4687500000000002
v -0.07499999999999983 0.2694533824900248 -0.46750108536654167
v -0.07499999999999983 0.2367966175099752 0.05500108536654147
v -0.07499999999999996 0.41875 0.05625000000000002
v -0.04889999999999998 0.21875 0.06578125000000001
v -0.04889999999999998 0.10624999999999998 0.09078125000000004
v -0.04889999999999998 0.031249999999999972 0.35296875000000005
v -0.04889999999999998 -0.08750000000000005 0.1720312500000001
v -0.04889999999999998 -0.08750000000000005 0.4029687499999999
v -0.04889999999999998 -0.15000000000000005 0.18453125000000012
v -0.04889999999999998 -0.15000000000000005 0.41546874999999983
v -0.029506699999999986 -0.15000000000000005 0.22459890625000006
v -0.029506699999999986 -0.15000000000000005 0.37540109374999986
v -0.029506699999999986 -0.51875 0.31834890625
v -0.029506699999999986 -0.51875 0.46915109374999975
v -0.06874999999999995 0.2812499999999999 0.36875
v -0.04889999999999998 0.21875 0.29671875000000014
v -0.029506699999999986 -0.5437500000000002 0.30584890625
v -0.029506699999999986 -0.51875 0.30584890625
v -0.029506699999999986 -0.5437500000000002 0.48165109374999976
v -0.029506699999999986 -0.51875 0.48165109374999976
v -0.04062499999999998 0.40456133288136675 -0.4686845652337528
v -0.04374999999999991 0.32618399864410047 -0.46855369570125793
v -0.04062499999999998 0.40454046119835163 -0.48118454780865455
v -0.04374999999999991 0.32616312696108535 -0.4810536782761597
v -0.02085 0.41875 0.3394437499999998
v -0.022587500000000003 0.41875 0.25430625000000007
v -0.010425 0.4375 0.3181593749999999
v -0.011293750000000002 0.4375 0.275590625
v -0.08749999999999983 0.24449239740090764 -0.10652031883006599
v -0.07499999999999996 0.41875 -0.1500027071457303
v -0.04889999999999998 0.20844521716112602 0.04594744793991074
v -0.010469657779394929 0.21909128859118487 0.038845172507859946
v -0.04889999999999998 0.15519184638633401 0.048519558738502985
v -0.008798571694057046 0.22368255987661545 -0.012907807314820708
v -0.02445000000000001 0.12784985517052427 0.01036821060770544
v -0.02445000000000001 0.10859199121580962 0.01643259813079758
v -0.02445000000000001 0.1286268638217558 -0.10102251730650574
v -0.02445000000000001 0.10936899986704116 -0.09495812978341361
v -0.02445000000000006 0.1286019559145472 -0.17331526980367568
v -0.02445000000000006 0.1093484475032565 -0.17939347134565264
v -0.016474818337346025 0.13846975038340695 -0.02475043988131545
v -0.01628373642090237 0.1372633066440338 -0.01181219492564528
v -0.02472500000000003 0.17235818289134938 -0.1614920816793832
v -0.024725000000000004 0.1723706368449537 -0.12534570543079823
v -0.011253538090342498 0.16976009700783365 -0.006219562359150502
v -0.011719677677956519 0.16736201672037104 0.019656927552189805
v 0.029506699999999986 -0.5437500000000002 0.31834890625
v 0.029506699999999986 -0.5437500000000002 0.46915109374999975
v 0.06874999999999995 0.41875 0.36250000000000004
v 0.07499999999999996 0.41875 -0.4687500000000002
v 0.07499999999999983 0.2694533824900248 -0.46750108536654167
v 0.07499999999999983 0.2367966175099752 0.05500108536654147
v 0.07499999999999996 0.41875 0.05625000000000002
v 0.04889999999999998 0.21875 0.06578125000000001
v 0.04889999999999998 0.10624999999999998 0.09078125000000004
v 0.04889999999999998 0.031249999999999972 0.35296875000000005
v 0.04889999999999998 -0.08750000000000005 0.1720312500000001
v 0.04889999999999998 -0.08750000000000005 0.4029687499999999
v 0.04889999999999998 -0.15000000000000005 0.18453125000000012
v 0.04889999999999998 -0.15000000000000005 0.41546874999999983
v 0.029506699999999986 -0.15000000000000005 0.22459890625000006
v 0.029506699999999986 -0.15000000000000005 0.37540109374999986
v 0.029506699999999986 -0.51875 0.31834890625
v 0.029506699999999986 -0.51875 0.46915109374999975
v 0.06874999999999995 0.2812499999999999 0.36875
v 0.04889999999999998 0.21875 0.29671875000000014
v 0.029506699999999986 -0.5437500000000002 0.30584890625
v 0.029506699999999986 -0.51875 0.30584890625
v 0.029506699999999986 -0.5437500000000002 0.48165109374999976
v 0.029506699999999986 -0.51875 0.48165109374999976
v 0.04062499999999998 0.40456133288136675 -0.4686845652337528
v 0.04374999999999991 0.32618399864410047 -0.46855369570125793
v 0.04062499999999998 0.40454046119835163 -0.48118454780865455
v 0.04374999999999991 0.32616312696108535 -0.4810536782761597
v 0.02085 0.41875 0.3394437499999998
v 0.022587500000000003 0.41875 0.25430625000000007
v 0.010425 0.4375 0.3181593749999999
v 0.011293750000000002 0.4375 0.275590625
v 0.08749999999999983 0.24449239740090764 -0.10652031883006599
v 0.07499999999999996 0.41875 -0.1500027071457303
v 0.04889999999999998 0.20844521716112602 0.04594744793991074
v 0.010469657779394929 0.21909128859118487 0.038845172507859946
v 0.04889999999999998 0.15519184638633401 0.048519558738502985
v 0.008798571694057046 0.22368255987661545 -0.012907807314820708
v 0.02445000000000001 0.12784985517052427 0.01036821060770544
v 0.02445000000000001 0.10859199121580962 0.01643259813079758
v 0.02445000000000001 0.1286268638217558 -0.10102251730650574
v 0.02445000000000001 0.10936899986704116 -0.09495812978341361
v 0.02445000000000006 0.1286019559145472 -0.17331526980367568
v 0.02445000000000006 0.1093484475032565 -0.17939347134565264
v 0.016474818337346025 0.13846975038340695 -0.02475043988131545
v 0.01628373642090237 0.1372633066440338 -0.01181219492564528
v 0.02472500000000003 0.17235818289134938 -0.1614920816793832
v 0.024725000000000004 0.1723706368449537 -0.12534570543079823
v 0.011253538090342498 0.16976009700783365 -0.006219562359150502
v 0.011719677677956519 0.16736201672037104 0.019656927552189805
vt 0.282121875 0.5504
vt 0.282121875 0.475
vt 0.311628125 0.475
vt 0.311628125 0.5504
vt 0.2390625 0.25
vt 0.1984375 0.25
vt 0.196875 0.21875
vt 0.240625 0.21875
vt 0.8333375 0.5
vt 0.833771875 0.53125
vt 0.822478125 0.53125
vt 0.8229125 0.5
vt 0.46875 0.25
vt 0.46875 0.3125
vt 0.40625 0.3125
vt 0.40625 0.25
vt 0.084375 0.30000000000000004
vt 0.084375 0.40312499999999996
vt 0.009375000000000001 0.40312499999999996
vt 0.009375000000000001 0.30000000000000004
vt 0.72555 0.5579093749999999
vt 0.77445 0.5579093749999999
vt 0.755234375 0.564309375
vt 0.744765625 0.564309375
vt 0.647425 0.25
vt 0.696325 0.25
vt 0.70625 0.3125
vt 0.6375 0.3125
vt 0.72555 0.53125
vt 0.77445 0.53125
vt 0.77445 0.5579093749999999
vt 0.72555 0.5579093749999999
vt 0.6318 0.46462187499999996
vt 0.6807 0.46462187499999996
vt 0.6807 0.5625
vt 0.6318 0.5625
vt 0.35055000000000003 0.75061875
vt 0.39944999999999997 0.75061875
vt 0.39944999999999997 0.855665625
vt 0.35055000000000003 0.855665625
vt 0.6318 0.400196875
vt 0.6807 0.400196875
vt 0.6807 0.46462187499999996
vt 0.6318 0.46462187499999996
vt 0.35055000000000003 0.71875
vt 0.39944999999999997 0.71875
vt 0.39944999999999997 0.75061875
vt 0.35055000000000003 0.75061875
vt 0.6318 0.368328125
vt 0.6807 0.368328125
vt 0.6807 0.400196875
vt 0.6318 0.400196875
vt 0.577253125 0.770034375
vt 0.547746875 0.770034375
vt 0.53805 0.75
vt 0.58695 0.75
vt 0.547746875 0.845434375
vt 0.577253125 0.845434375
vt 0.58695 0.86546875
vt 0.53805 0.86546875
vt 0.6875 0.6875
vt 0.71875 0.6875
vt 0.71875 0.875
vt 0.6875 0.875
vt 0.125 0.125
vt 0.15625 0.125
vt 0.15625 0.3125
vt 0.125 0.3125
vt 0.625 0.75
vt 0.65625 0.75
vt 0.65625 0.78125
vt 0.625 0.78125
vt 0.75 0.6875
vt 0.78125 0.6875
vt 0.78125 0.71875
vt 0.75 0.71875
vt 0.282121875 0.46875
vt 0.311628125 0.46875
vt 0.311628125 0.475
vt 0.282121875 0.475
vt 0.53125 0.25
vt 0.5 0.25
vt 0.5 0.21875
vt 0.53125 0.21875
vt 0.311628125 0.55665
vt 0.282121875 0.55665
vt 0.282121875 0.5504
vt 0.311628125 0.5504
vt 0.5625 0.21875
vt 0.59375 0.21875
vt 0.59375 0.25
vt 0.5625 0.25
vt 0.02656194936110779 0.8800568432860625
vt 0.06718694887092802 0.8800505324140259
vt 0.08437555063889221 0.8871416123441097
vt 0.00937555154383947 0.8871532631847927
vt 0.06874944932956746 0.8408710045443022
vt 0.024999449361107793 0.8408693432860626
vt 0.0093755265796793 0.8125
vt 0.08437552652561016 0.8125028478712679
vt 0.4375 0.1875
vt 0.46875 0.1875
vt 0.46875 0.21875
vt 0.4375 0.21875
vt 0.375 0.1875
vt 0.40625 0.1875
vt 0.40625 0.21875
vt 0.375 0.21875
vt 0.03558125 0.20097187500000002
vt 0.05816875 0.20097187500000002
vt 0.084375 0.30000000000000004
vt 0.009375000000000001 0.30000000000000004
vt 0.057300000000000004 0.15840312499999998
vt 0.03645 0.15840312499999998
vt 0.012499999999999997 0.14687499999999998
vt 0.08124999999999999 0.14687499999999998
vt 0.271271875 0.1875
vt 0.259978125 0.1875
vt 0.25433125 0.15625
vt 0.27691875 0.15625
vt 0.8333375 0.71875
vt 0.8229125 0.71875
vt 0.8177 0.6875
vt 0.83855 0.6875
vt 0.5093749166282874 0.5431354865986693
vt 0.5031249166282873 0.36221361159866927
vt 0.5906249166282873 0.36221361159866927
vt 0.5843749166282873 0.5431354865986693
vt 0.009375000000000001 0.5625
vt 0.009375000000000001 0.40312499999999996
vt 0.084375 0.40312499999999996
vt 0.084375 0.5625
vt 0.77785 0.19608749999999997
vt 0.7534 0.19608749999999997
vt 0.7534 0.18599062499999997
vt 0.77785 0.18599062499999997
vt 0.336265625 0.15625
vt 0.3363625 0.1875
vt 0.3198875 0.1875
vt 0.319984375 0.15625
vt 0.5512749166282873 0.3142636115986692
vt 0.5906249166282873 0.36221361159866927
vt 0.5031249166282873 0.36221361159866927
vt 0.5424749166282873 0.3142636115986692
vt 0.737775 0.46875
vt 0.762225 0.46875
vt 0.77445 0.5
vt 0.72555 0.5
vt 0.456525 0.816665625
vt 0.48097500000000004 0.816665625
vt 0.49319999999999997 0.8538593750000001
vt 0.44430000000000003 0.853859375
vt 0.65625 0.875
vt 0.625 0.875
vt 0.625 0.8125
vt 0.65625 0.8125
vt 0.456525 0.76096875
vt 0.48097500000000004 0.76096875
vt 0.48097500000000004 0.816665625
vt 0.456525 0.816665625
vt 0.75 0.25
vt 0.78125 0.25
vt 0.78125 0.28125
vt 0.75 0.28125
vt 0.456525 0.71875
vt 0.48097500000000004 0.71875
vt 0.48097500000000004 0.76096875
vt 0.456525 0.76096875
vt 0.572496875 0.15625
vt 0.583753125 0.15625
vt 0.582525 0.1875
vt 0.573725 0.1875
vt 0.822265625 0.959275
vt 0.833984375 0.959275
vt 0.833359375 0.9868625
vt 0.822890625 0.9868625
vt 0.8198875 0.5625
vt 0.8363625 0.5625
vt 0.833753125 0.59375
vt 0.822496875 0.59375
vt 0.819984375 0.9375
vt 0.836265625 0.9375
vt 0.833984375 0.959275
vt 0.822265625 0.959275
vt 0.7779875 0.21875
vt 0.7532625 0.21875
vt 0.7534 0.19608749999999997
vt 0.77785 0.19608749999999997
vt 0.2154875 0.1875
vt 0.1907625 0.1875
vt 0.19090000000000001 0.15625
vt 0.21534999999999999 0.15625
vt 0.1857375 0.37812500000000004
vt 0.1857375 0.3656250000000001
vt 0.2611375 0.3656250000000001
vt 0.2611375 0.37812500000000004
vt 0.14350967903105108 0.94375
vt 0.18413467903105107 0.846875
vt 0.2996034290310511 0.846875
vt 0.27460342903105106 0.90625
vt 0.18413467903105107 0.846875
vt 0.19038467903105108 0.815625
vt 0.30585342903105106 0.815625
vt 0.2996034290310511 0.846875
vt 0.53805 0.75
vt 0.547746875 0.770034375
vt 0.547746875 0.845434375
vt 0.53805 0.86546875
vt 0.1388625 0.5625
vt 0.1857375 0.37812500000000004
vt 0.2611375 0.37812500000000004
vt 0.21426250000000002 0.5625
vt 0.2054705829083111 0.30031454930939216
vt 0.2108612079083111 0.28444892430939217
vt 0.3263299579083111 0.28444892430939217
vt 0.3623455829083111 0.3103864243093921
vt 0.13100967903105107 1
vt 0.14350967903105108 0.94375
vt 0.27460342903105106 0.90625
vt 0.24647842903105105 1
vt 0.3876515972471376 0.6851098970706792
vt 0.4088105251353884 0.597616038942963
vt 0.48981363038017356 0.59375
vt 0.4904359683173213 0.684340621820905
vt 0.49043863038017355 0.684728125
vt 0.48981363038017356 0.59375
vt 0.6467198803801736 0.615978125
vt 0.6435948803801735 0.684728125
vt 0.1857375 0.37812500000000004
vt 0.17948750000000002 0.37812500000000004
vt 0.17948750000000002 0.3656250000000001
vt 0.1857375 0.3656250000000001
vt 0.2611375 0.3656250000000001
vt 0.2673875 0.3656250000000001
vt 0.2673875 0.37812500000000004
vt 0.2611375 0.37812500000000004
vt 0.0843709342993999 0.88715656602386
vt 0.06718397330860035 0.8800583857699948
vt 0.06874944932956746 0.8408710045443022
vt 0.0843734784618089 0.8125065660018046
vt 0.71875 0.21875
vt 0.6875 0.21875
vt 0.6875 0.1875
vt 0.71875 0.1875
vt 0.012499999999999997 0.14687499999999998
vt 0.03645 0.15840312499999998
vt 0.03558125 0.20097187500000002
vt 0.009375000000000001 0.30000000000000004
vt 0.8025390625 0.75
vt 0.7920046875 0.78125
vt 0.7707140625 0.78125
vt 0.7599609375 0.75
vt 0.4088109792112786 0.5976141613028612
vt 0.3876515972471376 0.6851098970706792
vt 0.22828011961982642 0.6861694931670557
vt 0.2284100666656519 0.6117076085269533
vt 0.13100967903105107 1
vt 0.12109405403105107 0.994846875
vt 0.12237842903105108 0.968221875
vt 0.14350967903105108 0.94375
vt 0.5523710526955196 0.28829500329210744
vt 0.5906249166282873 0.36221361159866927
vt 0.5512765832594778 0.3142656424745418
vt 0.12237842903105108 0.968221875
vt 0.10100584864927373 0.9526195425292573
vt 0.104474539127203 0.9431386106562386
vt 0.14312231471603176 0.9441986024772133
vt 0.10100584864927373 0.9526195425292573
vt 0.04534947496545675 0.9504608138795771
vt 0.04882076616625128 0.9409814489190148
vt 0.10447401811626256 0.9431400347294625
vt 0.04534947496545675 0.9504608138795771
vt 0.009244073125666732 0.9487962483807795
vt 0.006646570968948939 0.9390423256859621
vt 0.04882076616625128 0.9409814489190148
vt 0.7399985271819809 0.4375
vt 0.743357902181981 0.41051250000000006
vt 0.7562985271819809 0.40931249999999997
vt 0.765882902181981 0.43518750000000006
vt 0.743357902181981 0.41051250000000006
vt 0.734117097818019 0.39463395568785953
vt 0.7405894449574038 0.39406405485400864
vt 0.7562904589125373 0.40931324818050385
vt 0.04534947496545676 0.9504608138795771
vt 0.03220293409968965 0.9717571630656545
vt 0.014147111445988944 0.9709247374770231
vt 0.009244073125666732 0.9487962483807795
vt 0.5906250833717127 0.3622139337998975
vt 0.5523710526955196 0.28829500329210744
vt 0.5860590527145313 0.28125032220122825
vt 0.875 0.46875
vt 0.8405792598348666 0.46875
vt 0.8580567340196208 0.4585162068090871
vt 0.2001544170916889 0.28125
vt 0.2108612079083111 0.28444892430939217
vt 0.2054706973720894 0.30031421242092693
vt 0.3326125 0.3656250000000001
vt 0.4080125 0.3656250000000001
vt 0.4080125 0.37812500000000004
vt 0.3326125 0.37812500000000004
vt 0.012896831474419168 0.628125
vt 0.12836558147441918 0.628125
vt 0.16899058147441917 0.725
vt 0.03789683147441916 0.6875
vt 0.0066468314744191626 0.596875
vt 0.12211558147441916 0.596875
vt 0.12836558147441918 0.628125
vt 0.012896831474419168 0.628125
vt 0.577253125 0.845434375
vt 0.577253125 0.770034375
vt 0.58695 0.75
vt 0.58695 0.86546875
vt 0.3326125 0.37812500000000004
vt 0.4080125 0.37812500000000004
vt 0.4548875 0.5625
vt 0.3794875 0.5625
vt 0.7361700420916889 0.6281989243093922
vt 0.8516387920916889 0.6281989243093922
vt 0.8570294170916889 0.6440645493093922
vt 0.7001544170916889 0.6541364243093921
vt 0.03789683147441916 0.6875
vt 0.16899058147441917 0.725
vt 0.18149058147441915 0.78125
vt 0.06602183147441917 0.78125
vt 0.5101863696198264 0.90625
vt 0.5911894748646116 0.910116038942963
vt 0.6123484027528624 0.9976098970706792
vt 0.5095640316826787 0.996840621820905
vt 0.3532801196198264 0.928478125
vt 0.5101863696198264 0.90625
vt 0.5095613696198265 0.997228125
vt 0.3564051196198264 0.997228125
vt 0.78125 0.3125
vt 0.78125 0.34375
vt 0.75 0.34375
vt 0.75 0.3125
vt 0.3263625 0.37812500000000004
vt 0.3263625 0.3656250000000001
vt 0.3326125 0.3656250000000001
vt 0.3326125 0.37812500000000004
vt 0.024999449361107793 0.8408693432860626
vt 0.02656194936110779 0.8800568432860625
vt 0.00937444936110779 0.8871537182860625
vt 0.00937757436110779 0.8125037182860625
vt 0.625 0.1875
vt 0.65625 0.1875
vt 0.65625 0.21875
vt 0.625 0.21875
vt 0.05816875 0.20097187500000002
vt 0.0573 0.15840312499999998
vt 0.08124999999999999 0.14687499999999998
vt 0.084375 0.30000000000000004
vt 0.3230359375 0.25
vt 0.3017453125 0.25
vt 0.2912109375 0.21875
vt 0.3337890625 0.21875
vt 0.7717198803801736 0.9986694931670557
vt 0.6123484027528624 0.9976098970706792
vt 0.5911890207887214 0.910114161302861
vt 0.7715899333343481 0.9242076085269533
vt 0.19012183147441916 0.749471875
vt 0.19140620647441917 0.776096875
vt 0.18149058147441915 0.78125
vt 0.16899058147441917 0.725
vt 0.5031249166282873 0.36221361159866927
vt 0.541378780561055 0.28829500329210744
vt 0.5424732499970968 0.3142656424745418
vt 0.20802572137826722 0.7243886106562386
vt 0.21149441185619652 0.7338695425292574
vt 0.19012183147441916 0.749471875
vt 0.1693779457894385 0.7254486024772133
vt 0.2636789733282785 0.7222300248457909
vt 0.267150264529073 0.7317093898063531
vt 0.21149389084525605 0.7338681184560334
vt 0.20802572137826722 0.7243886106562386
vt 0.30585316852558087 0.7202909016127383
vt 0.30325566636886303 0.7300448243075556
vt 0.267150264529073 0.7317093898063532
vt 0.2636789733282785 0.7222300248457909
vt 0.7749555069527408 0.8468125
vt 0.7878961319527409 0.8480125000000001
vt 0.7912555069527408 0.875
vt 0.7653711319527409 0.8726875000000001
vt 0.7906565209078744 0.8315633066735049
vt 0.7971288680472591 0.8321332075073558
vt 0.7878880636832972 0.8480117518194962
vt 0.7749555069527408 0.8468125
vt 0.2983526280485408 0.7521733134037993
vt 0.28029680539484003 0.7530057389924307
vt 0.267150264529073 0.7317093898063532
vt 0.30325566636886303 0.7300448243075556
vt 0.5413789473044804 0.2882946810908792
vt 0.5031249166282873 0.36221361159866927
vt 0.5076909472854687 0.28125
vt 0.5102337931909129 0.1530792598348666
vt 0.5102337931909129 0.1875
vt 0.5 0.1705567340196208
vt 0.8516387920916889 0.6281989243093922
vt 0.8623455829083111 0.625
vt 0.8570293026279105 0.6440642124209269
vn 0 -1 0
vn 0 -0.001669734641210571 -0.9999986059921424
vn 0 1 0
vn 0 0.045407660918649784 0.9989685402102997
vn 0 1 0
vn 0 -0.5549649411032079 -0.8318737369014082
vn 0 -0.7553105403859344 0.6553670632415914
vn 0 -0.04824325366519564 -0.9988356163432478
vn 0 0.28734788556634494 0.9578262852211515
vn 0 -0.38672667625067453 -0.9221943818285308
vn 0 0.3880570000581315 0.9216353751380658
vn 0 -0.19611613513818418 -0.9805806756909201
vn 0 0.19611613513818338 0.9805806756909203
vn 0 -1 0
vn 0 -1 0
vn 0 -0.24639877909159877 -0.9691685310936224
vn 0 0.2463987790915986 0.9691685310936224
vn 0 0 -1
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 -1 0
vn 0 1 0
vn 0 -0.0046117136913912385 -0.9999893659918733
vn 0 -0.018551344252963564 -0.999827909005549
vn 0 0.9999986059921425 -0.001669734641209789
vn 0 -0.9999986059921424 0.0016697346412097886
vn 0 1 0
vn 0 1 0
vn 0 0.7503681023408861 -0.6610202046755738
vn 0 0.7503681023408861 0.6610202046755739
vn 0 -0.9976178378468323 -0.06898296608447115
vn 0 1 0
vn 0 0.3010478781501444 -0.9536090263107287
vn 0 -0.9956807082909853 -0.09284356271256418
vn 0 -0.97617147371828 -0.2170005850192155
vn 0 0.8128151935674142 -0.5825216400323401
vn 0 -0.9995042402321033 -0.03148450028261663
vn 0 0.9999756719230746 0.006975353897531805
vn 0 -0.9999756719230746 -0.006975353897531803
vn 0 0.9999999406453262 -0.00034454222408026805
vn 0 -0.9999999703759104 0.00024340948701756062
vn 0 -0.123091247835108 -0.9923953570560455
vn 0 -0.34778059498693337 0.9375759477239883
vn 0 0.5095673090247187 -0.8604307976666729
vn 0 -0.7226669741644133 0.6911963863129287
vn 0 0.2608510603957077 -0.965379057308804
vn 0 0.48596491711196277 0.8739783174291932
vn -1 0 0
vn -1 0 0
vn -1 0 0
vn 0 -1 0
vn -1 0 0
vn -0.5687281344121056 -0.8225255674616602 0
vn -1 0 0
vn -0.992496576136477 0.09144782105381558 0.08116552458944547
vn -0.9998012525008254 -0.00013683797693984372 0.019935816340162994
vn -1 0 0
vn -1 0 0
vn 0.001194690135021918 -0.001717367069094012 -0.9999978116805214
vn -0.9992060915293383 0.03983945563841803 -0.00006652141189777811
vn 0 1 0
vn -0.8652090788081117 0.5011002581430316 0.017657328138941122
vn -0.9974370834279243 0.07154903635127748 0
vn -1 0 0
vn -0.15061017944503302 -0.9842858583396298 -0.09218417933763436
vn -0.8768894300418022 -0.1443824592922636 -0.45849605552248895
vn -1 0 0
vn -1 -2.1213190136722787e-16 6.719558933790427e-16
vn -0.9989452182060938 0.0437505916083406 -0.013940471910941409
vn -0.9885596717686322 0.14813004931600485 0.028412388888161257
vn -0.9999802474254373 -0.006285280763139086 0.000002165544742403895
vn -0.27031267778105567 -0.9624495790747458 -0.024937200518104684
vn -0.21133651274958745 0.11538700871428621 -0.9705785473617337
vn -0.6265919925615746 -0.6915756395740456 0.3593126905711313
vn 1 0 0
vn 1 0 0
vn 1 0 0
vn 0 -1 0
vn 1 0 0
vn 0.5687281344121056 -0.8225255674616601 0
vn 1 0 0
vn 0.992496576136477 0.09144782105381556 0.08116552458944547
vn 0.9998012525008254 -0.0001368379769398451 0.019935816340162994
vn 1 0 0
vn 1 0 0
vn -0.001194690135021918 -0.0017173670690940116 -0.9999978116805214
vn 0.9992060915293383 0.03983945563841803 -0.0000665214118977465
vn 0 1 0
vn 0.8652090788081117 0.5011002581430316 0.017657328138941112
vn 0.9974370834279243 0.07154903635127748 0
vn 1 0 0
vn 0.15061017944503302 -0.98428585833963 -0.09218417933763448
vn 0.8768894300418022 -0.14438245929226376 -0.45849605552248884
vn 1 0 0
vn 1 -2.1213190136722763e-16 6.719558933790428e-16
vn 0.9989452182060938 0.043750591608340605 -0.013940471910941402
vn 0.9885596717686322 0.14813004931600482 0.028412388888161264
vn 0.9999802474254373 -0.006285280763139084 0.000002165544742403917
vn 0.2703126777810558 -0.9624495790747458 -0.02493720051810468
vn 0.21133651274958745 0.11538700871428618 -0.9705785473617337
vn 0.6265919925615746 -0.6915756395740457 0.35931269057113135
usemtl none
f 2/1/1 1/2/1 51/3/1 52/4/1
f 27/5/2 77/6/2 78/7/2 28/8/2
f 81/9/3 82/10/3 32/11/3 31/12/3
f 69/13/4 53/14/4 3/15/4 19/16/4
f 57/17/5 84/18/5 34/19/5 7/20/5
f 85/21/6 35/22/6 36/23/6 86/24/6
f 20/25/7 70/26/7 69/27/7 19/28/7
f 87/29/8 37/30/8 35/31/8 85/32/8
f 10/33/9 60/34/9 70/35/9 20/36/9
f 61/37/10 11/38/10 9/39/10 59/40/10
f 12/41/11 62/42/11 60/43/11 10/44/11
f 63/45/12 13/46/12 11/47/12 61/48/12
f 14/49/13 64/50/13 62/51/13 12/52/13
f 65/53/14 15/54/14 13/55/14 63/56/14
f 16/57/15 66/58/15 64/59/15 14/60/15
f 67/61/16 17/62/16 15/63/16 65/64/16
f 18/65/17 68/66/17 66/67/17 16/68/17
f 71/69/18 21/70/18 22/71/18 72/72/18
f 23/73/19 73/74/19 74/75/19 24/76/19
f 21/77/20 71/78/20 51/79/20 1/80/20
f 72/81/21 22/82/21 17/83/21 67/84/21
f 73/85/22 23/86/22 2/87/22 52/88/22
f 24/89/23 74/90/23 68/91/23 18/92/23
f 75/93/24 25/94/24 4/95/24 54/96/24
f 26/97/25 76/98/25 55/99/25 5/100/25
f 77/101/26 27/102/26 25/103/26 75/104/26
f 28/105/27 78/106/27 76/107/27 26/108/27
f 30/109/28 80/110/28 57/111/28 7/112/28
f 79/113/29 29/114/29 3/115/29 53/116/29
f 32/117/30 82/118/30 80/119/30 30/120/30
f 81/121/31 31/122/31 29/123/31 79/124/31
f 55/125/32 83/126/32 33/127/32 5/128/32
f 4/129/33 34/130/33 84/131/33 54/132/33
f 43/133/34 93/134/34 94/135/34 44/136/34
f 46/137/35 45/138/35 95/139/35 96/140/35
f 38/141/36 33/142/36 83/143/36 88/144/36
f 89/145/37 39/146/37 37/147/37 87/148/37
f 40/149/38 90/150/38 59/151/38 9/152/38
f 91/153/39 41/154/39 39/155/39 89/156/39
f 42/157/40 92/158/40 90/159/40 40/160/40
f 97/161/41 47/162/41 48/163/41 98/164/41
f 44/165/42 94/166/42 92/167/42 42/168/42
f 99/169/43 49/170/43 38/171/43 88/172/43
f 50/173/44 100/174/44 86/175/44 36/176/44
f 95/177/45 45/178/45 49/179/45 99/180/45
f 46/181/46 96/182/46 100/183/46 50/184/46
f 47/185/47 97/186/47 93/187/47 43/188/47
f 98/189/48 48/190/48 41/191/48 91/192/48
f 17/193/49 1/194/49 2/195/49 18/196/49
f 9/197/50 11/198/50 12/199/50 10/200/50
f 11/201/51 13/202/51 14/203/51 12/204/51
f 13/205/52 15/206/52 16/207/52 14/208/52
f 15/209/53 17/210/53 18/211/53 16/212/53
f 6/213/54 8/214/54 20/215/54 19/216/54
f 8/217/55 9/218/55 10/219/55 20/220/55
f 34/221/56 33/222/56 6/223/56 7/224/56
f 7/225/57 6/226/57 19/227/57 3/228/57
f 17/229/58 22/230/58 21/231/58 1/232/58
f 2/233/59 23/234/59 24/235/59 18/236/59
f 4/237/60 25/238/60 26/239/60 5/240/60
f 25/241/61 27/242/61 28/243/61 26/244/61
f 3/245/62 29/246/62 30/247/62 7/248/62
f 29/249/63 31/250/63 32/251/63 30/252/63
f 33/253/64 34/254/64 4/255/64 5/256/64
f 8/257/65 35/258/65 37/259/65 9/260/65
f 36/261/66 33/262/66 38/263/66
f 37/264/67 39/265/67 40/266/67 9/267/67
f 39/268/68 41/269/68 42/270/68 40/271/68
f 41/272/69 43/273/69 44/274/69 42/275/69
f 38/276/70 49/277/70 50/278/70 36/279/70
f 49/280/71 45/281/71 46/282/71 50/283/71
f 41/284/72 48/285/72 47/286/72 43/287/72
f 33/288/73 36/289/73 6/290/73
f 6/291/74 36/292/74 35/293/74
f 35/294/75 8/295/75 6/296/75
f 52/297/76 51/298/76 67/299/76 68/300/76
f 62/301/77 61/302/77 59/303/77 60/304/77
f 64/305/78 63/306/78 61/307/78 62/308/78
f 66/309/79 65/310/79 63/311/79 64/312/79
f 68/313/80 67/314/80 65/315/80 66/316/80
f 70/317/81 58/318/81 56/319/81 69/320/81
f 60/321/82 59/322/82 58/323/82 70/324/82
f 56/325/83 83/326/83 84/327/83 57/328/83
f 69/329/84 56/330/84 57/331/84 53/332/84
f 71/333/85 72/334/85 67/335/85 51/336/85
f 74/337/86 73/338/86 52/339/86 68/340/86
f 76/341/87 75/342/87 54/343/87 55/344/87
f 78/345/88 77/346/88 75/347/88 76/348/88
f 80/349/89 79/350/89 53/351/89 57/352/89
f 82/353/90 81/354/90 79/355/90 80/356/90
f 54/357/91 84/358/91 83/359/91 55/360/91
f 87/361/92 85/362/92 58/363/92 59/364/92
f 83/365/93 86/366/93 88/367/93
f 90/368/94 89/369/94 87/370/94 59/371/94
f 92/372/95 91/373/95 89/374/95 90/375/95
f 94/376/96 93/377/96 91/378/96 92/379/96
f 100/380/97 99/381/97 88/382/97 86/383/97
f 96/384/98 95/385/98 99/386/98 100/387/98
f 97/388/99 98/389/99 91/390/99 93/391/99
f 86/392/100 83/393/100 56/394/100
f 86/395/101 56/396/101 85/397/101
f 58/398/102 85/399/102 56/400/102

View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://mn81pev3xigk"
path="res://.godot/imported/pistoletda.obj-b2dc735ee9be3082be13821c5c2e5d32.mesh"
[deps]
files=["res://.godot/imported/pistoletda.obj-b2dc735ee9be3082be13821c5c2e5d32.mesh"]
source_file="res://models/pistoletda.obj"
dest_files=["res://.godot/imported/pistoletda.obj-b2dc735ee9be3082be13821c5c2e5d32.mesh", "res://.godot/imported/pistoletda.obj-b2dc735ee9be3082be13821c5c2e5d32.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

218
models/pistoletto.dae Normal file
View File

@ -0,0 +1,218 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Anonymous</author>
<authoring_tool>Collada Exporter for Blender 2.6+, by Juan Linietsky (juan@codenix.com)</authoring_tool>
</contributor>
<created>2024-02-17T21:50:36Z</created>
<modified>2024-02-17T21:50:36Z</modified>
<unit meter="1.0" name="meter"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_effects>
<effect id="id-fx-2" name="Material.002-fx">
<profile_COMMON>
<technique sid="common">
<blinn>
<emission>
<color> 0.800000011920929 0.800000011920929 0.800000011920929 1.0 </color>
</emission>
<ambient>
<color> 0.0 0.0 0.0 1.0 </color>
</ambient>
<diffuse>
<color> 0.6400000095367432 0.6400000095367432 0.6400000095367432 0.8 </color>
</diffuse>
<specular>
<color> 0.5 0.5 0.5 1.0 </color>
</specular>
<shininess>
<float>50</float>
</shininess>
<reflective>
<color> 0.5 0.5 0.5 1.0 </color>
</reflective>
<index_of_refraction>
<float>1.2</float>
</index_of_refraction>
</blinn>
<extra>
<technique profile="FCOLLADA">
</technique>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</technique>
</profile_COMMON>
</effect>
<effect id="id-fx-6" name="Material.001-fx">
<profile_COMMON>
<technique sid="common">
<blinn>
<emission>
<color> 0.800000011920929 0.800000011920929 0.800000011920929 1.0 </color>
</emission>
<ambient>
<color> 0.0 0.0 0.0 1.0 </color>
</ambient>
<diffuse>
<color> 0.6400000095367432 0.6400000095367432 0.6400000095367432 0.8 </color>
</diffuse>
<specular>
<color> 0.5 0.5 0.5 1.0 </color>
</specular>
<shininess>
<float>50</float>
</shininess>
<reflective>
<color> 0.5 0.5 0.5 1.0 </color>
</reflective>
<index_of_refraction>
<float>1.2</float>
</index_of_refraction>
</blinn>
<extra>
<technique profile="FCOLLADA">
</technique>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</technique>
</profile_COMMON>
</effect>
</library_effects>
<library_materials>
<material id="id-material-3" name="Material.002">
<instance_effect url="#id-fx-2"/>
</material>
<material id="id-material-7" name="Material.001">
<instance_effect url="#id-fx-6"/>
</material>
</library_materials>
<library_geometries>
<geometry id="id-mesh-4" name="Cube">
<mesh>
<source id="id-mesh-4-positions">
<float_array id="id-mesh-4-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-4-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-4-normals">
<float_array id="id-mesh-4-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-4-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-4-texcoord-0">
<float_array id="id-mesh-4-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-4-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-4-vertices">
<input semantic="POSITION" source="#id-mesh-4-positions"/>
</vertices>
<polygons count="6" material="id-trimat-5">
<input semantic="VERTEX" source="#id-mesh-4-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-4-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-4-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
<geometry id="id-mesh-8" name="Cube.001">
<mesh>
<source id="id-mesh-8-positions">
<float_array id="id-mesh-8-positions-array" count="72"> 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0</float_array>
<technique_common>
<accessor source="#id-mesh-8-positions-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-8-normals">
<float_array id="id-mesh-8-normals-array" count="72"> 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 0.0 0.0 -1.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0</float_array>
<technique_common>
<accessor source="#id-mesh-8-normals-array" count="24" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="id-mesh-8-texcoord-0">
<float_array id="id-mesh-8-texcoord-0-array" count="48"> 0.625 0.5 0.875 0.5 0.875 0.75 0.625 0.75 0.375 0.75 0.625 0.75 0.625 1.0 0.375 1.0 0.375 0.0 0.625 0.0 0.625 0.25 0.375 0.25 0.125 0.5 0.375 0.5 0.375 0.75 0.125 0.75 0.375 0.5 0.625 0.5 0.625 0.75 0.375 0.75 0.375 0.25 0.625 0.25 0.625 0.5 0.375 0.5</float_array>
<technique_common>
<accessor source="#id-mesh-8-texcoord-0-array" count="24" stride="2">
<param name="S" type="float"/>
<param name="T" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="id-mesh-8-vertices">
<input semantic="POSITION" source="#id-mesh-8-positions"/>
</vertices>
<polygons count="6" material="id-trimat-9">
<input semantic="VERTEX" source="#id-mesh-8-vertices" offset="0"/>
<input semantic="NORMAL" source="#id-mesh-8-normals" offset="0"/>
<input semantic="TEXCOORD" source="#id-mesh-8-texcoord-0" offset="0" set="0"/>
<p> 0 1 2 3 </p>
<p> 4 5 6 7 </p>
<p> 8 9 10 11 </p>
<p> 12 13 14 15 </p>
<p> 16 17 18 19 </p>
<p> 20 21 22 23 </p>
</polygons>
</mesh>
</geometry>
</library_geometries>
<library_visual_scenes>
<visual_scene id="id-scene-1" name="scene">
<node id="Cube" name="Cube" type="NODE">
<matrix sid="transform"> 0.28390204906463623 0.0 0.30559131503105164 -0.016092630103230476 0.0 0.11151131987571716 0.0 0.0 -0.7800144553184509 0.0 0.1112261414527893 -0.06142665445804596 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-4">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-5" target="#id-material-3"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Cube.001" name="Cube.001" type="NODE">
<matrix sid="transform"> 1.2125928401947021 0.0 0.0 -1.1341843605041504 0.0 0.12897871434688568 0.0 0.0 0.0 0.0 0.33654701709747314 0.5419423580169678 0.0 0.0 0.0 1.0 </matrix>
<instance_geometry url="#id-mesh-8">
<bind_material>
<technique_common>
<instance_material symbol="id-trimat-9" target="#id-material-7"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#id-scene-1" />
</scene>
</COLLADA>

View File

@ -0,0 +1,34 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://hf47u08p80fo"
path="res://.godot/imported/pistoletto.dae-4af72fbdd439456c2e42ffc84bc67388.scn"
[deps]
source_file="res://models/pistoletto.dae"
dest_files=["res://.godot/imported/pistoletto.dae-4af72fbdd439456c2e42ffc84bc67388.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

1337
models/player.obj Normal file

File diff suppressed because it is too large Load Diff

22
models/player.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://p2wom3t07fio"
path="res://.godot/imported/player.obj-2e9a6922de577ef9126cb60ee24cd899.mesh"
[deps]
files=["res://.godot/imported/player.obj-2e9a6922de577ef9126cb60ee24cd899.mesh"]
source_file="res://models/player.obj"
dest_files=["res://.godot/imported/player.obj-2e9a6922de577ef9126cb60ee24cd899.mesh", "res://.godot/imported/player.obj-2e9a6922de577ef9126cb60ee24cd899.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

View File

@ -1,24 +0,0 @@
[gd_scene load_steps=4 format=3 uid="uid://b2jhgtduapovl"]
[ext_resource type="Script" path="res://scripts/Player.gd" id="1_o6o4b"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yyp7b"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_jqfxo"]
[node name="player" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.10113, 0)
[node name="CharacterBody3D" type="CharacterBody3D" parent="."]
script = ExtResource("1_o6o4b")
[node name="Head" type="Node3D" parent="CharacterBody3D"]
[node name="Camera" type="Camera3D" parent="CharacterBody3D/Head"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.675496, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
shape = SubResource("CapsuleShape3D_yyp7b")
[node name="MeshInstance3D" type="MeshInstance3D" parent="CharacterBody3D"]
mesh = SubResource("CapsuleMesh_jqfxo")

1199
models/playerv2.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://dpdsmpuycacsx"
path="res://.godot/imported/playerv2.obj-a1026b78d0af2162542ed417a916cd60.mesh"
[deps]
files=["res://.godot/imported/playerv2.obj-a1026b78d0af2162542ed417a916cd60.mesh"]
source_file="res://models/playerv2.obj"
dest_files=["res://.godot/imported/playerv2.obj-a1026b78d0af2162542ed417a916cd60.mesh", "res://.godot/imported/playerv2.obj-a1026b78d0af2162542ed417a916cd60.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

View File

@ -1,6 +0,0 @@
extends CharacterBody3D
#
#@rpc ("authority", "call_remote")
#func move_puppet(v: Vector3):
#var velocity = v
#move_and_slide()

View File

@ -1,21 +0,0 @@
[gd_scene load_steps=4 format=3 uid="uid://vj3v8qlchp0r"]
[ext_resource type="Script" path="res://models/puppet.gd" id="1_5nucb"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yyp7b"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_jqfxo"]
[node name="puppet" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.10113, 0)
[node name="CharacterBody3D" type="CharacterBody3D" parent="."]
script = ExtResource("1_5nucb")
[node name="Head" type="Node3D" parent="CharacterBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
shape = SubResource("CapsuleShape3D_yyp7b")
[node name="MeshInstance3D" type="MeshInstance3D" parent="CharacterBody3D"]
mesh = SubResource("CapsuleMesh_jqfxo")

8
models/spectator.tscn Normal file
View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://bf6uev4mtg2ls"]
[ext_resource type="Script" path="res://scripts/SpectatorControls.gd" id="1_uqbjn"]
[node name="head" type="Node3D"]
script = ExtResource("1_uqbjn")
[node name="Camera" type="Camera3D" parent="."]

95
models/target.obj Normal file
View File

@ -0,0 +1,95 @@
# Made in Blockbench 4.9.4
mtllib target.mtl
o cube
v 0.4375 1.25 0.0625
v 0.4375 1.25 -0.0625
v 0.4375 0 0.0625
v 0.4375 0 -0.0625
v -0.4375 1.25 -0.0625
v -0.4375 1.25 0.0625
v -0.4375 0 -0.0625
v -0.4375 0 0.0625
vt 0 1
vt 0.875 1
vt 0.875 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.875 1
vt 0.875 0
vt 0 0
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0 1
vt 0.875 1
vt 0.875 0.875
vt 0 0.875
vt 0 1
vt 0.875 1
vt 0.875 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v 0.3125 1.8125 0.0625
v 0.3125 1.8125 -0.0625
v 0.3125 1.25 0.0625
v 0.3125 1.25 -0.0625
v -0.3125 1.8125 -0.0625
v -0.3125 1.8125 0.0625
v -0.3125 1.25 -0.0625
v -0.3125 1.25 0.0625
vt 0 1
vt 0.625 1
vt 0.625 0.4375
vt 0 0.4375
vt 0 1
vt 0.125 1
vt 0.125 0.4375
vt 0 0.4375
vt 0 1
vt 0.625 1
vt 0.625 0.4375
vt 0 0.4375
vt 0 1
vt 0.125 1
vt 0.125 0.4375
vt 0 0.4375
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vt 0 1
vt 0.625 1
vt 0.625 0.875
vt 0 0.875
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl none
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12

22
models/target.obj.import Normal file
View File

@ -0,0 +1,22 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://cqomvoochvl6s"
path="res://.godot/imported/target.obj-a62cba5a2be174288296327b10ff1d3e.mesh"
[deps]
files=["res://.godot/imported/target.obj-a62cba5a2be174288296327b10ff1d3e.mesh"]
source_file="res://models/target.obj"
dest_files=["res://.godot/imported/target.obj-a62cba5a2be174288296327b10ff1d3e.mesh", "res://.godot/imported/target.obj-a62cba5a2be174288296327b10ff1d3e.mesh"]
[params]
generate_tangents=true
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
optimize_mesh=true
force_disable_mesh_compression=false

View File

@ -11,14 +11,18 @@ config_version=5
[application]
config/name="Cs-os"
run/main_scene="res://scenes/menu.tscn"
run/main_scene="res://scenes/HUD/menu.tscn"
config/features=PackedStringArray("4.2", "Forward Plus")
config/icon="res://icon.svg"
boot_splash/bg_color=Color(0.282353, 0.00784314, 0.0745098, 1)
config/icon="res://logo.png"
[autoload]
Networking="*res://scripts/Networking.gd"
GameData="*res://scripts/GameData.gd"
Anticheat="*res://scripts/Anticheat.gd"
ServerUtils="*res://scripts/utils/ServerUtils.gd"
NetUtils="*res://scripts/utils/NetUtils.gd"
[input]
@ -52,3 +56,28 @@ run={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
shoot={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
crawl={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
MWU={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
MWD={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
reload={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null)
]
}

383
scenes/HUD/choose_team.tscn Normal file
View File

@ -0,0 +1,383 @@
[gd_scene load_steps=2 format=3 uid="uid://b8ulqlywdvqba"]
[ext_resource type="Script" path="res://scripts/Select.gd" id="1_nua8c"]
[node name="ChooseTeam" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="wallpaper" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.0392157, 0.360784, 0.419608, 1)
[node name="box" type="ColorRect" parent="."]
custom_minimum_size = Vector2(100, 200)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -250.0
offset_top = -199.0
offset_right = 250.0
offset_bottom = 201.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.117647, 0.117647, 0.117647, 1)
[node name="background" type="Control" parent="."]
anchors_preset = 0
offset_right = 1152.0
offset_bottom = 650.0
[node name="Choose_team" type="Control" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 13.0
offset_top = -62.0
offset_right = 53.0
offset_bottom = -22.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextEdit" type="TextEdit" parent="Choose_team"]
layout_mode = 0
offset_left = -203.0
offset_top = -118.0
offset_right = -143.0
offset_bottom = -73.0
theme_override_colors/background_color = Color(0.117647, 0.117647, 0.117647, 1)
text = "Teams"
[node name="CS" type="Control" parent="Choose_team"]
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -268.0
offset_top = -46.0
offset_right = -103.0
offset_bottom = -56.0
grow_horizontal = 0
grow_vertical = 2
[node name="Closed source" type="Label" parent="Choose_team/CS"]
layout_mode = 0
offset_top = 4.0
offset_right = 108.0
offset_bottom = 27.0
text = "Closed source
"
[node name="Select_CS" type="Button" parent="Choose_team/CS"]
layout_mode = 0
offset_left = 110.0
offset_right = 164.0
offset_bottom = 31.0
text = "Select
"
script = ExtResource("1_nua8c")
[node name="OS" type="Control" parent="Choose_team"]
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -268.0
offset_top = -82.0
offset_right = -98.0
offset_bottom = -92.0
grow_horizontal = 0
grow_vertical = 2
[node name="Open source" type="Label" parent="Choose_team/OS"]
layout_mode = 0
offset_top = 4.0
offset_right = 108.0
offset_bottom = 27.0
text = "Open source"
[node name="Select_OS" type="Button" parent="Choose_team/OS"]
layout_mode = 0
offset_left = 110.0
offset_right = 164.0
offset_bottom = 31.0
text = "Select
"
script = ExtResource("1_nua8c")
[node name="SP" type="Control" parent="Choose_team"]
layout_mode = 1
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -268.0
offset_top = -11.0
offset_right = -98.0
offset_bottom = -21.0
grow_horizontal = 0
grow_vertical = 2
[node name="Spectator" type="Label" parent="Choose_team/SP"]
layout_mode = 0
offset_top = 4.0
offset_right = 108.0
offset_bottom = 27.0
text = "Spectator"
[node name="Select_SP" type="Button" parent="Choose_team/SP"]
layout_mode = 0
offset_left = 110.0
offset_right = 164.0
offset_bottom = 31.0
text = "Select
"
script = ExtResource("1_nua8c")
[node name="Choose_class_OS" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -215.0
offset_top = -135.0
offset_right = -215.0
offset_bottom = -135.0
grow_horizontal = 2
grow_vertical = 2
[node name="Class 1" type="Control" parent="Choose_class_OS"]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Name" type="Label" parent="Choose_class_OS/Class 1"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class 1"
[node name="Select_1" type="Button" parent="Choose_class_OS/Class 1"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class 2" type="Control" parent="Choose_class_OS"]
anchors_preset = 0
offset_top = 54.0
offset_right = 40.0
offset_bottom = 94.0
[node name="Name" type="Label" parent="Choose_class_OS/Class 2"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class 2"
[node name="Select_2" type="Button" parent="Choose_class_OS/Class 2"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class 3" type="Control" parent="Choose_class_OS"]
anchors_preset = 0
offset_top = 108.0
offset_right = 40.0
offset_bottom = 148.0
[node name="Name" type="Label" parent="Choose_class_OS/Class 3"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class 3"
[node name="Select_3" type="Button" parent="Choose_class_OS/Class 3"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class 4" type="Control" parent="Choose_class_OS"]
anchors_preset = 0
offset_top = 162.0
offset_right = 40.0
offset_bottom = 202.0
[node name="Name" type="Label" parent="Choose_class_OS/Class 4"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class 4"
[node name="Select_4" type="Button" parent="Choose_class_OS/Class 4"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class 5" type="Control" parent="Choose_class_OS"]
anchors_preset = 0
offset_top = 216.0
offset_right = 40.0
offset_bottom = 256.0
[node name="Name" type="Label" parent="Choose_class_OS/Class 5"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class 5"
[node name="Select_5" type="Button" parent="Choose_class_OS/Class 5"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Choose_class_CS" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -215.0
offset_top = -135.0
offset_right = -215.0
offset_bottom = -135.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_use_anchors_ = true
[node name="Class -1" type="Control" parent="Choose_class_CS"]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Name" type="Label" parent="Choose_class_CS/Class -1"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class -1"
[node name="Select_-1" type="Button" parent="Choose_class_CS/Class -1"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class -2" type="Control" parent="Choose_class_CS"]
anchors_preset = 0
offset_top = 54.0
offset_right = 40.0
offset_bottom = 94.0
[node name="Name" type="Label" parent="Choose_class_CS/Class -2"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class -2"
[node name="Select_-2" type="Button" parent="Choose_class_CS/Class -2"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class -3" type="Control" parent="Choose_class_CS"]
anchors_preset = 0
offset_top = 108.0
offset_right = 40.0
offset_bottom = 148.0
[node name="Name" type="Label" parent="Choose_class_CS/Class -3"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class -3"
[node name="Select_-3" type="Button" parent="Choose_class_CS/Class -3"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class -4" type="Control" parent="Choose_class_CS"]
anchors_preset = 0
offset_top = 162.0
offset_right = 40.0
offset_bottom = 202.0
[node name="Name" type="Label" parent="Choose_class_CS/Class -4"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class -4"
[node name="Select_-4" type="Button" parent="Choose_class_CS/Class -4"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")
[node name="Class -5" type="Control" parent="Choose_class_CS"]
anchors_preset = 0
offset_top = 216.0
offset_right = 40.0
offset_bottom = 256.0
[node name="Name" type="Label" parent="Choose_class_CS/Class -5"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Class -5"
[node name="Select_-5" type="Button" parent="Choose_class_CS/Class -5"]
layout_mode = 0
offset_top = 23.0
offset_right = 54.0
offset_bottom = 54.0
text = "Select"
script = ExtResource("1_nua8c")

368
scenes/HUD/hud.tscn Normal file
View File

@ -0,0 +1,368 @@
[gd_scene load_steps=16 format=3 uid="uid://gxfhitfre2fj"]
[ext_resource type="Texture2D" uid="uid://c4pah1vj0aa4x" path="res://textures/prototype-textures/Prototype_symbol_cross_32x32px.png" id="1_g1v70"]
[ext_resource type="Texture2D" uid="uid://na1y6c7osyj2" path="res://textures/logo/health.svg" id="1_ts1uf"]
[ext_resource type="Texture2D" uid="uid://cxpljra1na1p8" path="res://textures/logo/shield.svg" id="2_ijndi"]
[ext_resource type="Texture2D" uid="uid://d1i1fgjbpwped" path="res://textures/logo/magazine.svg" id="3_ssnuf"]
[ext_resource type="Texture2D" uid="uid://bmuo2tbe3r8ih" path="res://textures/logo/ammo.svg" id="4_f070v"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ryudk"]
bg_color = Color(1, 1, 1, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_u8rhl"]
texture = ExtResource("1_ts1uf")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_n5sx0"]
texture = ExtResource("2_ijndi")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_w337q"]
texture = ExtResource("3_ssnuf")
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tcxn4"]
texture = ExtResource("4_f070v")
[sub_resource type="Theme" id="Theme_xwpjm"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mkhl7"]
texture = ExtResource("1_g1v70")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pxi8e"]
bg_color = Color(0.117647, 0.117647, 0.117647, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_blend = true
[sub_resource type="LabelSettings" id="LabelSettings_l41k6"]
font_size = 30
[sub_resource type="LabelSettings" id="LabelSettings_ky32e"]
font_size = 64
font_color = Color(0.992157, 0.415686, 0.631373, 1)
shadow_size = 9
shadow_color = Color(0, 0, 0, 0.772549)
[node name="HUD" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
metadata/_edit_use_anchors_ = true
[node name="health_and_ammo_display" type="Control" parent="."]
custom_minimum_size = Vector2(200, 70)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -68.0
offset_top = -69.0
offset_right = 132.0
offset_bottom = 1.0
grow_horizontal = 2
grow_vertical = 0
[node name="pipe" type="Panel" parent="health_and_ammo_display"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -35.0
offset_top = -70.0
offset_right = -30.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxFlat_ryudk")
[node name="healthdisplay" type="Control" parent="health_and_ammo_display"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -100.0
offset_top = -70.0
offset_right = -40.0
offset_bottom = -45.0
grow_horizontal = 2
grow_vertical = 0
[node name="text" type="Label" parent="health_and_ammo_display/healthdisplay"]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -28.0
offset_top = -11.5
offset_bottom = 11.5
grow_horizontal = 0
grow_vertical = 2
text = "100
"
[node name="logo" type="Panel" parent="health_and_ammo_display/healthdisplay"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -25.0
offset_right = 25.0
grow_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxTexture_u8rhl")
[node name="armordisplay" type="Control" parent="health_and_ammo_display"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -100.0
offset_top = -35.0
offset_right = -40.0
offset_bottom = -10.0
grow_horizontal = 2
grow_vertical = 0
[node name="text" type="Label" parent="health_and_ammo_display/armordisplay"]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -28.0
offset_top = -11.5
offset_bottom = 11.5
grow_horizontal = 0
grow_vertical = 2
text = "100
"
[node name="logo" type="Panel" parent="health_and_ammo_display/armordisplay"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -25.0
offset_right = 25.0
grow_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxTexture_n5sx0")
[node name="magazinedisplay" type="Control" parent="health_and_ammo_display"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -25.0
offset_top = -70.0
offset_right = 35.0
offset_bottom = -45.0
grow_horizontal = 2
grow_vertical = 0
[node name="text" type="Label" parent="health_and_ammo_display/magazinedisplay"]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -11.5
offset_right = 28.0
offset_bottom = 11.5
grow_vertical = 2
text = "100
"
[node name="logo" type="Panel" parent="health_and_ammo_display/magazinedisplay"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -25.0
offset_top = -25.0
grow_horizontal = 0
grow_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxTexture_w337q")
[node name="ammodisplay" type="Control" parent="health_and_ammo_display"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -25.0
offset_top = -35.0
offset_right = 35.0
offset_bottom = -10.0
grow_horizontal = 2
grow_vertical = 0
[node name="text" type="Label" parent="health_and_ammo_display/ammodisplay"]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -11.5
offset_right = 28.0
offset_bottom = 11.5
grow_vertical = 2
text = "100
"
[node name="logo" type="Panel" parent="health_and_ammo_display/ammodisplay"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -25.0
offset_top = -25.0
grow_horizontal = 0
grow_vertical = 0
theme_override_styles/panel = SubResource("StyleBoxTexture_tcxn4")
[node name="Control" type="Control" parent="."]
z_index = -10
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Panel" type="Panel" parent="Control"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -6.0
offset_top = -6.0
offset_right = 6.0
offset_bottom = 6.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme = SubResource("Theme_xwpjm")
theme_override_styles/panel = SubResource("StyleBoxTexture_mkhl7")
[node name="Status" type="Label" parent="."]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
[node name="round_status" type="Control" parent="."]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -20.0
offset_right = 20.0
offset_bottom = 30.0
grow_horizontal = 2
[node name="bg" type="Panel" parent="round_status"]
layout_mode = 0
offset_left = -66.0
offset_right = 106.0
offset_bottom = 66.0
theme_override_styles/panel = SubResource("StyleBoxFlat_pxi8e")
[node name="cs_score_game" type="Label" parent="round_status"]
layout_mode = 0
offset_left = -52.0
offset_top = -2.0
offset_right = -35.0
offset_bottom = 37.0
text = "0"
label_settings = SubResource("LabelSettings_l41k6")
[node name="cs_score_round" type="Label" parent="round_status"]
layout_mode = 0
offset_left = -48.0
offset_top = 39.0
offset_right = -38.0
offset_bottom = 62.0
text = "0"
[node name="os_score_round" type="Label" parent="round_status"]
layout_mode = 0
offset_left = 83.0
offset_top = 39.0
offset_right = 93.0
offset_bottom = 62.0
text = "0"
[node name="os_score_game" type="Label" parent="round_status"]
layout_mode = 0
offset_left = 79.0
offset_top = -2.0
offset_right = 96.0
offset_bottom = 40.0
text = "0"
label_settings = SubResource("LabelSettings_l41k6")
[node name="round_number" type="Label" parent="round_status"]
layout_mode = 0
offset_left = -13.0
offset_top = 5.0
offset_right = 53.0
offset_bottom = 28.0
text = "Round N"
[node name="time" type="Label" parent="round_status"]
layout_mode = 0
offset_left = -5.0
offset_top = 39.0
offset_right = 46.0
offset_bottom = 62.0
text = "mm:ss"
[node name="winner" type="Label" parent="round_status"]
visible = false
layout_mode = 0
offset_left = -104.0
offset_top = 46.0
offset_right = 159.0
offset_bottom = 135.0
text = "CS WON"
label_settings = SubResource("LabelSettings_ky32e")
horizontal_alignment = 1
vertical_alignment = 1
[node name="kill_log" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -156.0
offset_right = 155.0
offset_bottom = 314.0
grow_horizontal = 0
scale = Vector2(0.5, 0.5)

223
scenes/HUD/menu.tscn Normal file
View File

@ -0,0 +1,223 @@
[gd_scene load_steps=6 format=3 uid="uid://cjlgs86ey1u1o"]
[ext_resource type="Script" path="res://scripts/ConnectButton.gd" id="1_nhpm2"]
[ext_resource type="Script" path="res://scripts/TaskPanelButton.gd" id="1_yn6yn"]
[ext_resource type="Script" path="res://scripts/Nickname.gd" id="2_5xejq"]
[ext_resource type="Texture2D" uid="uid://bxmfgknljdw65" path="res://icon.svg" id="4_j2ki1"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cwx4a"]
texture = ExtResource("4_j2ki1")
[node name="Menu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(1, 1.00231)
color = Color(0.0392157, 0.360784, 0.419608, 1)
[node name="ColorRect2" type="ColorRect" parent="ColorRect"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -28.0
offset_bottom = 2.0
grow_horizontal = 2
grow_vertical = 0
color = Color(0.117647, 0.117647, 0.117647, 1)
[node name="buttons" type="Control" parent="ColorRect"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -40.0
offset_right = 40.0
grow_vertical = 0
[node name="Button_quit" type="Button" parent="ColorRect/buttons"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -28.4312
offset_right = 30.0
offset_bottom = 1.56878
grow_vertical = 0
theme_override_font_sizes/font_size = 12
text = "off"
script = ExtResource("1_yn6yn")
[node name="Button_direct" type="Button" parent="ColorRect/buttons"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 30.0
offset_top = -28.4312
offset_right = 63.0
offset_bottom = 1.56878
grow_vertical = 0
theme_override_font_sizes/font_size = 12
text = "web"
script = ExtResource("1_yn6yn")
[node name="Button_settings" type="Button" parent="ColorRect/buttons"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 63.0
offset_top = -28.4312
offset_right = 96.0
offset_bottom = 1.56878
grow_vertical = 0
theme_override_font_sizes/font_size = 12
text = "settings"
script = ExtResource("1_yn6yn")
[node name="DirectMenu" type="Control" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -60.0
offset_top = -40.0
offset_right = 60.0
offset_bottom = 40.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="DirectMenu"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -60.0
offset_top = -40.0
offset_right = 60.0
offset_bottom = 40.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.117647, 0.117647, 0.117647, 1)
[node name="IP" type="TextEdit" parent="DirectMenu"]
layout_mode = 2
offset_left = 3.0
offset_top = 10.0
offset_right = 63.0
offset_bottom = 35.0
pivot_offset = Vector2(1, 0)
theme_override_colors/background_color = Color(0.231373, 0.231373, 0.231373, 1)
theme_override_colors/font_selected_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 9
text = "127.0.0.1"
placeholder_text = "IP Address"
[node name="Port" type="TextEdit" parent="DirectMenu"]
layout_mode = 2
offset_left = 66.0
offset_top = 10.0
offset_right = 116.0
offset_bottom = 35.0
theme_override_colors/background_color = Color(0.231373, 0.231373, 0.231373, 1)
theme_override_font_sizes/font_size = 9
text = "2390"
placeholder_text = "Port
"
[node name="Connect" type="Button" parent="DirectMenu"]
layout_mode = 2
offset_left = 10.0
offset_top = 40.0
offset_right = 110.0
offset_bottom = 71.0
pivot_offset = Vector2(88, 24)
text = "Connect"
script = ExtResource("1_nhpm2")
[node name="SettingsMenu" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -100.0
offset_top = -50.0
offset_right = 100.0
offset_bottom = 50.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect2" type="ColorRect" parent="SettingsMenu"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -100.0
offset_top = -50.0
offset_right = 100.0
offset_bottom = 50.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.117647, 0.117647, 0.117647, 1)
[node name="Nickname" type="TextEdit" parent="SettingsMenu"]
layout_mode = 0
offset_left = 3.0
offset_top = 58.0
offset_right = 153.0
offset_bottom = 98.0
placeholder_text = "Unnamed"
[node name="Label" type="Label" parent="SettingsMenu"]
layout_mode = 0
offset_left = 24.0
offset_top = 17.0
offset_right = 181.0
offset_bottom = 40.0
text = "Set player nickname"
[node name="Set" type="Button" parent="SettingsMenu"]
layout_mode = 0
offset_left = 154.0
offset_top = 57.0
offset_right = 199.0
offset_bottom = 97.0
text = "Set"
script = ExtResource("2_5xejq")
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -50.0
offset_top = -151.0
offset_right = 50.0
offset_bottom = -51.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxTexture_cwx4a")

249
scenes/maps/1v1.tscn Normal file
View File

@ -0,0 +1,249 @@
[gd_scene load_steps=11 format=3 uid="uid://cwo1c5nrje1uj"]
[ext_resource type="Texture2D" uid="uid://c88oa7ckhmvoh" path="res://textures/prototype-textures/Prototype_grey_32x32px.png" id="1_el5t1"]
[ext_resource type="Texture2D" uid="uid://clc6hbxpqmr13" path="res://textures/prototype-textures/Prototype_orange_32x32px.png" id="2_cuvhc"]
[ext_resource type="Material" uid="uid://lh788k850e21" path="res://textures/materials/red.material" id="3_3k8s5"]
[ext_resource type="PackedScene" uid="uid://833q6upr0s1k" path="res://scenes/special/spawnpoint.tscn" id="3_k28aq"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rbwrc"]
albedo_texture = ExtResource("1_el5t1")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xwpjv"]
albedo_texture = ExtResource("2_cuvhc")
metallic_specular = 1.0
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ult2w"]
albedo_texture = ExtResource("2_cuvhc")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_efxfa"]
[sub_resource type="Sky" id="Sky_e5cvk"]
sky_material = SubResource("ProceduralSkyMaterial_efxfa")
[sub_resource type="Environment" id="Environment_n1nic"]
background_mode = 2
sky = SubResource("Sky_e5cvk")
ambient_light_source = 3
ambient_light_color = Color(0.0666667, 0.0235294, 0.129412, 1)
ambient_light_energy = 8.35
reflected_light_source = 2
tonemap_mode = 3
tonemap_exposure = 0.95
tonemap_white = 4.37
[node name="1v1" type="Node3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26.508, 0, 0)
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0, 0)
use_collision = true
[node name="street" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(200, 0, 0, 0, 300, 0, 0, 0, 200, -244.068, 66.1137, -14.1194)
size = Vector3(1.98291, 0.503906, 2.3484)
material = SubResource("StandardMaterial3D_rbwrc")
[node name="street_sub" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.93, 0, 0, 0, 0.99, 0, 0, 0, 0.94, 0.00422084, 0.148959, -0.000665724)
operation = 2
size = Vector3(2.11789, 0.804687, 2.45102)
material = SubResource("StandardMaterial3D_rbwrc")
[node name="box[os]" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.622217, -0.199541, -1.00318)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box2" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.232529, -0.164506, 1.25757)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box3" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.194044, 4.71815)
size = Vector3(1.50629, 1.3953, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box4" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4.14056)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box5" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.971855, -0.164506, 3.93179)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box6" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0472702, 7.8889)
size = Vector3(1.50629, 1.10175, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box7" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]/box6"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.04727, 1.09568)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box8" type="CSGBox3D" parent="CSGCombiner3D/street/box[os]/box6/box7"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.212309, -0.164506, 1.08915)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box[cs]" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(-0.1, 0, 8.74228e-09, 0, 0.1, 0, -8.74228e-09, 0, -0.1, -0.60374, -0.199541, 1.00616)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box2" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.232529, -0.164506, 1.25757)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box3" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.194044, 4.71815)
size = Vector3(1.50629, 1.3953, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box4" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4.14056)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box5" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.971855, -0.164506, 3.93179)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box6" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0472702, 7.8889)
size = Vector3(1.50629, 1.10175, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box7" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]/box6"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.04727, 1.09568)
size = Vector3(1.50629, 1.00721, 1.50778)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box8" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]/box6"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.212309, -0.211776, 2.18483)
size = Vector3(1.04123, 0.678194, 1.08446)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="box9" type="CSGBox3D" parent="CSGCombiner3D/street/box[cs]/box6"]
transform = Transform3D(1, 0, 2.13163e-14, 0, 1, 0, -2.13163e-14, 0, 1, -5.87594, -0.211776, 2.18483)
size = Vector3(1.04123, 0.678194, 1.08446)
material = ExtResource("3_3k8s5")
[node name="house[cs]" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(40, 0, 0, 0, 80, 0, 0, 0, 80, -400.068, 11.6565, -186.564)
size = Vector3(1.98291, 0.503906, 1.4407)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="house_sub" type="CSGBox3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(0.92, 0, 0, 0, 0.9, 0, 0, 0, 0.96, -0.0160205, 0, 0)
operation = 2
size = Vector3(2.10019, 0.503906, 1.4407)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="door_house" type="CSGBox3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(0.503765, 0, 0, 0, 0.134818, 0, 0, 0, 0.0118971, -0.0536485, -0.00606109, 0.696579)
operation = 2
size = Vector3(1, 2.81519, 5)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="roof_porch" type="CSGPolygon3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(-2.02415e-08, 0, 0.397644, 0, 0.318244, 0, -0.463072, 0, -1.73816e-08, 0.992785, 0.246994, 0.666835)
polygon = PackedVector2Array(-1, 0, 1.17256, 0.871638, 1.17423, 0.0159316)
depth = 5.0
material = SubResource("StandardMaterial3D_rbwrc")
[node name="porch" type="CSGPolygon3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(0.277503, 0, 0, 0, 0.04, 0, 0, 0, 0.028, -0.98546, -0.257268, 1.11665)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_xwpjv")
[node name="dais" type="CSGPolygon3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(0.025, 0, 0, 0, 0.625, 0, 0, 0, 0.00625, 0.794181, -0.372653, 1.12114)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_rbwrc")
[node name="dais2" type="CSGPolygon3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(0.025, 0, 0, 0, 0.625, 0, 0, 0, 0.00625, -0.985529, -0.372653, 1.12114)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_rbwrc")
[node name="roof" type="CSGBox3D" parent="CSGCombiner3D/house[cs]"]
transform = Transform3D(-0.5, 0, 4.37114e-08, 0, 0.375, 0, -2.18557e-08, 0, -0.25, -0.00909543, 0.640003, -0.303319)
size = Vector3(3.99767, 2.05802, 3.42455)
material = SubResource("StandardMaterial3D_rbwrc")
[node name="house[os]" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(-40, 0, -3.8147e-06, 0, 80, 0, 1.90735e-06, 0, -80, -85.6572, 11.8334, 157.291)
size = Vector3(1.98291, 0.503906, 1.4407)
material = SubResource("StandardMaterial3D_ult2w")
[node name="house_sub" type="CSGBox3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(0.92, 0, 0, 0, 0.9, 0, 0, 0, 0.96, -0.0160203, 0, 0)
operation = 2
size = Vector3(2.10019, 0.503906, 1.4407)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="door_house" type="CSGBox3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(0.503765, 0, 0, 0, 0.134818, 0, 0, 0, 0.0118971, -0.0536485, -0.00606109, 0.696579)
operation = 2
size = Vector3(1, 2.81519, 5)
material = SubResource("StandardMaterial3D_xwpjv")
[node name="roof_porch" type="CSGPolygon3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(-2.02415e-08, 0, 0.397644, 0, 0.318244, 0, -0.463072, 0, -1.73816e-08, 0.992785, 0.246994, 0.666835)
polygon = PackedVector2Array(-1, 0, 1.17256, 0.871638, 1.17423, 0.0159316)
depth = 5.0
material = SubResource("StandardMaterial3D_rbwrc")
[node name="porch" type="CSGPolygon3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(0.277503, 0, 0, 0, 0.04, 0, 0, 0, 0.028, -0.98546, -0.257268, 1.11665)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_xwpjv")
[node name="pillar1" type="CSGPolygon3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(0.025, 0, 0, 0, 0.625, 0, 0, 0, 0.00625, 0.794181, -0.372653, 1.12114)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_rbwrc")
[node name="pillar2" type="CSGPolygon3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(0.025, 0, 0, 0, 0.625, 0, 0, 0, 0.00625, -0.985529, -0.372653, 1.12114)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
material = SubResource("StandardMaterial3D_rbwrc")
[node name="roof" type="CSGBox3D" parent="CSGCombiner3D/house[os]"]
transform = Transform3D(-0.5, 0, 4.37114e-08, 0, 0.375, 0, -2.18557e-08, 0, -0.25, -0.00909567, 0.638935, -0.303319)
size = Vector3(3.99767, 2.05802, 3.42455)
material = SubResource("StandardMaterial3D_rbwrc")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-4.6386e-08, 1.9128, -0.584111, 5.68374e-08, 0.584111, 1.9128, 2, 2.77639e-08, -6.79067e-08, -44.6165, 124.745, -6.56245e-06)
light_angular_distance = 11.76
shadow_enabled = true
shadow_bias = 0.665
[node name="spawnpoint" parent="." instance=ExtResource("3_k28aq")]
transform = Transform3D(2.31248, 0, 0, 0, 3.73308, 0, 0, 0, 3.56885, -16.2815, -1.31731, 32.7425)
team = 1
[node name="spawnpoint2" parent="." instance=ExtResource("3_k28aq")]
transform = Transform3D(2.31133, 0, 0, 0, 4, 0, 0, 0, 4, -79.9822, -1.05881, -41.2232)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_n1nic")

80
scenes/maps/OffisMi.tscn Normal file
View File

@ -0,0 +1,80 @@
[gd_scene load_steps=6 format=3 uid="uid://18evx7g8m824"]
[ext_resource type="PackedScene" uid="uid://833q6upr0s1k" path="res://scenes/special/spawnpoint.tscn" id="1_cgcr3"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_efxfa"]
[sub_resource type="Sky" id="Sky_e5cvk"]
sky_material = SubResource("ProceduralSkyMaterial_efxfa")
[sub_resource type="Environment" id="Environment_n1nic"]
background_mode = 2
sky = SubResource("Sky_e5cvk")
ambient_light_source = 1
ambient_light_color = Color(0.133333, 0.0666667, 0.231373, 1)
ambient_light_energy = 8.35
tonemap_mode = 3
tonemap_exposure = 0.95
tonemap_white = 4.37
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8g7wu"]
[node name="OffisMi" type="Node3D"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.507999, 0, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_n1nic")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0, 0)
use_collision = true
[node name="street" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(159.419, 0, 0, 0, 5.00683, 0, 0, 0, 185.961, -71.3788, 32.6358, -34.6318)
material_override = SubResource("StandardMaterial3D_8g7wu")
size = Vector3(1.13598, 13, 1.19824)
[node name="street_sub" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.999999, 0, 0, 0, 1, 0, 0, 0, 1, 0.00775909, -0.0569553, 0.00497252)
material_override = SubResource("StandardMaterial3D_8g7wu")
operation = 2
size = Vector3(1.11625, 11.6663, 1.15152)
[node name="indoors" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(100, 0, 0, 0, 100, 0, 0, 0, 100, 118.286, 24.8046, 4.05123)
size = Vector3(1.98291, 0.503906, 1.4407)
[node name="indoors_sub" type="CSGBox3D" parent="CSGCombiner3D/indoors"]
transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, -0.0101299, 0, 0)
operation = 2
size = Vector3(2.0871, 0.503906, 1.4407)
[node name="door_left" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(10, 0, 0, 0, 19.5, 0, 0, 0, 10, 21.5201, 22.7882, -43.9167)
operation = 2
size = Vector3(1, 1.24609, 1.53955)
[node name="door_right" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, 21.0247, 25.3519, 33.9889)
operation = 2
size = Vector3(1, 3.05762, 5)
[node name="dais" type="CSGPolygon3D" parent="CSGCombiner3D"]
transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, -10, 0.587306, 76.1409)
polygon = PackedVector2Array(0, 0, 0, 1, 7, 1, 7, 0)
depth = 14.4
[node name="ramp" type="CSGPolygon3D" parent="CSGCombiner3D"]
transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, -20, 0.559414, -30.6844)
polygon = PackedVector2Array(-1, 0, 1, 1, 1, 0)
depth = 3.72
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-4.37114e-08, 0.422618, -0.906308, 0, 0.906308, 0.422618, 1, 1.84732e-08, -3.9616e-08, -68.4262, 84.9077, -2.99101e-06)
[node name="spawnpoint" parent="." instance=ExtResource("1_cgcr3")]
transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, -16.854, 0.629008, 2.82309)
team = 1
[node name="spawnpoint2" parent="." instance=ExtResource("1_cgcr3")]
transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, 23.9201, 0.425767, -1.07893)

304
scenes/maps/training.tscn Normal file
View File

@ -0,0 +1,304 @@
[gd_scene load_steps=15 format=3 uid="uid://dx2v4x2jey55t"]
[ext_resource type="Texture2D" uid="uid://c88oa7ckhmvoh" path="res://textures/prototype-textures/Prototype_grey_32x32px.png" id="1_87a53"]
[ext_resource type="Material" uid="uid://bm7dpv2ymo0s" path="res://textures/materials/black.material" id="2_acmnt"]
[ext_resource type="Material" uid="uid://c6sa1jlgmjnln" path="res://textures/materials/orange.tres" id="3_1ncrc"]
[ext_resource type="Texture2D" uid="uid://bxmfgknljdw65" path="res://icon.svg" id="4_6thf3"]
[ext_resource type="PackedScene" uid="uid://833q6upr0s1k" path="res://scenes/special/spawnpoint.tscn" id="5_4t8n8"]
[ext_resource type="Material" uid="uid://lh788k850e21" path="res://textures/materials/red.material" id="5_mri33"]
[ext_resource type="Material" path="res://textures/materials/orange.res" id="6_n8h4m"]
[ext_resource type="PackedScene" uid="uid://dgctb724je8cj" path="res://scenes/models/ladder.tscn" id="9_ix4hd"]
[ext_resource type="PackedScene" uid="uid://ut1ssyeu88ui" path="res://scenes/models/target.tscn" id="10_cjpfc"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rbwrc"]
albedo_texture = ExtResource("1_87a53")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lkg5o"]
albedo_texture = ExtResource("4_6thf3")
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_efxfa"]
[sub_resource type="Sky" id="Sky_e5cvk"]
sky_material = SubResource("ProceduralSkyMaterial_efxfa")
[sub_resource type="Environment" id="Environment_n1nic"]
background_mode = 2
sky = SubResource("Sky_e5cvk")
ambient_light_source = 3
ambient_light_color = Color(0.0666667, 0.0235294, 0.129412, 1)
ambient_light_energy = 8.35
reflected_light_source = 2
tonemap_mode = 3
tonemap_exposure = 0.95
tonemap_white = 4.37
[node name="training" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.508, -20.0195, 0)
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 14.2632, 0)
use_collision = true
[node name="street" type="CSGBox3D" parent="CSGCombiner3D"]
transform = Transform3D(100, 0, 0, 0, 150, 0, 0, 0, 100, -244.068, 66.1137, -14.1194)
size = Vector3(1.98291, 0.503906, 2.3484)
material = SubResource("StandardMaterial3D_rbwrc")
[node name="shooting_sub" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(-1.29289e-08, 0, -0.211434, 0, 0.0150877, 0, 0.295778, 0, -9.24206e-09, 0.00463009, -0.189736, -1.16362)
operation = 2
size = Vector3(0.0764232, 7.78497, 1.91521)
material = ExtResource("3_1ncrc")
[node name="street_sub" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.93, 0, 0, 0, 0.99, 0, 0, 0, 0.94, 0.00422084, -0.000894368, -0.000665724)
operation = 2
size = Vector3(2.11789, 0.501953, 2.45102)
material = ExtResource("2_acmnt")
[node name="spawn" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.387675, 0, 0, 0, 0.0226455, 0, 0, 0, 0.275283, 0.00389695, -0.25037, -1.0268)
size = Vector3(1.04541, 0.31958, 0.937866)
material = ExtResource("3_1ncrc")
[node name="parkour" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.10194, 0, 0, 0, 0.0226455, 0, 0, 0, 0.0377425, 0.93736, -0.23922, -0.935865)
size = Vector3(1, 0.89447, 0.90625)
material = ExtResource("3_1ncrc")
[node name="parkour_box1" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 2.28263, 7.40127)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box2" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 2.88176, 12.7006)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box3" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 3.79818, 17.8686)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box4" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 3.79817, 22.0665)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box5" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 5.20021, 27.0735)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box6" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09596, 0, 0, 0, 1.25, 0.00752103, 5.20021, 32.3758)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box7" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09595, 0, 0, 0, 1.25, 0.00752103, 6.73271, 37.7022)
size = Vector3(0.950317, 0.922791, 2.14742)
material = ExtResource("3_1ncrc")
[node name="parkour_box13" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(0.991001, 0, 0, 0, 1.09598, 0, 0, 0, 1.25, 0.0266271, 6.85271, 47.0988)
size = Vector3(0.959534, 0.922791, 2.1595)
material = ExtResource("3_1ncrc")
[node name="parkour_end" type="CSGBox3D" parent="CSGCombiner3D/street/parkour"]
transform = Transform3D(1, 0, 0, 0, 0.999992, 0, 0, 0, 1, -0.347962, 9.17355, 53.0341)
size = Vector3(1.69592, 5.45794, 4.52627)
material = ExtResource("3_1ncrc")
[node name="parkour_sub_end" type="CSGBox3D" parent="CSGCombiner3D/street/parkour/parkour_end"]
transform = Transform3D(0.9, 0, 0, 0, 1.14301, 0, 0, 0, 0.9, 0, 0.0240231, 0)
operation = 2
size = Vector3(1.69592, 4.45982, 4.52627)
material = ExtResource("3_1ncrc")
[node name="parkour_end_door" type="CSGBox3D" parent="CSGCombiner3D/street/parkour/parkour_end"]
transform = Transform3D(0.900002, 0, 0, 0, 1.14301, 0, 0, 0, 0.9, 0.404045, -0.201972, -2.16516)
operation = 2
size = Vector3(0.8032, 4.06438, 0.304638)
material = ExtResource("3_1ncrc")
[node name="parkour_end_box)" type="CSGBox3D" parent="CSGCombiner3D/street/parkour/parkour_end"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.561937, -0.663228, -4.19617e-05)
size = Vector3(0.401611, 3.72974, 4.05717)
material = SubResource("StandardMaterial3D_lkg5o")
[node name="shooting_range" type="CSGBox3D" parent="CSGCombiner3D/street"]
transform = Transform3D(-1.27646e-08, 0, -0.223462, 0, 0.0142314, 0, 0.292019, 0, -9.76781e-09, 0.00526714, -0.188671, -1.58776)
size = Vector3(2.96117, 8.45836, 1.82671)
material = ExtResource("3_1ncrc")
[node name="shooting_sub" type="CSGBox3D" parent="CSGCombiner3D/street/shooting_range"]
transform = Transform3D(1, 0, 0, 0, 1.06017, 0, 0, 0, 0.94, 0.131983, -0.101251, 0)
operation = 2
size = Vector3(2.78656, 7.7854, 1.92123)
material = ExtResource("3_1ncrc")
[node name="fence" type="CSGBox3D" parent="CSGCombiner3D/street/shooting_range"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 7.10543e-15, 0, 1.00244, 1.26456, -3.23811, 0.00521278)
size = Vector3(0.0600586, 1.92407, 1.78809)
material = ExtResource("2_acmnt")
[node name="king_of_the_hill" type="CSGMesh3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.5, 0, 0, 0, 0.9, 0, 0, 0, 0.5, 0.290829, -0.0257916, -0.154597)
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, 0, -0.224284, 0.936103)
radius = 0.1
height = 0.05
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, 0, -0.224284, 0.0361031)
radius = 0.1
height = 0.05
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, -0.9, -0.224284, 0.0361031)
radius = 0.1
height = 0.05
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, -0.9, -0.224284, 0.936103)
radius = 0.1
height = 0.05
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999998, 0, 0, 0, 1, -0.65, -0.200705, 0.736102)
radius = 0.1
height = 0.1
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999997, 0, 0, 0, 1, -0.65, -0.200705, 0.236102)
radius = 0.1
height = 0.1
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999997, 0, 0, 0, 1, -0.2, -0.200705, 0.236102)
radius = 0.1
height = 0.1
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999997, 0, 0, 0, 1, -0.2, -0.200705, 0.736102)
radius = 0.1
height = 0.1
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D9" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999996, 0, 0, 0, 1, -0.415994, -0.174006, 0.486101)
radius = 0.15
height = 0.15
sides = 12
smooth_faces = false
material = ExtResource("5_mri33")
[node name="CSGCylinder3D10" type="CSGCylinder3D" parent="CSGCombiner3D/street/king_of_the_hill"]
transform = Transform3D(1, 0, 0, 0, 0.999996, 0, 0, 0, 1, -0.415994, -0.0773044, 0.486101)
radius = 0.1
height = 0.05
sides = 12
smooth_faces = false
material = ExtResource("6_n8h4m")
[node name="OmniLight3D" type="OmniLight3D" parent="CSGCombiner3D/street/king_of_the_hill/CSGCylinder3D10"]
transform = Transform3D(0.1, 0, 0, 0, 0.0370372, 0, 0, 0, 0.1, 0, 0.0374591, 0)
light_energy = 14.419
omni_range = 30.468
[node name="tower" type="CSGMesh3D" parent="CSGCombiner3D/street"]
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
[node name="tower_box" type="CSGBox3D" parent="CSGCombiner3D/street/tower"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.09447, -0.0654277, -1.31192)
size = Vector3(0.25, 0.5, 0.25)
material = ExtResource("3_1ncrc")
[node name="tower_sub" type="CSGBox3D" parent="CSGCombiner3D/street/tower"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.09447, -0.0654277, -1.31192)
operation = 2
size = Vector3(0.15, 0.49, 0.15)
material = ExtResource("3_1ncrc")
[node name="tower_door" type="CSGBox3D" parent="CSGCombiner3D/street/tower"]
transform = Transform3D(1, 0, 0, 0, 0.804594, 0, 0, 0, 0.815685, -1.06183, -0.243172, -1.31417)
operation = 2
size = Vector3(0.187427, 0.167599, 0.17074)
material = ExtResource("3_1ncrc")
[node name="tower_floor_sub" type="CSGBox3D" parent="CSGCombiner3D/street/tower"]
transform = Transform3D(1, 0, 0, 0, 0.999999, 0, 0, 0, 1, -1.09408, 0.117174, -1.31182)
operation = 2
size = Vector3(0.26, 0.15, 0.253418)
material = ExtResource("3_1ncrc")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.00940726, 0.999898, -0.0107741, 0.0036501, 0.0107402, 0.999936, 0.999949, -0.00944598, -0.00354869, -44.6165, 55.8676, -6.56245e-06)
light_angular_distance = 11.76
shadow_enabled = true
shadow_bias = 0.665
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_n1nic")
[node name="spawnpoint" parent="." instance=ExtResource("5_4t8n8")]
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -48.5215, 20.4632, -22.9326)
team = 1
[node name="spawnpoint2" parent="." instance=ExtResource("5_4t8n8")]
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -48.5284, 20.414, -22.8886)
[node name="target" parent="." instance=ExtResource("10_cjpfc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51.6507, 20.0206, -41.6927)
[node name="target2" parent="." instance=ExtResource("10_cjpfc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.8073, 20.0206, -40.9023)
[node name="target3" parent="." instance=ExtResource("10_cjpfc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -45.801, 20.0206, -41.3646)
[node name="ladder" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -67.5251, 20.0388, -23.7606)
[node name="ladder2" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -67.5251, 21.3906, -23.7612)
[node name="ladder3" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -67.5251, 22.7609, -23.7643)
[node name="ladder4" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -67.5251, 24.0983, -23.7605)
[node name="ladder5" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(2.98023e-08, 0, 1, 0, 1, 0, -1, 0, 2.98023e-08, -67.525, 25.45, -23.761)
[node name="ladder6" parent="." instance=ExtResource("9_ix4hd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -67.525, 26.817, -23.762)

View File

@ -1,39 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://cjlgs86ey1u1o"]
[ext_resource type="Script" path="res://scripts/ConnectButton.gd" id="1_oqnod"]
[node name="Menu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Connect" type="Button" parent="."]
layout_mode = 0
offset_left = 24.0
offset_top = 584.0
offset_right = 196.0
offset_bottom = 634.0
pivot_offset = Vector2(88, 24)
text = "Connect"
script = ExtResource("1_oqnod")
[node name="IP" type="TextEdit" parent="."]
layout_mode = 0
offset_left = 25.0
offset_top = 496.0
offset_right = 194.0
offset_bottom = 535.0
text = "127.0.0.1"
placeholder_text = "IP Address"
[node name="Port" type="TextEdit" parent="."]
layout_mode = 0
offset_left = 24.0
offset_top = 539.0
offset_right = 195.0
offset_bottom = 576.0
text = "2390"
placeholder_text = "Port"

13
scenes/models/ak_47.tscn Normal file
View File

@ -0,0 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://caos4gg5cd6f6"]
[ext_resource type="PackedScene" uid="uid://dndsa6rm6hovq" path="res://scenes/models/automatto.dae" id="1_kapkd"]
[node name="ak-47" type="Node3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, -0.570068, 0, 0)
[node name="automatto" parent="." instance=ExtResource("1_kapkd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.18626, -1.25157, 0)
[node name="raycast" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.92407, 0.951779, 0)
target_position = Vector3(-1, 0, 0)

View File

@ -0,0 +1,15 @@
[gd_scene load_steps=4 format=3 uid="uid://cm4as5vv2k2di"]
[ext_resource type="Script" path="res://scripts/BulletTraces.gd" id="1_trgm5"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g4lay"]
albedo_color = Color(1, 0, 1, 1)
emission = Color(1, 0, 0.741176, 1)
emission_energy_multiplier = 9.21
[sub_resource type="ImmediateMesh" id="ImmediateMesh_djmsg"]
[node name="MeshInstance3D" type="MeshInstance3D"]
material_override = SubResource("StandardMaterial3D_g4lay")
mesh = SubResource("ImmediateMesh_djmsg")
script = ExtResource("1_trgm5")

View File

@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://dvrv2bfmotivm"]
[ext_resource type="Texture2D" uid="uid://bmuo2tbe3r8ih" path="res://textures/logo/ammo.svg" id="1_p3k0o"]
[ext_resource type="Script" path="res://scripts/KillLogEntry.gd" id="1_tki6n"]
[node name="kill_log_entry" type="HBoxContainer"]
offset_right = 311.0
offset_bottom = 102.0
scale = Vector2(0.275, 0.275)
script = ExtResource("1_tki6n")
[node name="killer" type="Label" parent="."]
layout_mode = 2
text = "Unnamed"
[node name="logo" type="TextureRect" parent="."]
layout_mode = 2
texture = ExtResource("1_p3k0o")
[node name="victim" type="Label" parent="."]
layout_mode = 2
text = "Unnamed"

5
scenes/models/knife.tscn Normal file
View File

@ -0,0 +1,5 @@
[gd_scene format=3 uid="uid://dp0eiikisy5e8"]
[node name="Knife" type="Node3D"]
[node name="knife" type="Node3D" parent="."]

24
scenes/models/ladder.tscn Normal file
View File

@ -0,0 +1,24 @@
[gd_scene load_steps=4 format=3 uid="uid://dgctb724je8cj"]
[ext_resource type="ArrayMesh" uid="uid://bal0u14qxmjfb" path="res://models/ladder.obj" id="1_57ly1"]
[sub_resource type="BoxShape3D" id="BoxShape3D_10q5c"]
size = Vector3(0.894531, 1.39441, 0.121826)
[sub_resource type="BoxShape3D" id="BoxShape3D_8igfg"]
size = Vector3(0.890503, 1.36963, 1)
[node name="ladder" type="StaticBody3D"]
[node name="shape" type="MeshInstance3D" parent="."]
mesh = ExtResource("1_57ly1")
[node name="collider" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000976562, 0.667726, 0.00769043)
shape = SubResource("BoxShape3D_10q5c")
[node name="active_area" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0043335, 0.679118, 0.57602)
visible = false
shape = SubResource("BoxShape3D_8igfg")
disabled = true

12
scenes/models/pistol.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cnu1vf8k5i3tv"]
[ext_resource type="PackedScene" uid="uid://hf47u08p80fo" path="res://models/pistoletto.dae" id="1_hdcb6"]
[node name="pistol" type="Node3D"]
[node name="pistoletto" parent="." instance=ExtResource("1_hdcb6")]
transform = Transform3D(0.21, 0, 0, 0, 0.21, 0, 0, 0, 0.21, 0, 0, 0)
[node name="raycast" type="RayCast3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.461124, 0.0946267, 2.01564e-08)
target_position = Vector3(-1, 0, 0)

128
scenes/models/player.tscn Normal file
View File

@ -0,0 +1,128 @@
[gd_scene load_steps=17 format=3 uid="uid://b2jhgtduapovl"]
[ext_resource type="Script" path="res://scripts/Player.gd" id="1_o6o4b"]
[ext_resource type="ArrayMesh" uid="uid://xh7mm0ldn6yw" path="res://models/knife.obj" id="2_7hcoq"]
[ext_resource type="PackedScene" uid="uid://cnu1vf8k5i3tv" path="res://scenes/models/pistol.tscn" id="2_nxbij"]
[ext_resource type="Texture2D" uid="uid://cbf6w7ativli8" path="res://textures/knife_textures.png" id="2_y1ydh"]
[ext_resource type="PackedScene" uid="uid://caos4gg5cd6f6" path="res://scenes/models/ak_47.tscn" id="3_r56e3"]
[ext_resource type="Material" path="res://textures/materials/orange.res" id="6_md2fv"]
[ext_resource type="Material" uid="uid://bfvkovv6sevfw" path="res://textures/materials/black90%.res" id="7_2k5kn"]
[ext_resource type="ArrayMesh" uid="uid://dpdsmpuycacsx" path="res://models/playerv2.obj" id="7_jg2rj"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jqoeg"]
albedo_texture = ExtResource("2_y1ydh")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0suq1"]
[sub_resource type="BoxShape3D" id="BoxShape3D_04dhp"]
size = Vector3(0.379028, 0.376923, 0.371674)
[sub_resource type="BoxShape3D" id="BoxShape3D_xes75"]
size = Vector3(0.44751, 0.866943, 0.152832)
[sub_resource type="BoxShape3D" id="BoxShape3D_61s8a"]
size = Vector3(0.18811, 1.06403, 0.191895)
[sub_resource type="BoxShape3D" id="BoxShape3D_slu1u"]
size = Vector3(0.191162, 1.05872, 0.195557)
[sub_resource type="BoxShape3D" id="BoxShape3D_mtx2c"]
size = Vector3(0.177368, 1.06198, 0.190918)
[sub_resource type="BoxShape3D" id="BoxShape3D_shrr1"]
size = Vector3(0.180664, 1.06628, 0.180664)
[node name="player" type="CharacterBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.15595, 0)
script = ExtResource("1_o6o4b")
[node name="Head" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.94573, 0)
[node name="Camera" type="Camera3D" parent="Head"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0834589, 0)
fov = 90.0
[node name="viewRaycast" type="RayCast3D" parent="Head/Camera"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0123241, -0.315944)
target_position = Vector3(0, 0, -100)
[node name="Hand" type="Node3D" parent="Head/Camera"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.72454, -0.463491, -0.808041)
[node name="knife" type="MeshInstance3D" parent="Head/Camera/Hand"]
transform = Transform3D(-0.139396, -0.0769224, -0.0158664, -0.077265, 0.140107, -0.000437333, 0.014104, 0.00728098, -0.159211, -0.158471, 0.141593, 0.229943)
material_override = SubResource("StandardMaterial3D_jqoeg")
mesh = ExtResource("2_7hcoq")
surface_material_override/0 = SubResource("StandardMaterial3D_0suq1")
[node name="raycast" type="RayCast3D" parent="Head/Camera/Hand/knife"]
transform = Transform3D(-0.499475, -0.84915, -0.171667, 0.861274, -0.508089, 0.00733016, -0.0934463, -0.144191, 0.985128, -0.04988, 2.15182, 0.02285)
[node name="pistol" parent="Head/Camera/Hand" instance=ExtResource("2_nxbij")]
transform = Transform3D(1, 0, -3.55271e-15, 0, 1, 0, 3.55271e-15, 0, 1, 2.38419e-07, -0.0344509, 0.118615)
visible = false
[node name="ak-47" parent="Head/Camera/Hand" instance=ExtResource("3_r56e3")]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, -0.30437, -0.235472, 0.183832)
visible = false
[node name="Nickname" type="Label3D" parent="Head"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.541, 0)
billboard = 1
text = "Unnamed"
[node name="Playerv2" type="MeshInstance3D" parent="Head"]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -2.04673, 0)
mesh = ExtResource("7_jg2rj")
skeleton = NodePath("../../..")
surface_material_override/0 = ExtResource("6_md2fv")
surface_material_override/1 = ExtResource("6_md2fv")
surface_material_override/2 = ExtResource("7_2k5kn")
surface_material_override/3 = ExtResource("7_2k5kn")
surface_material_override/4 = ExtResource("6_md2fv")
surface_material_override/5 = ExtResource("6_md2fv")
surface_material_override/6 = ExtResource("7_2k5kn")
surface_material_override/7 = ExtResource("7_2k5kn")
surface_material_override/8 = ExtResource("7_2k5kn")
surface_material_override/9 = ExtResource("6_md2fv")
surface_material_override/10 = ExtResource("6_md2fv")
surface_material_override/11 = ExtResource("6_md2fv")
surface_material_override/12 = ExtResource("7_2k5kn")
surface_material_override/13 = ExtResource("6_md2fv")
surface_material_override/14 = ExtResource("7_2k5kn")
surface_material_override/15 = ExtResource("6_md2fv")
surface_material_override/16 = ExtResource("7_2k5kn")
surface_material_override/17 = ExtResource("6_md2fv")
surface_material_override/18 = ExtResource("6_md2fv")
surface_material_override/19 = ExtResource("7_2k5kn")
surface_material_override/20 = ExtResource("7_2k5kn")
surface_material_override/21 = ExtResource("7_2k5kn")
surface_material_override/22 = ExtResource("6_md2fv")
surface_material_override/23 = ExtResource("6_md2fv")
surface_material_override/24 = ExtResource("6_md2fv")
surface_material_override/25 = ExtResource("7_2k5kn")
[node name="collisionhead" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000598475, 0.993303, 0.0291694)
shape = SubResource("BoxShape3D_04dhp")
[node name="collisionbody" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.003387, 0.364707, 0.0712848)
shape = SubResource("BoxShape3D_xes75")
[node name="collisionlefthand" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.352796, 0.209396, 0.0609986)
shape = SubResource("BoxShape3D_61s8a")
[node name="collisionrighthand" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.340745, 0.207778, 0.0591591)
shape = SubResource("BoxShape3D_slu1u")
[node name="collisionrightleg" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.125481, -0.602212, 0.0608763)
shape = SubResource("BoxShape3D_mtx2c")
[node name="collisionleftleg" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.130327, -0.599574, 0.0610861)
shape = SubResource("BoxShape3D_shrr1")

21
scenes/models/point.tscn Normal file
View File

@ -0,0 +1,21 @@
[gd_scene load_steps=5 format=3 uid="uid://2xfxpyp56wik"]
[ext_resource type="Script" path="res://scripts/point.gd" id="1_cv6ca"]
[sub_resource type="SphereShape3D" id="SphereShape3D_4jsrs"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0d60f"]
albedo_color = Color(1, 0, 0, 1)
[sub_resource type="SphereMesh" id="SphereMesh_bwsgk"]
[node name="point" type="StaticBody3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
script = ExtResource("1_cv6ca")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_4jsrs")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
material_override = SubResource("StandardMaterial3D_0d60f")
mesh = SubResource("SphereMesh_bwsgk")

View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://bf6uev4mtg2ls"]
[ext_resource type="Script" path="res://scripts/SpectatorControls.gd" id="1_uqbjn"]
[node name="head" type="Node3D"]
script = ExtResource("1_uqbjn")
[node name="Camera" type="Camera3D" parent="."]

24
scenes/models/target.tscn Normal file
View File

@ -0,0 +1,24 @@
[gd_scene load_steps=5 format=3 uid="uid://ut1ssyeu88ui"]
[ext_resource type="ArrayMesh" uid="uid://cqomvoochvl6s" path="res://models/target.obj" id="1_5q4vg"]
[ext_resource type="Script" path="res://scripts/target.gd" id="1_hd3f1"]
[sub_resource type="BoxShape3D" id="BoxShape3D_dliev"]
size = Vector3(0.624695, 0.569092, 0.129181)
[sub_resource type="BoxShape3D" id="BoxShape3D_7mpxi"]
size = Vector3(0.877014, 1.24915, 0.123413)
[node name="target" type="StaticBody3D"]
script = ExtResource("1_hd3f1")
[node name="Mesh" type="MeshInstance3D" parent="."]
mesh = ExtResource("1_5q4vg")
[node name="head" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00143433, 1.52753, 0.000686646)
shape = SubResource("BoxShape3D_dliev")
[node name="body" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.15527e-05, 0.621679, -0.000305176)
shape = SubResource("BoxShape3D_7mpxi")

View File

@ -0,0 +1,17 @@
[gd_scene load_steps=4 format=3 uid="uid://833q6upr0s1k"]
[ext_resource type="Script" path="res://scripts/team_spawnpoint.gd" id="1_xuukx"]
[sub_resource type="PlaneMesh" id="PlaneMesh_ic53j"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lytgi"]
albedo_color = Color(1, 1, 0, 1)
[node name="spawnpoint" type="Node3D"]
transform = Transform3D(4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0)
script = ExtResource("1_xuukx")
[node name="area" type="CSGMesh3D" parent="."]
visible = false
mesh = SubResource("PlaneMesh_ic53j")
material = SubResource("StandardMaterial3D_lytgi")

View File

@ -1,90 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://d0tdlmmo1texv"]
[ext_resource type="Texture2D" uid="uid://cs0ysba50acxp" path="res://textures/texture_04_2.png" id="1_rei8g"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_68arr"]
albedo_texture = ExtResource("1_rei8g")
[node name="test_map" type="Node3D"]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.83748, 0.546467, 0, -0.546467, 0.83748, 0, 94.6015, 141.501)
[node name="terrain" type="Node3D" parent="."]
[node name="CSGBox3D" type="CSGBox3D" parent="terrain"]
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D2" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D3" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D4" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D5" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D6" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D7" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D8" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D9" type="CSGBox3D" parent="terrain"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D10" type="CSGBox3D" parent="terrain"]
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 15, 5, -10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D11" type="CSGBox3D" parent="terrain"]
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 15, 5, 0)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D12" type="CSGBox3D" parent="terrain"]
transform = Transform3D(8.9407e-08, 1, 0, -1, 8.9407e-08, 0, 0, 0, 1, 15, 5, 10)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.1, 10)
[node name="CSGBox3D13" type="CSGBox3D" parent="terrain"]
transform = Transform3D(-1, 1.78814e-07, 0, -1.26441e-07, -0.707107, -0.707107, -1.26441e-07, -0.707107, 0.707107, 10, 14.3726, -29.4839)
material_override = SubResource("StandardMaterial3D_68arr")
use_collision = true
size = Vector3(10, 0.09425, 57.5945)

1
scripts/Anticheat.gd Normal file
View File

@ -0,0 +1 @@
extends Node

11
scripts/BulletTraces.gd Normal file
View File

@ -0,0 +1,11 @@
extends MeshInstance3D
func init(start, end):
var draw_mesh = ImmediateMesh.new()
mesh = draw_mesh
draw_mesh.surface_begin(Mesh.PRIMITIVE_LINES, material_override)
draw_mesh.surface_add_vertex(to_local(start))
draw_mesh.surface_add_vertex(to_local(end))
draw_mesh.surface_end()
await get_tree().create_timer(1).timeout
free()

View File

@ -5,7 +5,7 @@ extends Button
@onready var port_input: TextEdit = $"../Port"
func _ready():
button.text = "Click me"
button.text = "Connect"
button.pressed.connect(self._button_pressed)
func _button_pressed():

View File

@ -1,11 +1,78 @@
extends Node
var Weapons = {
"knife" = {
"number": 0,
"magazine": -1,
"ammo": -1
},
"pistol" = {
"number": 1,
"magazine": 50,
"ammo": 200
},
"ak-47" = {
"number": 2,
"magazine": 30,
"ammo": 100
}
}
var properties_example = {
HP = 100,
AP = 100,
HACK = 1.0,
class_type = 0,
is_playable = false,
internal_id = 0,
nickname = "Unnamed",
ready = false,
current_weapon = Weapons["knife"].duplicate(),
weapons = Weapons.duplicate(),
last_shot = 0,
reloading = false,
position = Vector3(0, 5, 0)
}
var client_settings
var server_settings
func apply_weapon_settings(s: Dictionary): #game/weapons/weapon
for weapon in s.values():
Weapons[s.find_key(weapon)] = weapon
print("New weapons: " + str(Weapons))
func _ready():
var client_settings_file = FileAccess.open("res://settings/client-settings.json", FileAccess.READ)
client_settings = JSON.parse_string(client_settings_file.get_as_text())
var server_settings_file = FileAccess.open("res://settings/server-settings.json", FileAccess.READ)
server_settings = JSON.parse_string(server_settings_file.get_as_text())
read_settings()
func read_settings():
var user_dir = DirAccess.open(".")
if(!user_dir.dir_exists("./settings")):
user_dir.make_dir("settings")
var client_settings_file
if(!FileAccess.file_exists("./settings/client-settings.json")):
print("Client-settings doesn't exist, creating one")
var example = FileAccess.open("res://settings/client-settings.json", FileAccess.READ)
client_settings_file = FileAccess.open("./settings/client-settings.json", FileAccess.WRITE_READ)
client_settings_file.store_string(example.get_as_text())
else:
client_settings_file = FileAccess.open("./settings/client-settings.json", FileAccess.READ)
client_settings = JSON.parse_string(client_settings_file.get_as_text())
var server_settings_file
if(!FileAccess.file_exists("./settings/server-settings.json")):
print("Server-settings doesn't exist, creating one")
var example = FileAccess.open("res://settings/server-settings.json", FileAccess.READ)
server_settings_file = FileAccess.open("./settings/server-settings.json", FileAccess.WRITE_READ)
server_settings_file.store_string(example.get_as_text())
else:
server_settings_file = FileAccess.open("./settings/server-settings.json", FileAccess.READ)
server_settings = JSON.parse_string(server_settings_file.get_as_text())
apply_weapon_settings(server_settings["game"]["weapons"])
func save_client_settings():
var client_settings_file = FileAccess.open("./settings/client-settings.json", FileAccess.WRITE)
client_settings_file.store_string(str(client_settings))

12
scripts/KillLogEntry.gd Normal file
View File

@ -0,0 +1,12 @@
extends HBoxContainer
func _ready():
await get_tree().create_timer(5).timeout
for alpha in range(100, -1, -1):
print(str(float(alpha) / 100.))
self.modulate = Color(1, 1, 1, float(alpha) / 100.)
await get_tree().create_timer(0.01).timeout
free()

View File

@ -1,53 +1,18 @@
extends Node
enum Class_type {
Spectator = 0,
Astra = 1,
BlackArch = 2,
Kali = 3,
Debian = 4,
Arch = 5,
Windows11 = -1,
WindowsServer = -2,
MacOS = -3,
WindowsXP = -4,
Windows10 = -5
}
var Distro = {
HP = 100,
AP = 100,
HACK = 1.0,
class_type = 0,
}
var Player = {
distro = Distro.duplicate(),
speed = 1.0,
position = Vector3(0, 10, 0),
velocity = Vector3.ZERO,
internal_id = 0,
}
const player_class := preload("res://scripts/PlayerClass.gd")
var player_model = preload("res://models/player.tscn")
var player_script = load("res://scripts/Player.gd")
var player_model = load("res://scenes/models/player.tscn")
var peer = ENetMultiplayerPeer.new()
var settings
var clients = {}
var clients:Dictionary = {}
var last_client_id = 1
func _ready():
if "--server" in OS.get_cmdline_args():
await get_tree().create_timer(0.01).timeout #костыль пиздец но мне похую как-то
get_tree().change_scene_to_file("res://scenes/test_map.tscn")
StartServer()
#######################################SERVER####################################
func StartServer():
settings = GameData.server_settings
var port = int(settings["port"])
var maxclients = int(settings["maxclients"])
var port = int(GameData.server_settings["port"])
var maxclients = int(GameData.server_settings["maxclients"])
if (peer.create_server(port, maxclients) != OK):
print("Couldn't create server. Check if another proccess binds port " + str(port))
print("Couldn't create server. Check if another proccess binds port %s" % str(port))
return
multiplayer.multiplayer_peer = peer
@ -56,68 +21,297 @@ func StartServer():
peer.connect("peer_connected", _Peer_Connected)
peer.connect("peer_disconnected", _Peer_Disconnected)
func send_everyone_except(client_id, args):
for current_client_id in clients.keys():
if (str(current_client_id) == str(client_id)): continue
if (args[1] == null): args[0].rpc_id(int(current_client_id))
elif (args[2] == null): args[0].rpc_id(int(current_client_id), args[1])
else: args[0].rpc_id(int(current_client_id), args[1], args[2])
func _Peer_Connected(client_id):
print("User " + str(client_id) + " has conected")
var internal_id = last_client_id + 1
last_client_id += 1
clients[client_id] = GameData.properties_example.duplicate()
var client = clients[client_id]
client["position"] = Vector3(0, 10, 0)
client["internal_id"] = internal_id
client["is_playable"] = false
client["current_weapon"] = GameData.server_settings["game"]["weapons"]["knife"].duplicate()
var puppet = player_model.instantiate()
var internal_id = clients.size() + 2
puppet.find_child("CharacterBody3D").set_is_playable(false)
puppet.find_child("CharacterBody3D").set_internal_id(internal_id)
puppet.name = "player" + str(internal_id)
clients[str(client_id)] = Player.duplicate()
clients[str(client_id)]["internal_id"] = internal_id
add_child(puppet)
for current_client_id in clients.keys():
if (int(current_client_id) == int(client_id)): continue
rpc_id(int(current_client_id), "spawn_puppet", internal_id)
puppet.set_properties(clients[client_id])
ServerUtils.server_map.add_child(puppet)
@rpc("any_peer", "reliable", "call_remote")
func client_ready(client_id):
var client = clients[client_id]
var internal_id = client["internal_id"]
NetUtils.send_everyone_except(client_id, [Networking.spawn_puppet, clients[client_id]])
client["ready"] = true
var client_playermodel = ServerUtils.find_playermodel_by_internal_id(internal_id)
if (client["class_type"] == 0):
var class_spawnpoint = ServerUtils.find_class_type_by_number(client["class_type"])["spawnpoint"]
client["position"] = Vector3(class_spawnpoint[0], class_spawnpoint[1], class_spawnpoint[2])
else:
var index = abs(client["class_type"])
if (client["class_type"] > 0):
client["position"] = ServerUtils.team_OS["spawnpoints"].pick_random().get_class_spawnpoint(index)
elif (client["class_type"] < 0):
client["position"] = ServerUtils.team_CS["spawnpoints"].pick_random().get_class_spawnpoint(index)
client_playermodel.set_properties(client)
client_playermodel.teleport.rpc_id(client_id, Vector3(client["position"].x, client["position"].y, client["position"].z))
func _Peer_Disconnected(client_id):
clients.erase(str(client_id))
print("User " + str(client_id) + " has disconnected")
var client = clients[client_id]
var internal_id = client["internal_id"]
if (client["class_type"] < 0):
ServerUtils.team_CS["members"].erase(client)
elif (client["class_type"] > 0):
ServerUtils.team_OS["members"].erase(client)
rpc("despawn_puppet", internal_id)
var puppet = ServerUtils.server_map.get_node("player" + str(internal_id))
ServerUtils.server_map.remove_child(puppet)
clients.erase(client_id)
if (clients.size() == 0):
ServerUtils.new_game(null, null) #Not changing anything
@rpc ("any_peer", "reliable", "call_remote")
func get_character_properties(client_id):
if !clients.has(str(client_id)):
if !clients.has(client_id):
return
var to_send = clients[str(client_id)]
rpc_id(client_id, "set_character_properties", to_send)
@rpc("any_peer", "call_remote")
func move_client(client_id, position):
#if(settings["enableAntiCheat"]): if(position > 10): return # нормально допилить надо
clients[str(client_id)]["position"] = position
var client = clients[str(client_id)]
send_everyone_except(client_id, [get_node("player" + str(client["internal_id"])).find_child("CharacterBody3D").move_puppet, position, client["internal_id"]])
var to_send = clients[client_id]
rpc_id(client_id, "set_character_properties", to_send.duplicate())
@rpc("any_peer", "call_remote", "unreliable")
func sync_client(client_id, position, rotation):
var client = clients[client_id]
var internal_id = str(client["internal_id"])
var client_playermodel = ServerUtils.find_playermodel_by_internal_id(internal_id)
client_playermodel.position = position
#client_playermodel.find_child("Head").rotation.y = rotation.y
client_playermodel.rotation.y = rotation.y
client_playermodel.find_child("Head").find_child("Camera").rotation.x = rotation.x
client["position"] = position
client["rotation"] = rotation
#NetUtils.send_everyone_except(client_id, ["sync_puppet", internal_id, position, rotation])
NetUtils.send_everyone_except(client_id, [client_playermodel.sync_puppet, internal_id, position, rotation])
@rpc ("any_peer", "call_remote", "reliable")
func get_client_list(client_id):
#var playermodel = ServerUtils.find_playermodel_by_internal_id(clients[client_id]["internal_id"])
for current_client_id in clients.keys():
if (current_client_id == str(client_id)): continue
rpc_id(client_id, "spawn_puppet", clients[str(current_client_id)]["internal_id"])
if (current_client_id == client_id): continue
rpc_id(client_id, "spawn_puppet", clients[current_client_id])
#rpc_id(client_id, playermodel.spawn_puppet, clients[current_client_id])
@rpc ("any_peer", "call_remote", "reliable")
func get_server_settings(client_id):
var client = clients[client_id]
var internal_id = str(client["internal_id"])
var client_playermodel = ServerUtils.find_playermodel_by_internal_id(internal_id)
client_playermodel.set_game_settings.rpc_id(client_id, GameData.server_settings["game"])
@rpc ("any_peer", "call_remote", "reliable")
func set_nickname(client_id, nickname):
clients[client_id]["nickname"] = nickname
@rpc("any_peer", "call_remote", "reliable")
func shot(client_id):
var client = clients[client_id]
var internal_id = client["internal_id"]
var current_weapon = GameData.server_settings["game"]["weapons"].find_key(ServerUtils.find_weapon_by_number(client["current_weapon"]["number"]))
var current_weapon_settings = GameData.server_settings["game"]["weapons"][current_weapon]
var client_playermodel = ServerUtils.find_playermodel_by_internal_id(internal_id)
var raycast:RayCast3D = client_playermodel.get_node("Head/Camera/viewRaycast")
var weapon_raycast:RayCast3D = client_playermodel.get_node("Head/Camera/Hand/" + str(current_weapon) + "/raycast")
print("currect weapon: " + current_weapon)
raycast.target_position.z = -current_weapon_settings["range"]
raycast.force_raycast_update()
raycast.force_update_transform()
var target_point = raycast.get_collision_point()
weapon_raycast.target_position = weapon_raycast.to_local(target_point) * 1.1
weapon_raycast.force_raycast_update()
weapon_raycast.force_update_transform()
weapon_raycast.rotation.y = atan((weapon_raycast.position.x - client_playermodel.position.x) / ((-current_weapon_settings["range"]) - (abs(weapon_raycast.position.z - client_playermodel.position.z))))
weapon_raycast.target_position.y += current_weapon_settings["spreading"] * randf() * sin(randf() * 2 * PI)
weapon_raycast.target_position.z += current_weapon_settings["spreading"] * randf() * cos(randf() * 2 * PI)
weapon_raycast.force_raycast_update()
weapon_raycast.force_update_transform()
var target = weapon_raycast.get_collider()
var time_since_last_shot = (Time.get_ticks_msec() - client["last_shot"]) / 1000.
if (time_since_last_shot < current_weapon_settings["fireRate"] and client["last_shot"] > 0):
return
if (client["current_weapon"]["magazine"] == 0):
return
client["last_shot"] = Time.get_ticks_msec()
if (target is CharacterBody3D):
var target_internal_id = int(target.name.get_slice("player", 1))
var target_client
for checking_client_id in clients.keys():
if (clients[checking_client_id]["internal_id"] == target_internal_id):
target_client = clients[checking_client_id]
var target_client_id = int(clients.find_key(target_client))
var shape_num = weapon_raycast.get_collider_shape()
var shapes = ["head", "body", "hand", "leg"]
var shape = ServerUtils.choose_collision_shape(target, shape_num)
var damage
for s in shapes:
if s in shape.name:
damage = current_weapon_settings["damage"][s]
break
var target_client_team = 1 if target_client["class_type"] > 0 else -1
var client_team = 1 if client["class_type"] > 0 else -1
if (target_client_team == client_team):
if (GameData.server_settings["game"]["gamemodes"][str(ServerUtils.gamemode)]["friendlyfire"]):
target_client["HP"] -= damage
else:
target_client["HP"] -= damage
if (target_client["HP"] <= 0): ###########killed
var index = abs(client["class_type"])
var respawn = Vector3(0, 10 ,0)
if (target_client_team == 1):
ServerUtils.team_CS["round_score"] += 1
respawn = ServerUtils.team_OS["spawnpoints"].pick_random().get_class_spawnpoint(index)
elif (target_client_team == -1):
ServerUtils.team_OS["round_score"] += 1
respawn = ServerUtils.team_CS["spawnpoints"].pick_random().get_class_spawnpoint(index)
print("Score(OS-CS): %s - %s" % [str(ServerUtils.team_OS["round_score"]), str(ServerUtils.team_CS["round_score"])])
target_client["position"] = respawn
target_client["HP"] = 100
target.teleport.rpc_id(target_client_id, target_client["position"])
NetUtils.send_everyone(["kill_notification", client["nickname"], target_client["nickname"]])
ServerUtils.check_gamemode_end_conditions()
target.set_hp.rpc_id(target_client_id, target_client["HP"])
elif (target is StaticBody3D):
#var shapes = ["head", "body"]
#var shape_num = weapon_raycast.get_collider_shape()
#var shape = ServerUtils.choose_collision_shape(target, shape_num)
target.shot.rpc_id(client_id, weapon_raycast.get_collision_point())
NetUtils.send_everyone_except(client_id, [target.shot, weapon_raycast.get_collision_point()])
@rpc("reliable", "call_remote", "any_peer")
func change_weapon(client_id, new_weapon_number):
var client = clients[client_id]
client["reloading"] = false
var internal_id = str(client["internal_id"])
client["current_weapon"] = client["weapons"][ServerUtils.find_weapon_name_by_number(new_weapon_number)]
var client_playermodel = ServerUtils.find_playermodel_by_internal_id(internal_id)
client_playermodel.change_weapon(new_weapon_number)
client_playermodel.change_weapon.rpc_id(client_id, new_weapon_number)
NetUtils.send_everyone_except(client_id, [client_playermodel.change_weapon_puppet, internal_id, new_weapon_number])
@rpc("any_peer", "call_remote", "reliable")
func client_reloading(client_id):
var client = clients[client_id]
var weapons_list = GameData.server_settings["game"]["weapons"]
var current_client_weapon = client["current_weapon"]
var current_weapon_example = weapons_list.find_key(ServerUtils.find_weapon_by_number(current_client_weapon["number"]))
var current_weapon_settings = weapons_list[current_weapon_example]
var reload_time = current_weapon_settings["reload"]
client["reloading"] = true
ServerUtils.reloading_complete(client_id, reload_time)
@rpc("reliable", "any_peer", "call_remote")
func get_map(client_id):
rpc_id(client_id, "receive_map", ServerUtils.map_path)
@rpc("reliable", "any_peer", "call_remote")
func choose_class(client_id, class_id):
var client = clients[client_id]
client["class_type"] = class_id
#client["HP"] = GameData.settings["game"]["classes"][class_id]["HP"]
#here are must be checks if the teams are balanced. WIP.
if class_id > 0:
ServerUtils.team_OS["members"].push_back(client)
elif class_id < 0:
ServerUtils.team_CS["members"].push_back(client)
switch_class.rpc_id(client_id, class_id)
##########################################CLIENT#######################
var player
var menu = preload("res://scenes/HUD/menu.tscn")
var current_map_instance
var choose_team_hud
var playermodel
var puppets_to_spawn = []
var map_path
var map_root_name
@rpc ("reliable", "call_remote")
func set_character_properties(p):
player = p
@rpc("authority", "reliable", "call_remote")
func spawn_puppet(internal_id):
func spawn_puppet(properties):
if (current_map_instance == null): # Player's not ready
puppets_to_spawn.push_back(properties)
return
var puppet = player_model.instantiate()
puppet.find_child("CharacterBody3D").set_is_playable(false)
puppet.find_child("CharacterBody3D").set_internal_id(internal_id)
puppet.name = "player" + str(internal_id)
properties["ready"] = true
puppet.set_properties(properties.duplicate())
add_child(puppet)
current_map_instance.add_child(puppet)
func spawn_puppet_onready(properties):
var puppet = player_model.instantiate()
properties["ready"] = true
puppet.set_properties(properties.duplicate())
current_map_instance.add_child(puppet)
@rpc("authority", "reliable", "call_remote")
func despawn_puppet(internal_id):
if (current_map_instance == null):
return
var puppet = current_map_instance.get_node("player" + str(internal_id))
current_map_instance.remove_child(puppet)
@rpc("authority", "reliable", "call_remote")
func receive_map(p):
map_path = p
map_root_name = (map_path.split("/")[-1]).split(".")[0]
@rpc("authority", "reliable", "call_remote")
func switch_class(class_id):
if (class_id == 128): # team is full, you must chose another
current_map_instance.remove_child(choose_team_hud)
current_map_instance.add_child(choose_team_hud)
player["class_type"] = class_id
rpc_id(1, "client_ready", multiplayer.get_unique_id())
current_map_instance.remove_child(choose_team_hud)
playermodel.set_property("is_playable", true)
playermodel.set_property("ready", true)
func spawn_player():
print(str(player_model))
playermodel = player_model.instantiate()
print(str(playermodel))
var properties = GameData.properties_example.duplicate()
properties = player
properties["is_playable"] = false
properties["ready"] = false
playermodel.set_properties(properties)
current_map_instance.add_child(playermodel)
func ConnectToServer(ip, port):
peer.create_client(ip, port)
@ -132,22 +326,38 @@ func ConnectToServer(ip, port):
func _Connection_Failed():
print("Failed to connect to server")
peer = ENetMultiplayerPeer.new()
multiplayer.multiplayer_peer = null
peer = ENetMultiplayerPeer.new()
multiplayer.multiplayer_peer = peer
func _Connection_Succseeded():
print("Succsessfully connected to the server")
var nickname = GameData.client_settings["nickname"]
rpc_id(1, "set_nickname", multiplayer.get_unique_id(), nickname)
rpc_id(1, "get_character_properties", multiplayer.get_unique_id())
rpc_id(1, "get_client_list", multiplayer.get_unique_id())
rpc_id(1, "get_map", multiplayer.get_unique_id())
await get_tree().create_timer(0.2).timeout # костыль
get_tree().change_scene_to_file("res://scenes/test_map.tscn")
get_tree().change_scene_to_file(map_path)
await get_tree().create_timer(1).timeout # костыль
current_map_instance = get_tree().root.get_node(map_root_name)
var player_node = player_model.instantiate()
player_node.find_child("CharacterBody3D").set_is_playable(true)
player_node.find_child("CharacterBody3D").set_internal_id(player["internal_id"])
add_child(player_node)
rpc_id(1, "get_client_list", multiplayer.get_unique_id())
await get_tree().create_timer(0.05).timeout # костыль # tp
rpc_id(1, "get_server_settings", multiplayer.get_unique_id())
await spawn_player()
choose_team_hud = preload("res://scenes/HUD/choose_team.tscn").instantiate()
current_map_instance.add_child(choose_team_hud)
for puppet in puppets_to_spawn:
spawn_puppet_onready(puppet)
func _Server_Disconnected():
print("Server has disconnected")
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
get_tree().change_scene_to_file("res://scenes/HUD/menu.tscn")
multiplayer.multiplayer_peer = null
peer = ENetMultiplayerPeer.new()
multiplayer.multiplayer_peer = peer

15
scripts/Nickname.gd Normal file
View File

@ -0,0 +1,15 @@
extends Button
@onready var button = $"."
@onready var nick_input: TextEdit = $"../Nickname"
func _ready():
nick_input.text = GameData.client_settings["nickname"]
button.text = "Set"
button.pressed.connect(self._button_pressed)
func _button_pressed():
var nickname = nick_input.text
print("Setting nickname to " + str(nickname))
GameData.client_settings["nickname"] = nickname
GameData.save_client_settings()

View File

@ -1,71 +1,380 @@
extends CharacterBody3D
const WALK_VELOCITY = 12.0
const RUN_VELOCITY = 24.0
const JUMP_VELOCITY = 12.0
const SENSETIVITY = 0.009;
enum Class_type {
Spectator = 0,
Astra = 1,
BlackArch = 2,
Kali = 3,
Debian = 4,
Arch = 5,
Windows11 = -1,
WindowsServer = -2,
MacOS = -3,
WindowsXP = -4,
Windows10 = -5
}
var Weapons = GameData.Weapons
var properties
var speed = 12
var walk = 12
var run = 24
var jump = 16
var gravity = 9.8
var speed = WALK_VELOCITY
var acceleration = 2.5
var inertia = 20
var climbing = false
var game_settings
var client_settings
var can_shoot = true
var time_since_last_shot = 0
var round_status = {
"cs_round_score" = 0,
"os_round_score" = 0,
"os_game_score" = 0,
"cs_game_score" = 0,
"round_number" = 0,
}
@onready var head = $Head
@onready var camera = $Head/Camera
@onready var camera: Camera3D = $Head/Camera
@onready var playerCharacterBody = $"."
var is_playable = false
var internal_id
@onready var collision_shapes = find_children("collision*","",false)
func set_internal_id(id):
internal_id = id
var HUD
var healthLabel
var armorLabel
var ammoLabel
var magazineLabel
var statusLabel
var csScoreRoundLabel
var csScoreGameLabel
var osScoreRoundLabel
var osScoreGameLabel
var roundNumberLabel
var timeLabel
var winnerLabel
var killLogList
func set_is_playable(value):
is_playable = value
func set_properties(props):
print("Got props from server: " + str(props))
properties = props
$"Head/Nickname".text = properties["nickname"]
name = "player" + str(properties["internal_id"])
position = properties["position"]
if (game_settings != null):
change_weapon(properties["current_weapon"]["number"])
func test(text):
print(text)
func set_property(key, value):
properties[key] = value
update_state()
func _ready():
if (!is_playable): return
camera.make_current()
func init_hud():
HUD = $HUD
healthLabel = $"HUD/health_and_ammo_display/healthdisplay/text"
armorLabel = $"HUD/health_and_ammo_display/armordisplay/text"
ammoLabel = $"HUD/health_and_ammo_display/ammodisplay/text"
magazineLabel = $"HUD/health_and_ammo_display/magazinedisplay/text"
statusLabel = $"HUD/Status"
csScoreRoundLabel = $"HUD/round_status/cs_score_round"
csScoreGameLabel = $"HUD/round_status/cs_score_game"
osScoreRoundLabel = $"HUD/round_status/os_score_round"
osScoreGameLabel = $"HUD/round_status/os_score_game"
roundNumberLabel = $"HUD/round_status/round_number"
timeLabel = $"HUD/round_status/time"
winnerLabel = $"HUD/round_status/winner"
killLogList = $"HUD/kill_log"
func update_hud():
healthLabel.text = str(properties["HP"])
armorLabel.text = str(properties["AP"])
ammoLabel.text = str(properties["current_weapon"]["ammo"])
magazineLabel.text = str(properties["current_weapon"]["magazine"])
if (properties["reloading"]):
statusLabel.text = "Reloading..."
else:
statusLabel.text = "Reloaded"
csScoreRoundLabel.text = str(round_status["cs_round_score"])
csScoreGameLabel.text = str(round_status["cs_game_score"])
osScoreRoundLabel.text = str(round_status["os_round_score"])
osScoreGameLabel.text = str(round_status["os_game_score"])
roundNumberLabel.text = "Round " + str(round_status["round_number"])
func find_weapon_name_by_number(number):
var name = ""
for weapon in game_settings["weapons"].keys():
if (game_settings["weapons"][weapon].number == number):
name = weapon
return name
@rpc("authority", "call_local", "reliable")
func change_weapon(new_weapon_number):
var weapons = $"Head/Camera/Hand".get_children()
for weapon in weapons:
weapon.visible = false
weapons[new_weapon_number].visible = true
print("Changing weapon: " + str(new_weapon_number))
#if (properties["is_playable"]):
#properties["current_weapon"] = properties["weapons"][find_weapon_name_by_number(new_weapon_number)]
#properties["reloading"] = false
func find_weapon_in_inventory(number):
var found_weapon
for weapon in properties["weapons"].values():
if weapon["number"] == number:
found_weapon = weapon
break
return found_weapon
func find_weapon_by_number(number):
var found_weapon
for weapon in game_settings["weapons"].keys():
if (game_settings["weapons"][weapon]["number"] == number):
found_weapon = game_settings["weapons"][weapon].duplicate()
break
return found_weapon
func find_current_weapon_by_number(number):
var found_weapon
for weapon in Weapons.keys():
if (Weapons[weapon]["number"] == number):
found_weapon = Weapons[weapon]
break
return found_weapon
func update_state():
camera.set_current(false)
$"Head/Nickname".text = properties["nickname"]
if (!properties["is_playable"]): return
camera.set_current(true)
if (HUD == null):
var hud = load("res://scenes/HUD/hud.tscn").instantiate()
add_child(hud)
init_hud()
update_hud()
playerCharacterBody.up_direction = Vector3.UP;
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _ready():
update_state()
func update_weapon_raycast():
var current_weapon_name = Weapons.find_key(properties["current_weapon"])
if(current_weapon_name == null): current_weapon_name = "knife"
var raycast:RayCast3D = get_node("Head/Camera/viewRaycast")
var weapon_raycast:RayCast3D = get_node("Head/Camera/Hand/" + str(current_weapon_name) + "/raycast")
weapon_raycast.target_position = weapon_raycast.to_local(raycast.to_global(raycast.target_position) - weapon_raycast.position)
func try_shoot():
print(str(properties["current_weapon"]))
#var current_weapon = game_settings["weapons"].find_key(find_weapon_by_number(properties["current_weapon"]["number"]))
var current_weapon = find_weapon_name_by_number(properties["current_weapon"]["number"])#game_settings["weapons"].find_key(find_weapon_by_number(properties["current_weapon"]["number"]))
print("currect weapon: " + current_weapon)
var current_weapon_settings = game_settings["weapons"][current_weapon]
properties["reloading"] = false
if (properties["current_weapon"]["magazine"] == 0):
return
if Input.is_action_pressed("shoot") and current_weapon_settings["fireRate"] >= 0.5 and not Input.is_action_just_pressed("shoot"):
return
time_since_last_shot = (Time.get_ticks_msec() - properties["last_shot"]) / 1000.
if (time_since_last_shot > current_weapon_settings["fireRate"]):
Networking.shot.rpc_id(1, multiplayer.get_unique_id())
properties["current_weapon"]["magazine"] -= 1
properties["last_shot"] = Time.get_ticks_msec()
var raycast:RayCast3D = get_node("Head/Camera/viewRaycast")
var weapon_raycast:RayCast3D = get_node("Head/Camera/Hand/" + str(current_weapon) + "/raycast")
raycast.target_position.z = -current_weapon_settings["range"]
raycast.force_raycast_update()
raycast.force_update_transform()
var target_point = raycast.get_collision_point()
weapon_raycast.target_position = weapon_raycast.to_local(target_point) * 1.1
weapon_raycast.force_raycast_update()
weapon_raycast.force_update_transform()
weapon_raycast.rotation.y = atan((weapon_raycast.position.x - position.x) / ((-current_weapon_settings["range"]) - (abs(weapon_raycast.position.z - position.z))))
weapon_raycast.target_position.y += current_weapon_settings["spreading"] * randf() * sin(randf() * 2 * PI)
weapon_raycast.target_position.z += current_weapon_settings["spreading"] * randf() * cos(randf() * 2 * PI)
weapon_raycast.force_raycast_update()
weapon_raycast.force_update_transform()
var trace = preload("res://scenes/models/bullet_trace.tscn").instantiate()
get_node("..").add_child(trace)
trace.init((weapon_raycast.global_position), (weapon_raycast.get_collision_point()))
func reload():
var current_weapon_instance = properties["current_weapon"]
var current_weapon = game_settings["weapons"].find_key(find_weapon_by_number(current_weapon_instance["number"]))
var current_weapon_settings = game_settings["weapons"][current_weapon]
var to_reload = current_weapon_settings["magazine"] - current_weapon_instance["magazine"]
if (properties["reloading"]):
if (to_reload <= current_weapon_instance["ammo"]):
current_weapon_instance["magazine"] += to_reload
current_weapon_instance["ammo"] -= to_reload
else:
current_weapon_instance["magazine"] += current_weapon_instance["ammo"]
current_weapon_instance["ammo"] = 0
properties["reloading"] = false
if (HUD != null):
update_hud()
func _unhandled_input(event):
if (!is_playable): return
if (!properties["is_playable"]): return
var weapon_change = 0
if Input.is_action_pressed("MWU"):
weapon_change = 1
if Input.is_action_pressed("MWD"):
weapon_change = -1
if (weapon_change != 0):
var new_weapon_number = wrap(properties["current_weapon"]["number"] + weapon_change, 0, game_settings["weapons"].size())
properties["current_weapon"] = find_weapon_in_inventory(new_weapon_number)
print(str(properties["current_weapon"]))
Networking.change_weapon.rpc_id(1, multiplayer.get_unique_id(), properties["current_weapon"]["number"])
if event is InputEventMouseMotion:
head.rotate_y(-event.relative.x * SENSETIVITY)
rotate_y(-event.relative.x * SENSETIVITY)
camera.rotate_x(-event.relative.y * SENSETIVITY)
camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-50), deg_to_rad(60))
func _physics_process(delta):
if (!is_playable): return
if not is_on_floor():
velocity.y -= 4 * gravity * delta
var input_dir = Input.get_vector("left", "right", "forward", "backward")
var direction = (head.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if (!properties["is_playable"]): return
if (game_settings == null): return
if (multiplayer.multiplayer_peer == null):
properties["is_playable"] = false
if Input.is_action_pressed("shoot"):
try_shoot()
if (HUD != null):
update_hud()
update_weapon_raycast()
if Input.is_action_just_pressed("reload"):
var current_weapon = game_settings["weapons"].find_key(find_weapon_by_number(properties["current_weapon"]["number"]))
Networking.client_reloading.rpc_id(1, multiplayer.get_unique_id())
properties["reloading"] = true
get_tree().create_timer(game_settings["weapons"][current_weapon]["reload"]).connect("timeout", reload)
var input_dir = Input.get_vector("left", "right", "forward", "backward")
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = lerp(velocity.x, direction.x * speed, delta * acceleration)
velocity.z = lerp(velocity.z, direction.z * speed, delta * acceleration)
if (climbing):
print(str(input_dir))
velocity.y = -input_dir.y * jump / 2 if input_dir.x == 0 else abs(input_dir.x) * jump / 2
else:
if is_on_floor():
velocity.x = lerp(velocity.x, direction.x * speed * 0.5, delta * inertia)
velocity.z = lerp(velocity.z, direction.z * speed * 0.5, delta * inertia)
elif not is_on_floor() and not climbing:
velocity.x = lerp(velocity.x, direction.x * speed * 0.5, delta)
velocity.z = lerp(velocity.z, direction.z * speed * 0.5, delta)
if is_on_floor():
if Input.is_action_just_pressed("jump"):
velocity.y = JUMP_VELOCITY
velocity.y = jump
if Input.is_action_pressed("run"):
speed = RUN_VELOCITY
speed = run
else:
speed = WALK_VELOCITY
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
else:
velocity.x = lerp(velocity.x, direction.x * speed, delta * 8)
velocity.z = lerp(velocity.z, direction.z * speed, delta * 8)
speed = walk
else:
velocity.y -= 4 * gravity * delta
velocity.x = lerp(velocity.x, direction.x * speed, delta)
velocity.z = lerp(velocity.z, direction.z * speed, delta)
move_and_slide()
for index in get_slide_collision_count():
var collision := get_slide_collision(index)
var body := collision.get_collider()
if ("ladder" in body.name):
climbing = true
else:
climbing = false
#print("Collided with: " + body.name)
if (!multiplayer.is_server()):
Networking.move_client.rpc_id(1, multiplayer.get_unique_id(), $".".position)
print("I am " + $"..".name +", belonging of " + str(multiplayer.get_unique_id()) + ", with internal ID: " + str(internal_id))
Networking.sync_client.rpc_id(1, multiplayer.get_unique_id(), $".".position, {"y": rotation.y, "x": camera.rotation.x})
#print("I am " + $"..".name +", belonging of " + str(multiplayer.get_unique_id()) + ", with internal ID: " + str(properties["internal_id"]))
@rpc ("authority", "call_remote")
func move_puppet(p: Vector3, i_id):
if (i_id == internal_id):
@rpc ("authority", "call_remote", "unreliable")
func sync_puppet(i_id, p, rot):
if(!properties["ready"]): return
if(properties["is_playable"]): return
if (int(i_id) == properties["internal_id"]):
playerCharacterBody.position = p
rotation.y = rot.y
camera.rotation.x = rot.x
@rpc ("authority", "call_remote", "reliable")
func set_hp(hp):
if (!properties["is_playable"]): return
properties["HP"] = hp
@rpc ("authority", "call_remote", "reliable")
func set_game_settings(s):
game_settings = s
gravity = game_settings["moving"]["gravity"]
walk = game_settings["moving"]["walk"]
run = game_settings["moving"]["run"]
jump = game_settings["moving"]["jump"]
acceleration = game_settings["moving"]["acceleration"]
inertia = game_settings["moving"]["inertia"]
change_weapon(properties["current_weapon"]["number"])
GameData.apply_weapon_settings(game_settings["weapons"])
Weapons = GameData.Weapons
@rpc ("authority", "call_remote", "reliable")
func teleport(pos):
position = pos
@rpc ("authority", "call_remote", "reliable")
func change_weapon_puppet(i_id, new_weapon_number):
if (int(i_id) == properties["internal_id"]):
change_weapon(new_weapon_number)
@rpc("authority", "call_remote", "reliable")
func update_round_status(s):
print("Updated round status: " + str(s))
round_status = s
if(HUD != null):
update_hud()
@rpc("authority", "call_remote", "reliable")
func end_round(result):
print("Result: %s" % str(result))
winnerLabel.visible = true
if (result > 0):
winnerLabel.text = "OS WON"
elif (result < 0 ):
winnerLabel.text = "CS WON"
await get_tree().create_timer(1).timeout
winnerLabel.visible = false
winnerLabel.text = ""
@rpc("authority", "call_remote", "reliable")
func kill_notification(killer, victim):
var entry = load("res://scenes/models/kill_log_entry.tscn").instantiate()
entry.get_node("killer").text = str(killer)
entry.get_node("victim").text = str(victim)
killLogList.add_child(entry)

View File

@ -1,25 +0,0 @@
enum Class_type {
Spectator = 0,
Astra = 1,
BlackArch = 2,
Kali = 3,
Debian = 4,
Arch = 5,
Windows11 = -1,
WindowsServer = -2,
MacOS = -3,
WindowsXP = -4,
Windows10 = -5
}
var Distro = {
HP = 100,
AP = 100,
HACK = 1.0,
class_type = 0,
}
var Player = {
distro = Distro,
speed = 1.0,
position = Vector3(0, 10, 0)
}

25
scripts/Select.gd Normal file
View File

@ -0,0 +1,25 @@
extends Button
@onready var button = $"."
@onready var choose_team = $"../.."
@onready var choose_class_os = $"../../../Choose_class_OS"
@onready var choose_class_cs = $"../../../Choose_class_CS"
func _ready():
button.pressed.connect(self._button_pressed)
func _button_pressed():
match name:
"Select_CS":
choose_class_cs.visible = true
choose_class_os.visible = false
"Select_OS":
choose_class_os.visible = true
choose_class_cs.visible = false
"Select_SP":
print("Spectating")
Networking.choose_class.rpc_id(1, multiplayer.get_unique_id(), 0)
_:
var class_id = int(name.split("_")[1])
Networking.choose_class.rpc_id(1, multiplayer.get_unique_id(), class_id)
choose_team.visible = false

View File

@ -0,0 +1,42 @@
extends Node3D
const SENSETIVITY = 0.009;
var walk = 2
@onready var head = $"."
@onready var camera = $"./Camera"
func _ready():
camera.make_current()
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _unhandled_input(event):
if Input.is_action_pressed("MWU"):
walk += walk / 5.
if Input.is_action_pressed("MWD"):
walk -= walk / 5.
walk = clamp(walk, 0.01, 15)
if event is InputEventMouseMotion:
head.rotate_y(-event.relative.x * SENSETIVITY)
camera.rotate_x(-event.relative.y * SENSETIVITY)
camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-90), deg_to_rad(90))
func _physics_process(delta):
var input_dir = Input.get_vector("left", "right", "forward", "backward")
#var direction = head.transform.rotation
var direction = (head.transform.basis * Vector3(input_dir.x, input_dir.x, input_dir.y)).normalized()
#var direction = (head.transform.basis * Vector2(input_dir.x, input_dir.y)).normalized()
var velocity = Vector3.ZERO
var speed
if Input.is_action_pressed("run"):
speed = walk * 2
else:
speed = walk
velocity.y = Input.get_vector("crawl", "jump", "left", "right").x * speed
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
else:
velocity.x = lerp(velocity.x, direction.x * speed, delta * 4)
velocity.z = lerp(velocity.z, direction.z * speed, delta * 4)
head.position += velocity

View File

@ -0,0 +1,18 @@
extends Button
@onready var button = $"."
@onready var direct_menu = $"../../../DirectMenu"
@onready var settings_menu = $"../../../SettingsMenu"
func _ready():
button.pressed.connect(self._button_pressed)
func _button_pressed():
if ("quit" in name):
get_tree().quit()
elif ("direct" in name):
settings_menu.visible = false
direct_menu.visible = true
elif("settings" in name):
settings_menu.visible = true
direct_menu.visible = false

5
scripts/point.gd Normal file
View File

@ -0,0 +1,5 @@
extends StaticBody3D
func _ready():
await get_tree().create_timer(1).timeout
free()

10
scripts/target.gd Normal file
View File

@ -0,0 +1,10 @@
extends StaticBody3D
var point = load("res://scenes/models/point.tscn")
@rpc("reliable", "authority")
func shot(pos):
print("Shot to " + str(pos))
var new_point:StaticBody3D = point.instantiate()
add_child(new_point)
new_point.position = to_local(pos)

View File

@ -0,0 +1,19 @@
extends Node3D
enum teams {
team_CS = -1,
team_OS = 1
}
@onready var spawnpoints = [
Vector3(0, 1, 0),
Vector3(scale.x, 2, scale.z),
Vector3(-scale.x, 2, scale.z),
Vector3(scale.x, 2, -scale.z),
Vector3(-scale.x, 2, -scale.z)
]
@export var team:teams
func get_class_spawnpoint(class_id):
return position + (spawnpoints[abs(class_id) - 1])

40
scripts/utils/NetUtils.gd Normal file
View File

@ -0,0 +1,40 @@
extends Node
func send_everyone(args):
for current_client_id in Networking.clients.keys():
if (args.size() == 1):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0])
elif (args.size() == 2):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1])
elif (args.size() == 3):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1], args[2])
else:
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1], args[2], args[3])
func send_everyone_except(client_id, args):
if (typeof(args[0]) == 4): #string
for current_client_id in Networking.clients.keys():
if (str(current_client_id) == str(client_id)): continue
if (args.size() == 1):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0])
elif (args.size() == 2):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1])
elif (args.size() == 3):
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1], args[2])
else:
var playermodel = ServerUtils.find_playermodel_by_internal_id(Networking.clients[current_client_id]["internal_id"])
playermodel.rpc_id(int(current_client_id), args[0], args[1], args[2], args[3])
else:
for current_client_id in Networking.clients.keys():
if (str(current_client_id) == str(client_id)): continue
if (args.size() == 1): args[0].rpc_id(int(current_client_id))
elif (args.size() == 2): args[0].rpc_id(int(current_client_id), args[1])
elif (args.size() == 3): args[0].rpc_id(int(current_client_id), args[1], args[2])
else: args[0].rpc_id(int(current_client_id), args[1], args[2], args[3])

View File

@ -0,0 +1,223 @@
extends Node
var team_CS = {
"spawnpoints": [],
"members": [],
"round_score": 0,
"game_score": 0
}
var team_OS = {
"spawnpoints": [],
"members": [],
"round_score": 0,
"game_score": 0
}
var round_number = 0
var gamemode
var map_path
var map_root_name
var server_map
func find_class_type_by_number(number):
var found_class
var classtypes = GameData.server_settings["game"]["classTypes"]
for classtype in classtypes:
if classtypes[classtype]["number"] == number:
found_class = classtypes[classtype].duplicate()
break
return found_class
func check_map_availability(path):
var maps = DirAccess.open("res://scenes/maps").get_files()
var map_name = (path.split("/")[-1]).split(".")[0]
for map in maps:
var checking_map_name = str(map.split(".")[0])
if(checking_map_name == map_name):
return true
return false
func check_gamemode_availability(gm):
var gamemodes = GameData.server_settings["game"]["gamemodes"].keys()
for g in gamemodes:
if gm == g:
return true
return false
func find_weapon_name_by_number(number):
var name = ""
for weapon in GameData.server_settings["game"]["weapons"].keys():
if (GameData.server_settings["game"]["weapons"][weapon].number == number):
name = weapon
return name
func find_weapon_by_number(number):
var found_weapon
for weapon in GameData.server_settings["game"]["weapons"].keys():
if (GameData.server_settings["game"]["weapons"][weapon]["number"] == number):
found_weapon = GameData.server_settings["game"]["weapons"][weapon].duplicate()
break
return found_weapon
func find_playermodel_by_internal_id(internal_id):
return server_map.get_node("player" + str(internal_id))
func reloading_complete(client_id, reloading_time):
await get_tree().create_timer(reloading_time).timeout
var client = Networking.clients[client_id]
if (!client["reloading"]): # if a client has interrupted the reloading
return
var weapons_list = GameData.server_settings["game"]["weapons"]
var current_client_weapon = client["current_weapon"]
var current_weapon_example = weapons_list.find_key(ServerUtils.find_weapon_by_number(current_client_weapon["number"]))
var current_weapon_settings = weapons_list[current_weapon_example]
var to_reload = current_weapon_settings["magazine"] - current_client_weapon["magazine"]
if (to_reload <= current_client_weapon["ammo"]):
current_client_weapon["magazine"] += to_reload
current_client_weapon["ammo"] -= to_reload
else:
current_client_weapon["magazine"] += current_client_weapon["ammo"]
current_client_weapon["ammo"] = 0
func choose_collision_shape(target, shape_num):
var collision_shapes:Array = []
for s in target.get_children():
if s is CollisionShape3D:
collision_shapes.push_back(s)
var shape
for i in range(0, collision_shapes.size()):
if i == shape_num:
shape = collision_shapes[i]
break
return shape
func new_round():
round_number += 1
team_OS["round_score"] = 0
team_CS["round_score"] = 0
print("CS members " + str(team_CS["members"]))
print("OS members " + str(team_OS["members"]))
for member in team_CS["members"]:
member["position"] = team_CS["spawnpoints"].pick_random().get_class_spawnpoint(abs(member["class_type"]))
ServerUtils.find_playermodel_by_internal_id(member["internal_id"]).teleport.rpc_id(Networking.clients.find_key(member), member["position"])
for member in team_OS["members"]:
member["position"] = team_OS["spawnpoints"].pick_random().get_class_spawnpoint(abs(member["class_type"]))
ServerUtils.find_playermodel_by_internal_id(member["internal_id"]).teleport.rpc_id(Networking.clients.find_key(member), member["position"])
send_scores()
func new_game(new_map_path, new_gamemode):
team_OS["game_score"] = 0
team_OS["round_score"] = 0
team_CS["game_score"] = 0
team_CS["round_score"] = 0
round_number = 0
send_scores()
new_map_path = map_path if (new_map_path == null) else new_map_path
new_gamemode = gamemode if (new_gamemode == null) else new_gamemode
await switch_map(new_map_path)
await switch_gamemode(new_gamemode)
func check_gamemode_end_conditions():
match gamemode:
"TDM":
var kills_amount_to_win = GameData.server_settings["game"]["gamemodes"]["TDM"]["kills"]
if team_OS["round_score"] >= kills_amount_to_win:
team_OS["game_score"] += 1
print("OS won")
NetUtils.send_everyone(["end_round", 1]) # 1 = os is win
new_round()
elif team_CS["round_score"] >= kills_amount_to_win:
team_CS["game_score"] += 1
NetUtils.send_everyone(["end_round", -1]) # -1 = cs is win
print("CS won")
new_round()
send_scores()
func switch_map(new_map_path):
print("Switching map to %s" % new_map_path)
if (not ServerUtils.check_map_availability(new_map_path)):
var default_map = GameData.server_settings["defaults"]["map"]
print("Error. No map found. Loading default map %s" % default_map)
new_map_path = "res://scenes/maps/%s.tscn" % default_map
if (not ServerUtils.check_map_availability(new_map_path)):
print("Error. Default map is not valid. Please, specify a valid map in a config file.")
return
map_path = new_map_path
get_tree().change_scene_to_file(map_path)
await get_tree().create_timer(0.1).timeout #I know that this isn't a good practice, but I didn't find anything better
map_root_name = (map_path.split("/")[-1]).split(".")[0]
server_map = get_tree().root.get_node(map_root_name)
var spawnpoints = server_map.find_children("spawnpoint*", "" ,true)
team_OS["spawnpoints"] = []
team_CS["spawnpoints"] = []
for spawnpoint in spawnpoints:
if spawnpoint.team == 0: # cs
team_CS["spawnpoints"].push_back(spawnpoint)
elif spawnpoint.team > 0: # os
team_OS["spawnpoints"].push_back(spawnpoint)
var spectator = preload("res://scenes/models/spectator.tscn").instantiate()
server_map.add_child(spectator)
func send_scores():
NetUtils.send_everyone(["update_round_status", {
"cs_round_score" = team_CS["round_score"],
"os_round_score" = team_OS["round_score"],
"os_game_score" = team_OS["game_score"],
"cs_game_score" = team_CS["game_score"],
"round_number" = round_number,
}])
func switch_gamemode(new_gamemode):
if not ServerUtils.check_gamemode_availability(new_gamemode):
print("No gamemode found")
return
gamemode = new_gamemode
func parse_arguments():
var arguments = {}
for argument in OS.get_cmdline_args():
if argument.find("=") > -1:
var key_value = argument.split("=")
arguments[key_value[0].lstrip("--")] = key_value[1]
else:
# Options without an argument will be present in the dictionary,
# with the value set to an empty string.
arguments[argument.lstrip("--")] = ""
return arguments
func setup_server():
var arguments = parse_arguments()
GameData.read_settings()
################ parsing map
var path = "res://scenes/maps/%s.tscn" % arguments["map"] if arguments.has("map") else "res://scenes/maps/%s.tscn" % GameData.server_settings["defaults"]["map"]
if (ServerUtils.check_map_availability(path)):
map_path = path
else:
print("Unknown map %s Available maps:" % path)
for map in DirAccess.open("res://scenes/maps").get_files():
print(str(map.split(".")[0]))
get_tree().quit()
return
################ parsing gamemode
var gm = str(arguments["gamemode"]) if (arguments.has("gamemode")) else "TDM"
if (ServerUtils.check_gamemode_availability(gm)):
print("Gamemode exists")
else:
print("No")
await new_game(map_path, gm)
var spectator = preload("res://scenes/models/spectator.tscn").instantiate()
server_map.add_child(spectator)
Networking.StartServer()
func _ready():
if "--server" in OS.get_cmdline_args():
setup_server()

View File

@ -1,3 +1 @@
{
}
{ "nickname": "Unnamed" }

View File

@ -2,4 +2,91 @@
"port": 2390,
"maxclients": 10,
"enableAntiCheat": false,
"defaults":{
"map": "1v1",
"gamemode": "TDM"
},
"game": {
"classes":{
"class_1":{
"HP": 1100000,
"AP": 10000,
"damage_mul": 0.0001
}
},
"gamemodes":{
"TDM": {
"duration": 15,
"kills": 3,
"rounds": 3,
"friendlyfire": false
},
"operation_cleaning": {
"duration": 20,
"rounds": 3,
"friendlyfire": false
}
},
"moving": {
"walk": 12,
"run": 24,
"gravity": 9.8,
"jump": 12,
"acceleration": 2.5,
"inertia": 20
},
"weapons": {
"knife": {
"number": 0,
"damage": {
"head": 70,
"body": 40,
"hand": 10,
"leg": 20
},
"reload": 3,
"magazine": -1,
"fireRate": 3,
"spreading": 0,
"ammo": -1,
"range": 2
},
"pistol": {
"number": 1,
"damage": {
"head": 90,
"body": 60,
"hand": 30,
"leg": 10
},
"reload": 2,
"magazine": 10,
"fireRate": 0.5,
"spreading": 0,
"ammo": 200,
"range": 100
},
"ak-47": {
"number": 2,
"damage": {
"head": 35,
"body": 20,
"hand": 10,
"leg": 15
},
"reload": 4,
"magazine": 30,
"fireRate": 0.2,
"spreading": 1,
"ammo": 100,
"range": 100
}
},
"classTypes": {
"spectator": {
"number": 0,
"spawnpoint": [0, 4, 0]
}
}
}
}

BIN
textures/knife_textures.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

View File

@ -2,8 +2,8 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cs0ysba50acxp"
path.s3tc="res://.godot/imported/texture_04_2.png-b107066fb6487ebd3c651f32c491c785.s3tc.ctex"
uid="uid://cbf6w7ativli8"
path.s3tc="res://.godot/imported/knife_textures.png-bfa45f2fa32fc252fea8eb5aaf3203bc.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
@ -11,8 +11,8 @@ metadata={
[deps]
source_file="res://textures/texture_04_2.png"
dest_files=["res://.godot/imported/texture_04_2.png-b107066fb6487ebd3c651f32c491c785.s3tc.ctex"]
source_file="res://textures/knife_textures.png"
dest_files=["res://.godot/imported/knife_textures.png-bfa45f2fa32fc252fea8eb5aaf3203bc.s3tc.ctex"]
[params]

283
textures/logo/ammo.svg Normal file
View File

@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="151.4978"
height="101.86783"
viewBox="0 0 40.083792 26.952529"
version="1.1"
id="svg1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<linearGradient
id="linearGradient1">
<stop
style="stop-color:#ff1515;stop-opacity:0;"
offset="0.50428748"
id="stop2" />
<stop
style="stop-color:#ffc668;stop-opacity:1;"
offset="1"
id="stop1" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient2"
x1="23.45673"
y1="19.128405"
x2="32.11002"
y2="19.128405"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(7.5922353,5.6898694)" />
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient9"
gradientUnits="userSpaceOnUse"
x1="23.45673"
y1="19.128405"
x2="32.11002"
y2="19.128405"
gradientTransform="translate(4.2861871,-9.0511383)" />
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient17"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(4.2861871,-9.0511383)"
x1="23.45673"
y1="19.128405"
x2="32.11002"
y2="19.128405" />
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient23"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(4.2861871,-9.0511383)"
x1="23.45673"
y1="19.128405"
x2="32.11002"
y2="19.128405" />
</defs>
<g
id="layer1"
transform="translate(-7.7660105,-19.689474)"
style="display:none">
<ellipse
style="fill:#8a5f1c;fill-opacity:1;stroke:url(#linearGradient2);stroke-width:0.361542;stroke-opacity:1"
id="path1"
cx="35.37561"
cy="24.818274"
rx="4.145874"
ry="4.3052993" />
<rect
style="fill:#4d4d4d;stroke-width:0.353999"
id="rect1"
width="21.087387"
height="8.6107426"
x="14.361528"
y="20.511501"
ry="0" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.353999;stroke-opacity:1"
id="rect3"
width="5.6808996"
height="5.6621842"
x="10.619092"
y="21.910383" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.353999;stroke-opacity:1"
id="rect4"
width="3.541163"
height="8.5967808"
x="9.446908"
y="20.52474" />
</g>
<g
id="g23"
transform="matrix(1.0743678,0,0,1.0743678,-6.222672,-5.7121353)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.406013;stroke-opacity:1"
id="rect18"
width="4.2534728"
height="9.4148655"
x="5.7919383"
y="5.3747172" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:0.425851;stroke-opacity:1"
id="rect19"
width="6.8339643"
height="6.81145"
x="6.7365112"
y="6.5947447" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.376601"
id="rect20"
width="21.794388"
height="9.4292669"
x="10.70198"
y="5.3612318"
ry="0" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.39977;stroke-opacity:1"
id="ellipse20"
cx="32.069561"
cy="10.077267"
rx="4.5842433"
ry="4.7605257" />
<ellipse
style="fill:#8a5f1c;fill-opacity:1;stroke:url(#linearGradient23);stroke-width:0.361542;stroke-opacity:1"
id="ellipse21"
cx="32.069561"
cy="10.077267"
rx="4.145874"
ry="4.3052993" />
<rect
style="fill:#4d4d4d;stroke-width:0.353999"
id="rect21"
width="21.087387"
height="8.6107426"
x="11.05548"
y="5.770494"
ry="0" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.353999;stroke-opacity:1"
id="rect22"
width="5.6808996"
height="5.6621842"
x="7.3130436"
y="7.1693778" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.353999;stroke-opacity:1"
id="rect23"
width="3.541163"
height="8.5967808"
x="6.1408596"
y="5.7837348" />
</g>
<g
id="layer3"
transform="matrix(1.0743678,0,0,1.0743678,-2.4482425,2.6217572)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.406013;stroke-opacity:1"
id="rect4-1-8"
width="4.2534728"
height="9.4148655"
x="5.7919383"
y="5.3747172" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:0.425851;stroke-opacity:1"
id="rect16"
width="6.8339643"
height="6.81145"
x="6.7365112"
y="6.5947447" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.376601"
id="rect17"
width="21.794388"
height="9.4292669"
x="10.70198"
y="5.3612318"
ry="0" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.39977;stroke-opacity:1"
id="path1-6"
cx="32.069561"
cy="10.077267"
rx="4.5842433"
ry="4.7605257" />
<ellipse
style="fill:#8a5f1c;fill-opacity:1;stroke:url(#linearGradient9);stroke-width:0.361542;stroke-opacity:1"
id="ellipse17"
cx="32.069561"
cy="10.077267"
rx="4.145874"
ry="4.3052993" />
<rect
style="fill:#4d4d4d;stroke-width:0.353999"
id="rect1-2"
width="21.087387"
height="8.6107426"
x="11.05548"
y="5.770494"
ry="0" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.353999;stroke-opacity:1"
id="rect3-6"
width="5.6808996"
height="5.6621842"
x="7.3130436"
y="7.1693778" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.353999;stroke-opacity:1"
id="rect4-1"
width="3.541163"
height="8.5967808"
x="6.1408596"
y="5.7837348" />
</g>
<g
id="layer3-2"
transform="matrix(1.0743678,0,0,1.0743678,0.70412529,11.011282)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.406013;stroke-opacity:1"
id="rect4-1-8-0"
width="4.2534728"
height="9.4148655"
x="5.7919383"
y="5.3747172" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:0.425851;stroke-opacity:1"
id="rect16-6"
width="6.8339643"
height="6.81145"
x="6.7365112"
y="6.5947447" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:0.376601"
id="rect17-1"
width="21.794388"
height="9.4292669"
x="10.70198"
y="5.3612318"
ry="0" />
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.39977;stroke-opacity:1"
id="path1-6-5"
cx="32.069561"
cy="10.077267"
rx="4.5842433"
ry="4.7605257" />
<ellipse
style="fill:#8a5f1c;fill-opacity:1;stroke:url(#linearGradient17);stroke-width:0.361542;stroke-opacity:1"
id="ellipse17-5"
cx="32.069561"
cy="10.077267"
rx="4.145874"
ry="4.3052993" />
<rect
style="fill:#4d4d4d;stroke-width:0.353999"
id="rect1-2-4"
width="21.087387"
height="8.6107426"
x="11.05548"
y="5.770494"
ry="0" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.353999;stroke-opacity:1"
id="rect3-6-7"
width="5.6808996"
height="5.6621842"
x="7.3130436"
y="7.1693778" />
<rect
style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.353999;stroke-opacity:1"
id="rect4-1-6"
width="3.541163"
height="8.5967808"
x="6.1408596"
y="5.7837348" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bxmfgknljdw65"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
uid="uid://bmuo2tbe3r8ih"
path="res://.godot/imported/ammo.svg-a48c5afd8ec441778c292a61a489df3b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
source_file="res://textures/logo/ammo.svg"
dest_files=["res://.godot/imported/ammo.svg-a48c5afd8ec441778c292a61a489df3b.ctex"]
[params]

47
textures/logo/health.svg Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="199.99416"
height="199.99411"
viewBox="0 0 52.915119 52.915108"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#">
<defs
id="defs1">
<linearGradient
id="swatch14">
<stop
style="stop-color:#f70000;stop-opacity:1;"
offset="0"
id="stop15" />
</linearGradient>
</defs>
<path
d="M 17.71158,0 V 17.719848 L 0.00155029,17.738968 0,35.203535 h 17.711063 l -5.16e-4,17.709513 8.747269,-0.0615 8.717297,0.06356 0.01964,-17.711064 17.718298,5.17e-4 -0.06149,-8.747269 0.06356,-8.717297 -17.719848,-0.01964 -0.01912,-17.71881471 z"
style="fill:#d40000;stroke-width:0.35411"
id="path30" />
<metadata
id="metadata58">
<rdf:RDF>
<cc:Work
rdf:about="">
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://na1y6c7osyj2"
path="res://.godot/imported/health.svg-34f0f55daee51496769c12bd4e69bb8d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://textures/logo/health.svg"
dest_files=["res://.godot/imported/health.svg-34f0f55daee51496769c12bd4e69bb8d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="91.47361"
height="133.22157"
viewBox="0 0 24.202393 35.248207"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="layer1"
transform="translate(-15.183286,-10.201804)">
<path
d="m 23.487037,10.203596 c 0.02985,0.04804 0.04551,0.07318 0.111205,0.178449 6.586509,8.917751 -8.649294,29.512008 -8.412215,29.278272 0.03443,-0.01426 1.868784,1.842609 10.035593,5.789694 C 38.10633,27.971499 39.418665,11.976389 39.385067,12.089649 L 23.525516,10.203204 c 0,0 -6.83e-4,-9.95e-4 -9.09e-4,-0.0014 -0.0019,5e-5 -0.0034,2.02e-4 -0.0053,3.85e-4 -0.0055,3.32e-4 -0.01151,1.65e-4 -0.01704,4.01e-4 -0.0051,2.64e-4 -0.01528,9.83e-4 -0.01528,9.83e-4 z"
style="fill:#8b7e7e;fill-opacity:1;stroke-width:0.353999"
id="path38" />
</g>
<g
id="layer2"
transform="translate(-15.183286,-10.201804)">
<path
style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.353999"
d="M 27.660497,12.834958 C 33.148914,13.134884 17.098776,43.43903 16.884371,40.287503 16.851245,39.800585 29.542678,16.896614 27.660497,12.834958 Z"
id="path57" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.353999"
d="M 30.530946,13.122291 C 36.064211,13.463794 19.526758,44.908118 19.321489,41.740045 19.289933,41.253022 32.413127,17.183947 30.530946,13.122291 Z"
id="path57-5" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.353999"
d="M 33.559303,13.191355 C 39.069473,13.491347 22.192156,45.975058 21.979196,42.830999 21.946214,42.344071 35.441484,17.253011 33.559303,13.191355 Z"
id="path57-2" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.353999"
d="M 36.754727,13.340402 C 42.237802,13.741358 24.699436,46.936499 24.392168,43.61032 24.346033,43.110914 38.644857,17.38499 36.754727,13.340402 Z"
id="path57-7" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1i1fgjbpwped"
path="res://.godot/imported/magazine.svg-87874fb5953f9966e3e389fa7ebeb69b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://textures/logo/magazine.svg"
dest_files=["res://.godot/imported/magazine.svg-87874fb5953f9966e3e389fa7ebeb69b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

22
textures/logo/shield.svg Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="122.00974"
height="120.53511"
viewBox="0 0 32.281743 31.891581"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="layer1"
transform="translate(-10.317465,-13.96557)">
<path
d="m 13.752649,13.968657 c -2.154433,0.03105 -3.642111,0.304645 -3.411678,1.035078 0.737386,2.337396 0.220248,18.676416 4.350122,23.121587 3.993913,4.298823 11.203757,7.483639 11.683525,7.69307 0.0082,0.0036 0.07958,0.03696 0.08371,0.03876 0.0041,-0.0018 0.07555,-0.03519 0.08372,-0.03876 0.479769,-0.209432 7.689604,-3.394239 11.683525,-7.69307 4.129883,-4.44518 3.612734,-20.784187 4.350122,-23.121587 0.737245,-2.336938 -16.109791,0.0017 -16.116329,0.0026 h -0.0021 c -0.0045,-6.24e-4 -7.966236,-1.105953 -12.704651,-1.037662 z"
style="fill:#11b1ff;fill-opacity:1;stroke-width:0.265"
id="path13" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cxpljra1na1p8"
path="res://.godot/imported/shield.svg-5699a9fcb58857c3f97318f5501bd1f5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://textures/logo/shield.svg"
dest_files=["res://.godot/imported/shield.svg-5699a9fcb58857c3f97318f5501bd1f5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://coy1cnoshvj7w"]
[ext_resource type="Texture2D" uid="uid://c88oa7ckhmvoh" path="res://textures/prototype-textures/Prototype_grey_32x32px.png" id="1_nvwxs"]
[resource]
albedo_texture = ExtResource("1_nvwxs")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true

Binary file not shown.

View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c6sa1jlgmjnln"]
[ext_resource type="Texture2D" uid="uid://clc6hbxpqmr13" path="res://textures/prototype-textures/Prototype_orange_32x32px.png" id="1_cwst7"]
[resource]
albedo_texture = ExtResource("1_cwst7")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true

View File

@ -0,0 +1,8 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://1h2wx1eutscp"]
[ext_resource type="Texture2D" uid="uid://bsk3du2ujcf0g" path="res://textures/prototype-textures/Prototype_pink_32x32px.png" id="1_vqqut"]
[resource]
albedo_texture = ExtResource("1_vqqut")
uv1_scale = Vector3(0.1, 0.1, 0.1)
uv1_triplanar = true

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dyf4no30s6bcb"
path.s3tc="res://.godot/imported/texture_01.png-75429132b66012deb505c6cb3a836a6a.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://textures/prototype-textures/Dark/texture_01.png"
dest_files=["res://.godot/imported/texture_01.png-75429132b66012deb505c6cb3a836a6a.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8mp3p4shnemy"
path.s3tc="res://.godot/imported/texture_02.png-ab82e3e00c75250845af3a1a8a61d477.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://textures/prototype-textures/Dark/texture_02.png"
dest_files=["res://.godot/imported/texture_02.png-ab82e3e00c75250845af3a1a8a61d477.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvmx4e4mxw5yp"
path.s3tc="res://.godot/imported/texture_03.png-1bab2fa4cc4f48abbce2f789e301ce7f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://textures/prototype-textures/Dark/texture_03.png"
dest_files=["res://.godot/imported/texture_03.png-1bab2fa4cc4f48abbce2f789e301ce7f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Some files were not shown because too many files have changed in this diff Show More