72 lines
2.2 KiB
GDScript
72 lines
2.2 KiB
GDScript
extends MultiplayerSynchronizer
|
|
|
|
var direction: Vector2
|
|
|
|
signal drop
|
|
signal switch_weapon(to_slot: StringName)
|
|
signal fire_begin
|
|
signal fire_end
|
|
signal alternate_state
|
|
signal switch_firemode
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if not is_multiplayer_authority(): return
|
|
direction = Input.get_vector("plr_strafe_r","plr_strafe_l", "plr_back","plr_forward")
|
|
|
|
if event.is_action_pressed("plr_ult"):
|
|
switch_on_server.rpc_id(1,"ultimate")
|
|
elif event.is_action_pressed("plr_bomb"):
|
|
switch_on_server.rpc_id(1,"bomb")
|
|
elif event.is_action_pressed("plr_primary"):
|
|
switch_on_server.rpc_id(1,"primary")
|
|
elif event.is_action_pressed("plr_active_first"):
|
|
switch_on_server.rpc_id(1,"ability_first")
|
|
elif event.is_action_pressed("plr_active_second"):
|
|
switch_on_server.rpc_id(1,"ability_second")
|
|
elif event.is_action_pressed("plr_active_third"):
|
|
switch_on_server.rpc_id(1,"ability_third")
|
|
elif event.is_action_pressed("plr_secondary"):
|
|
switch_on_server.rpc_id(1,"secondary")
|
|
elif event.is_action_pressed("plr_knife"):
|
|
switch_on_server.rpc_id(1,"knife")
|
|
|
|
if event.is_action_pressed("plr_fire"):
|
|
fire_on_server.rpc_id(1,false)
|
|
if event.is_action_released("plr_fire"):
|
|
fire_on_server.rpc_id(1,true)
|
|
if event.is_action_pressed("plr_scope"):
|
|
alternate_state_on_server.rpc_id(1)
|
|
if event.is_action_pressed("plr_firemode"):
|
|
switch_firemode_on_server.rpc_id(1)
|
|
|
|
if event.is_action_pressed("plr_drop"):
|
|
drop_on_server.rpc_id(1)
|
|
|
|
@rpc("authority","call_local","reliable")
|
|
func switch_on_server(slot: StringName) -> void:
|
|
if not multiplayer.is_server(): return
|
|
switch_weapon.emit(slot)
|
|
|
|
@rpc("authority","call_local","reliable")
|
|
func drop_on_server() -> void:
|
|
if not multiplayer.is_server(): return
|
|
drop.emit()
|
|
|
|
@rpc("authority","call_local","reliable")
|
|
func fire_on_server(end: bool) -> void:
|
|
if not multiplayer.is_server(): return
|
|
if end:
|
|
fire_end.emit()
|
|
else:
|
|
fire_begin.emit()
|
|
|
|
@rpc("authority","call_local","reliable")
|
|
func alternate_state_on_server() -> void:
|
|
if not multiplayer.is_server(): return
|
|
alternate_state.emit()
|
|
|
|
@rpc("authority","call_local","reliable")
|
|
func switch_firemode_on_server() -> void:
|
|
if not multiplayer.is_server(): return
|
|
switch_firemode.emit()
|
|
|