Added player identification
This commit is contained in:
@ -2,3 +2,6 @@ extends Node
|
||||
|
||||
var camera: Camera3D
|
||||
var player: Player
|
||||
var instance_id := OS.get_process_id() % 4
|
||||
var username := "user%d" % instance_id
|
||||
var account_id: String
|
||||
|
@ -1,21 +1,28 @@
|
||||
extends PacketHandler
|
||||
|
||||
var auth_token: String
|
||||
var instance_id := OS.get_process_id() % 4
|
||||
var username := "user%d" % instance_id
|
||||
|
||||
func _ready():
|
||||
DisplayServer.window_set_title(username)
|
||||
DisplayServer.window_set_title(Global.username)
|
||||
send_login()
|
||||
|
||||
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
|
||||
if data[0] != 0:
|
||||
print("[Client] Login failed.")
|
||||
var buffer := StreamPeerBuffer.new()
|
||||
buffer.data_array = data
|
||||
|
||||
var error := buffer.get_8()
|
||||
if error != 0:
|
||||
print("[%s] Login failed." % Global.username)
|
||||
return
|
||||
|
||||
print("[Client] Login succeeded.")
|
||||
auth_token = data.slice(1).get_string_from_ascii()
|
||||
print("[Client] Auth token: %s" % auth_token)
|
||||
Global.account_id = buffer.get_string()
|
||||
auth_token = buffer.get_string()
|
||||
|
||||
print("[%s] Login succeeded." % Global.username)
|
||||
print("[%s] ID: %s" % [Global.username, Global.account_id])
|
||||
print("[%s] Auth token: %s" % [Global.username, auth_token])
|
||||
|
||||
DisplayServer.window_set_title("%s - %s" % [Global.username, Global.account_id])
|
||||
|
||||
func send_login():
|
||||
if is_logged_in():
|
||||
@ -24,9 +31,9 @@ func send_login():
|
||||
var password := "password"
|
||||
var buffer := StreamPeerBuffer.new()
|
||||
buffer.put_8(Packet.LOGIN)
|
||||
buffer.put_data(JSON.stringify([username, password]).to_utf8_buffer())
|
||||
buffer.put_data(JSON.stringify([Global.username, password]).to_utf8_buffer())
|
||||
%Client.socket.put_packet(buffer.data_array)
|
||||
print("[Client] Connecting...")
|
||||
print("[%s] Connecting..." % Global.username)
|
||||
|
||||
func is_logged_in() -> bool:
|
||||
return auth_token != ""
|
@ -6,21 +6,24 @@ func _ready():
|
||||
assert(player_scene)
|
||||
|
||||
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
|
||||
var player_name := data.get_string_from_utf8()
|
||||
print(player_name)
|
||||
var buffer := StreamPeerBuffer.new()
|
||||
buffer.data_array = data
|
||||
|
||||
var player_id := buffer.get_string()
|
||||
var player_name := buffer.get_string()
|
||||
|
||||
var position_data := data.slice(player_name.length() + 1)
|
||||
var server_position := Vector3()
|
||||
server_position.x = position_data.decode_float(0)
|
||||
server_position.y = position_data.decode_float(4)
|
||||
server_position.z = position_data.decode_float(8)
|
||||
print(server_position)
|
||||
server_position.x = buffer.get_float()
|
||||
server_position.y = buffer.get_float()
|
||||
server_position.z = buffer.get_float()
|
||||
|
||||
print("[%s] Add player: %s %s @ %v" % [Global.username, player_id, player_name, server_position])
|
||||
|
||||
var player := spawn_player()
|
||||
player.position = server_position
|
||||
player.set_character_name(player_name)
|
||||
|
||||
if false:
|
||||
if player_id == Global.account_id:
|
||||
Global.player = player
|
||||
var controller := PlayerController.new()
|
||||
controller.character = Global.player
|
@ -6,8 +6,9 @@ enum Packet {
|
||||
PING = 1,
|
||||
LOGIN = 2,
|
||||
LOGOUT = 3,
|
||||
PLAYER_STATE = 10,
|
||||
PLAYER_MOVE = 11,
|
||||
PLAYER_ADD = 10,
|
||||
PLAYER_REMOVE = 11,
|
||||
PLAYER_MOVE = 12,
|
||||
}
|
||||
|
||||
@export var packet_type: Packet
|
||||
|
@ -29,6 +29,6 @@ shape = SubResource("CapsuleShape3D_2f50n")
|
||||
[node name="Health" parent="." instance=ExtResource("2_np5ag")]
|
||||
|
||||
[node name="Label" type="Label3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.8, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
billboard = 1
|
||||
text = "ABC"
|
||||
text = "Player"
|
||||
|
@ -4,8 +4,8 @@
|
||||
[ext_resource type="Script" path="res://network/Client.gd" id="2_1ofik"]
|
||||
[ext_resource type="Script" path="res://network/Ping.gd" id="3_4h5la"]
|
||||
[ext_resource type="Script" path="res://network/Login.gd" id="4_k8n1i"]
|
||||
[ext_resource type="Script" path="res://network/PlayerAdd.gd" id="5_1dcs7"]
|
||||
[ext_resource type="PackedScene" uid="uid://2lcnu3dy54lx" path="res://player/Player.tscn" id="5_22pku"]
|
||||
[ext_resource type="Script" path="res://network/PlayerState.gd" id="5_wttxq"]
|
||||
[ext_resource type="Environment" uid="uid://dixa0yso2s1u3" path="res://world/Environment.tres" id="8_5uta8"]
|
||||
[ext_resource type="CameraAttributesPractical" uid="uid://b835orxyqq6w5" path="res://camera/CameraAttributes.tres" id="9_w4cdu"]
|
||||
[ext_resource type="PackedScene" uid="uid://tgmbtt7u172g" path="res://world/Arena.blend" id="10_cje7b"]
|
||||
@ -46,8 +46,8 @@ packet_type = 2
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
|
||||
[node name="PlayerState" type="Node" parent="Client"]
|
||||
script = ExtResource("5_wttxq")
|
||||
[node name="PlayerAdd" type="Node" parent="Client"]
|
||||
script = ExtResource("5_1dcs7")
|
||||
player_scene = ExtResource("5_22pku")
|
||||
packet_type = 10
|
||||
|
||||
|
Reference in New Issue
Block a user