hi, i want to show live score on the two screens of two players who play my fighting game ;)
i have two problems here:
1- sometimes character feels the punch (it shows with animation), but i dont see any score for that.
2- sometimes it shows two point for one punch (i disable monitoring/monitarable in animation player when the punch shape goes back, so there is no chance that this problem happens when shape is going back or something like that)
and i should mention that there isn't any problem in offline mode and it works perfectly.
this is the script for counting and showing scores on screen:
extends Node2D
onready var player1 = get_node("Player01")
onready var player2 = get_node("Player02")
onready var p1score = get_node("P01Score/Point01")
onready var p2score = get_node("P02Score/Point02")
onready var game_countdown = get_node("GameCountDown")
onready var timer_label = get_node("TimerLabel")
var count1 = 0
var count2 = 0
var minutes = 1
var seconds = 60
func _ready():
game_countdown.start()
if (get_tree().is_network_server()):
player2.set_network_master(get_tree().get_network_connected_peers()[0])
else:
player2.set_network_master(get_tree().get_network_unique_id())
print("unique id: ",get_tree().get_network_unique_id())
func _process(delta):
score_update()
rset("count1", player2.counter)
rset("count2", player1.counter)
sync func score_update():
if get_tree().is_network_server():
if str(player2.counter) != p1score.text:
count1 = player2.counter #counter which i get from collision function
p1score.set_text(str(player2.counter))
else:
if str(player1.counter) != p2score.text:
count2 = player1.counter #counter which i get from collision function
p2score.set_text(str(player1.counter))
func _on_GameCountDown_timeout(): #this one is just a countdown for the game
if seconds >=0 && minutes == 1:
seconds -= 1
timer_label.set_text(str(minutes," :",seconds))
if seconds >=0 && minutes == 0:
seconds -= 1
timer_label.set_text(str(minutes," :",seconds))
if seconds == -1 && minutes == 1:
seconds = 59
minutes = 0
timer_label.set_text(str(minutes," :",seconds))
and if you curious about that how scores send to script above, i use function like this one in players scripts:
sync func _on_Fist_area_entered(area):
if head_fr.get_collision_mask() == 2 && block == 0:
animations.play("Hurt")
counter+=1 # we get this one for counting score
THANK YOU :)