Code Block 1:
SET Player.SelIndex 0 ; init player selection
SET M0.Pos.Y 16 ; move speed
SET M1.Rot.X 4 ; turn strength
SET M1.Rot.Z 0
SET M1.Rot.Y 0 ; mode: 0 = go, 1 = follow
SET M0.Pos.X Bot.Pos.X ; anchor/start X
SET M0.Pos.Z Bot.Pos.Z ; anchor/start Z
SUB R0 Player.Pos.X M0.Pos.X
SUB R1 Player.Pos.Z M0.Pos.Z
SET M0.Rot.X R0 ; m-line dir X
SET M0.Rot.Z R1 ; m-line dir Z
MUL R2 R0 R0
MUL R3 R1 R1
ADD R2 R2 R3
SQRT R2 R2
DIV M1.Pos.Y 1 R2 ; inverse m-line length
SET M1.Pos.Z 0.25 ; m-line tolerance
SET M1.Pos.X 0 ; stored hit distance
LABEL Loop
SET Player.SelIndex M0.Col.R
SUB R0 Player.Pos.X M0.Pos.X
SUB R1 Player.Pos.Z M0.Pos.Z
SET M0.Rot.X R0
SET M0.Rot.Z R1
MUL R2 R0 R0
MUL R4 R1 R1
ADD R2 R2 R4
SQRT R2 R2
DIV M1.Pos.Y 1 R2
SUB R0 Player.Pos.X Bot.Pos.X
SUB R1 Player.Pos.Z Bot.Pos.Z
ATAN2 R2 R0 R1
MUL R3 R0 R0
MUL R4 R1 R1
ADD R3 R3 R4
EQUAL R4 M1.Rot.Y 0
IF R4 MODE_GO
GOTO MODE_FOLLOW
LABEL MODE_GO
IF F.Trg.Active HIT
SUB R0 F.Pos.X Bot.Pos.X
SUB R1 F.Pos.Z Bot.Pos.Z
ATAN2 R5 R0 R1
SUB R0 R2 R5
ADD R0 R0 180
MOD R0 R0 360
LESS R1 R0 0
IF R1 GO_ADD360
GOTO GO_READY
LABEL GO_ADD360
ADD R0 R0 360
LABEL GO_READY
SUB R0 R0 180
SUB R1 0 R0
LESS R4 R0 0
IF R4 GO_NEG
SET R1 R0
LABEL GO_NEG
LESS R4 R1 3
IF R4 MOVE
MUL R1 240 M1.Rot.X
MUL R1 R1 DeltaTime
LESS R4 R0 0
IF R4 GO_TURN_L
ADD Bot.Rot.Y Bot.Rot.Y R1
GOTO MOVE
LABEL GO_TURN_L
SUB Bot.Rot.Y Bot.Rot.Y R1
GOTO MOVE
LABEL HIT
SET M1.Rot.Y 1
SET M0.Pos.X Bot.Pos.X
SET M0.Pos.Z Bot.Pos.Z
SET M1.Pos.X R3
GOTO Loop
LABEL MODE_FOLLOW
IF F.Trg.Active AVOID_FRONT
GOTO CHECK_LEAVE
LABEL CHECK_LEAVE
SUB R0 Bot.Pos.X M0.Pos.X
SUB R1 Bot.Pos.Z M0.Pos.Z
MUL R2 M0.Rot.X R1
MUL R4 M0.Rot.Z R0
SUB R2 R2 R4
MUL R2 R2 M1.Pos.Y
SUB R5 0 M1.Pos.Z
GREATER R6 R2 R5
LESS R7 R2 M1.Pos.Z
AND R6 R6 R7
SUB R0 F.Pos.X Bot.Pos.X
SUB R1 F.Pos.Z Bot.Pos.Z
SUB R4 Player.Pos.X Bot.Pos.X
SUB R5 Player.Pos.Z Bot.Pos.Z
MUL R0 R0 R5
MUL R1 R1 R4
SUB R0 R0 R1
LESS R7 R0 0
AND R6 R6 R7
IF R6 LEAVE
NOT R0 L.Trg.Active
IF R0 WF_SEARCH
GOTO WF_PRESS
LABEL WF_PRESS
MUL R0 18 M1.Rot.X
MUL R0 R0 DeltaTime
SUB Bot.Rot.Y Bot.Rot.Y R0
GOTO MOVE
LABEL WF_SEARCH
MUL R0 520 M1.Rot.X
MUL R0 R0 DeltaTime
ADD Bot.Rot.Y Bot.Rot.Y R0
GOTO MOVE
LABEL AVOID_FRONT
MUL R0 720 M1.Rot.X
MUL R0 R0 DeltaTime
SUB Bot.Rot.Y Bot.Rot.Y R0
GOTO NO_MOVE EB Spark
LABEL LEAVE
SET M1.Rot.Y 0
GOTO Loop
LABEL MOVE
SUB R0 F.Pos.X Bot.Pos.X
SUB R1 F.Pos.Z Bot.Pos.Z
ATAN2 R5 R0 R1
SIN R0 R5
COS R1 R5
MUL R0 R0 M0.Pos.Y
MUL R1 R1 M0.Pos.Y
MUL R0 R0 DeltaTime
MUL R1 R1 DeltaTime
ADD Bot.Pos.X Bot.Pos.X R0
ADD Bot.Pos.Z Bot.Pos.Z R1
SLEEP 0
GOTO Loop
LABEL NO_MOVE EB Spark
SLEEP 0
GOTO Loop
**Code Block 2: **
LABEL Get NearestV2 EB
SET R6 1e+20
SET R4 255
SET R7 0
LABEL Loop
LESS R5 R7 Player.Count
NOT R5 R5
IF R5 Done
SET Player.SelIndex R7
EQUAL R5 Player.Valid 1
NOT R5 R5
IF R5 Next
SUB R0 Player.Pos.X Bot.Pos.X
SUB R1 Player.Pos.Y Bot.Pos.Y
SUB R2 Player.Pos.Z Bot.Pos.Z
MUL R0 R0 R0
MUL R1 R1 R1
MUL R2 R2 R2
ADD R3 R0 R1
ADD R3 R3 R2
LESS R5 R3 R6
IF R5 Update
LABEL Next
ADD R7 R7 1
GOTO Loop
LABEL Update
SET R6 R3
SET R4 Player.Id
GOTO Next
LABEL Done
SET M0.Col.R R4
SLEEP 0
GOTO Get NearestV2 EB
if it doesnt work, try giving it every connection input and outpuit possible
**Setup Guide & Tutorial on my Youtube: **
https://youtu.be/j2FzPHlohhs?si=YBtemlh_ebwq66vu
This tutorial will guide you through how to set up your very own path finder.
Code can be found in the discord:
https://discord.com/channels/329735841067040771/1480716187288731769
Code used in this video:
Code Block 1: (pathfinding)
SET Player.SelIndex 0 ; init player selection
SET M0.Pos.Y 16 ; ...

