fixed wrong weapon range change
This commit is contained in:
parent
8237ec509a
commit
71f9cdec66
|
@ -149,6 +149,9 @@ func shot(client_id):
|
|||
|
||||
var raycast:RayCast3D = find_cb3d_by_internal_id(internal_id).get_node("Head/Camera/RayCast3D")
|
||||
raycast.target_position.z = -current_weapon_settings["range"]
|
||||
raycast.force_raycast_update()
|
||||
raycast.force_update_transform()
|
||||
|
||||
var target = raycast.get_collider()
|
||||
if (not target is CharacterBody3D): return
|
||||
var target_internal_id = int(target.get_node("..").name.get_slice("player", 1))
|
||||
|
@ -178,10 +181,11 @@ func shot(client_id):
|
|||
@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"])
|
||||
for weapon in Weapons.keys():
|
||||
if (Weapons[weapon]["number"] == new_weapon_number):
|
||||
client["current_weapon"] = Weapons[weapon]
|
||||
if (settings["game"]["weapons"][weapon]["number"] == new_weapon_number):
|
||||
client["current_weapon"] = settings["game"]["weapons"][weapon].duplicate()
|
||||
break
|
||||
var client_cb3d = find_cb3d_by_internal_id(internal_id)
|
||||
client_cb3d.change_weapon(new_weapon_number)
|
||||
|
@ -190,15 +194,31 @@ func change_weapon(client_id, new_weapon_number):
|
|||
@rpc("any_peer", "call_remote", "reliable")
|
||||
func client_reloading(client_id):
|
||||
var client = clients[client_id]
|
||||
var current_weapon = settings["game"]["weapons"].find_key(find_weapon_by_number(client["current_weapon"]["number"]))
|
||||
var current_weapon_settings = settings["game"]["weapons"][current_weapon]
|
||||
var to_reload = current_weapon_settings["magazine"] - client["current_weapon"]["magazine"]
|
||||
if (to_reload <= client["current_weapon"]["ammo"]):
|
||||
client["current_weapon"]["magazine"] += to_reload
|
||||
client["current_weapon"]["ammo"] -= to_reload
|
||||
var weapons_list = settings["game"]["weapons"]
|
||||
var current_client_weapon = client["current_weapon"]
|
||||
var current_weapon_example = weapons_list.find_key(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
|
||||
reloading_complete(client_id, reload_time)
|
||||
|
||||
func reloading_complete(client_id, reloading_time):
|
||||
await get_tree().create_timer(reloading_time).timeout
|
||||
var client = clients[client_id]
|
||||
if (!client["reloading"]): # if a client has interrupted the reloading
|
||||
return
|
||||
|
||||
var weapons_list = settings["game"]["weapons"]
|
||||
var current_client_weapon = client["current_weapon"]
|
||||
var current_weapon_example = weapons_list.find_key(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:
|
||||
client["current_weapon"]["magazine"] += client["current_weapon"]["ammo"]
|
||||
client["current_weapon"]["ammo"] = 0
|
||||
current_client_weapon["magazine"] += current_client_weapon["ammo"]
|
||||
current_client_weapon["ammo"] = 0
|
||||
##########################################CLIENT#######################
|
||||
|
||||
var player
|
||||
|
|
|
@ -29,7 +29,8 @@ var properties = {
|
|||
ready = false,
|
||||
current_weapon = null, #game_settings["weapons"]["knife"].duplicate(),
|
||||
current_weapon_number = 0,
|
||||
last_shot = 0
|
||||
last_shot = 0,
|
||||
reloading = false
|
||||
}
|
||||
|
||||
var speed = 0
|
||||
|
@ -52,6 +53,8 @@ var magazineLabel
|
|||
func set_properties(props):
|
||||
properties = props
|
||||
$"..".name = "player" + str(properties["internal_id"])
|
||||
if (game_settings != null):
|
||||
change_weapon(properties["current_weapon"]["number"])
|
||||
|
||||
func update_hud():
|
||||
healthBar.value = properties["HP"]
|
||||
|
@ -59,6 +62,7 @@ func update_hud():
|
|||
magazineLabel.text = "Magazine: " + str(properties["current_weapon"]["magazine"])
|
||||
|
||||
func change_weapon(new_weapon_number):
|
||||
properties["reloading"] = false
|
||||
var weapons = $"Head/Camera/Hand".get_children()
|
||||
for weapon in weapons:
|
||||
weapon.visible = false
|
||||
|
|
Loading…
Reference in New Issue