Hi guys,
I’m having issues inside a function which sets a ?cancelable variable inside of a map.
Everything sets up and runs fine to a Print statement, Print(“Fail Trigger fully set”), which also outputs to the UEFN log. This happens inside the Start(Agent_Q:?agent) function
The game client then becomes unresponsive, having to return to the lobby to continue or having it timeout. UEFN then logs that the connection timed out:
LogNet: Warning: UNetConnection::Tick: Connection TIMED OUT. Closing connection…
I have had something similar working recently, so I don’t think it will be an actual limit with the engine.
Triggered (potentially) by a Player agent.
Start(Agent_Q:?agent):logic=
Print("Start")
if(Agent := Agent_Q?):
Print("Found Agent")
if(timer := acc_timer_device[GetDevice("timer")?]):
if(zone := acc_device[GetDevice("zone")?]):
if(timer_d := timer_device[timer.GetDevice()]):
fail_trigger_result := SetFailTrigger(timer)
if(fail_trigger_result = true):
Print("Fail Trigger fully set")
Print("Trying SetPassTrigger")
else:
Print("Failed to fully set Fail Trigger")
return false
pass_trigger_result := SetPassTrigger(zone)
if(pass_trigger_result = true):
Print("Pass Trigger fully set")
spawn{Timer_Start(Agent)}
Print("Spawned Timer")
timer_d.Reset()
Print("Timer Reset")
timer_d.Start()
Print("Timer Start")
return true
else:
Print("Failed to fully set Pass Trigger")
return false
else:
Print("Failed to cast timer_d")
return false
else:
Print("Failed to find zone")
return false
else:
Print("Failed to find timer")
return false
else:
Print("Failed to find Agent")
return false
Fetches a timer_device, subscribes an event and saves its cancelable
SetFailTrigger(device:acc_device)<transacts>:logic=
Print("Fail Trigger")
if(timer_d := acc_timer_device[device].GetDevice()):
Print("Found timer_d")
set_cancelable_result := *SetCancelable*(device.CancelableID, timer_d.FailureEvent.Subscribe(Timer_Expire))
if(set_cancelable_result = true):
Print("Cancelable Set - {device.CancelableID}")
return true
else:
Print("Failed to set timer failureevent")
return false
else:
Print("Failed to cast timer")
return false
Check there is a valid slot to register a cancelable, and do so
SetCancelable(new_ID:int, C:cancelable)<transacts>:logic=
Print("Set Cancelable")
if(new_ID < CancelableCount):
Print("Found Cancelable")
if(set ActiveCancelables[new_ID] = option{C}):
Print("Cancelable set to new value - {new_ID}")
return true
else:
Print("Failed to set new value")
return false
else:
Print("Failed to find Cancelable with ID {new_ID}")
return false