I need some help for the script.lua of my map

I want to write a string of code to achieve some function like this: if one of my units reach the area-A, other units of mine can warp from area-B to area-C.

I know how to use warp(), but I don't know how to write those
Conditional statements for I am not professional in programming. Anybody would like to help me?

or give me some examples, I will try to study them

@ghoustaq_14

You can get the Tower Defense Survival map from the vault and look at the script file to see some code examples that you could learn from.

pfp credit to gieb

@penguin_ hello guy, I have written some codes for this function, but it doesn't work. Can you help fixing them?

Here are the script codes:

local ScenarioUtils = import('/lua/sim/ScenarioUtilities.lua')
local ScenarioFramework = import('/lua/ScenarioFramework.lua')

--units to be restricted
local AIRbuildRestriction = categories.AIR + categories.EXPERIMENTAL + categories.STRATEGIC * (categories.TECH3) + categories.ANTIAIR * (categories.STRUCTURE) + categories.ANTIAIR * (categories.MOBILE)

local rectSizeX = 5
local rectSizeY = 5
local radius = 3.5
local distance = 2
local Color0 = 'FFCEA984' -- CIVILIAN Color
local Color1 = 'FFe80a0a' -- Cybran red
local Color2 = 'ff2e8b57' -- new green
local Color3 = 'FF2929e1' -- UEF blue
local Color4 = 'ffa79602' -- Sera golden
local Color5 = 'ffffffff' -- white
local Color6 = 'FF2F4F4F' -- dark green
local Color7 = 'ff000000' -- black
local Color8 = 'ff901427' -- dark red
local Color9 = 'ff40bf40' -- mid green
local Color10 = 'FF5F01A7' -- dark purple
local Color = {'FFe80a0a', 'ff2e8b57', 'FF2929e1', 'ffa79602', 'ffffffff', 'FF2F4F4F', 'ff000000', 'ff901427', 'ff40bf40', 'FF5F01A7'}

function OnPopulate()
ScenarioUtils.InitializeArmies()
local tblArmy = ListArmies()
for index, army in tblArmy do
ScenarioFramework.AddRestriction(army, AIRbuildRestriction)
end

local self = import('/lua/sim/Entity.lua').Entity()
for k = 1, 99 do
	local entryName = 'Entry_' .. k
	local exitName = 'Exit_' .. k
	local midpointName = 'Midpoint_' .. k
	local entryPos = ScenarioUtils.MarkerToPosition(entryName)
	local exitPos = ScenarioUtils.MarkerToPosition(exitName)
	local MIDPOINTPos = ScenarioUtils.MarkerToPosition(midpointName)
	
	ForkThread(TeleportThread, self, entryPos, exitPos)
	CreateTeleportMaintenanceEffects(entryPos, exitPos)
end

end

TeleportThread = function(self, entryPos, exitPos)
local telUnits
local killUnits
local ferrymanX

while true do
            for INDEX, BRAIN in ArmyBrains do	
	telUnits = BRAIN:GetUnitsAroundPoint( categories.MOBILE, entryPos, 3.5, 'Ally')
	killUnits = BRAIN:GetUnitsAroundPoint( categories.MOBILE, exitPos, 3.5, 'Ally')
	ferrymanX = BRAIN:GetUnitsAroundPoint( categories.ENGINEER, MIDPOINTPos, 5.5, 'Ally')

	
	if ferrymanX ~= nil then
		if table.getn(ferrymanX) >= 1 then
	if telUnits ~= nil then
		if table.getn(telUnits) >= 1 then
			for k, v in telUnits do
				if table.find(v:GetBlueprint().Categories,'AIR')  then	
				#v:GetPosition()
				else
				      local MaxHealthofUnit = v:GetMaxHealth()
				      ForkThread(WarpThread,self, entryPos, exitPos, v)
				end
			end
		end
	end
	if killUnits ~= nil then
		if table.getn(killUnits) >= 1 then
			for k, v in killUnits do
				if table.find(v:GetBlueprint().Categories,'STRUCTURE') then
					v:Destroy()
				end
			end
		end
	end
	end
                    end
	end
	WaitSeconds(3)
end

end

WarpThread = function(self, entryPos, exitPos, v)
local ex, ey, ez = unpack(entryPos)
local tx, ty, tz = unpack(exitPos)

if table.find(v:GetBlueprint().Categories,'MOBILE') or table.find(v:GetBlueprint().Categories,'PROJECTILE') then
       if ex >= tx and ez > tz then
		Warp(v, Vector( tx-rectSizeX+Random(-rectSizeX/0.1, 0)/10, ty, tz-rectSizeX+Random(-rectSizeX/0.1, 0)/10))
		#print('uzoom')
       end
       if ex >= tx and ez <= tz then
		Warp(v, Vector( tx-rectSizeX+Random(-rectSizeX/0.1, 0)/10, ty, tz+rectSizeX+Random(0, rectSizeX/0.1)/10))
		#print('uzoom')
       end
       if ex < tx and ez > tz then
		Warp(v, Vector( tx+rectSizeX+Random(0, rectSizeX/0.1)/10, ty, tz-rectSizeX+Random(-rectSizeX/0.1, 0)/10))
		#print('uzoom')
       end
       if ex < tx and ez <= tz then
		Warp(v, Vector( tx+rectSizeX+Random(0, rectSizeX/0.1)/10, ty, tz+rectSizeX+Random(0, rectSizeX/0.1)/10))
		#print('uzoom')
       end
elseif table.find(v:GetBlueprint().Categories,'STRUCTURE') then
	v:Destroy()
end

end

function CreateTeleportMaintenanceEffects (entryPos, exitPos)
#local ex, ey, ez = unpack(entryPos)
#local tx, ty, tz = unpack(exitPos)

#CreateUnitHPR('uel0001', 1, ex - rectSizeX/2, ey,ez - rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex + rectSizeX/2, ey,ez - rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex - rectSizeX/2, ey,ez + rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex + rectSizeX/2, ey,ez + rectSizeY/2 , -180, 0, 0) 

local entryEnt = import('/lua/sim/Entity.lua').Entity()
local exitEnt = import('/lua/sim/Entity.lua').Entity()
Warp(entryEnt, Vector(entryPos[1],entryPos[2] + 0.2,entryPos[3] ))
Warp( exitEnt, Vector(exitPos[1],exitPos[2] + 0.2,exitPos[3] ))	

end

function CreateTeleportMaintenanceEffects (entryPos, exitPos)
#local ex, ey, ez = unpack(entryPos)
#local tx, ty, tz = unpack(exitPos)

#CreateUnitHPR('uel0001', 1, ex - rectSizeX/2, ey,ez - rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex + rectSizeX/2, ey,ez - rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex - rectSizeX/2, ey,ez + rectSizeY/2 , -180, 0, 0) 
#CreateUnitHPR('uel0001', 1, ex + rectSizeX/2, ey,ez + rectSizeY/2 , -180, 0, 0) 

local entryEnt = import('/lua/sim/Entity.lua').Entity()
local exitEnt = import('/lua/sim/Entity.lua').Entity()
Warp(entryEnt, Vector(entryPos[1],entryPos[2] + 0.2,entryPos[3] ))
Warp( exitEnt, Vector(exitPos[1],exitPos[2] + 0.2,exitPos[3] ))	

end

function OnStart(self)
end

The code style is just all messy in this forum. Just use pastebin.com to share your code. Or even better, GitHub.

@ghoustaq_14
I suggest you join the FAF Discord, get the modder role in the #role-selection channel there, and then check out the #modification-resources channel and ask more specific questions in the #modding-general channel.

pfp credit to gieb

@magge Hi buddy, I have shared it on GitHub. Do me a favor please😊

Click on this link below:
https://github.com/Ghoustaq-14/code-share-for-FAF/blob/main/a warp-test

@magge said in I need some help for the script.lua of my map:

The code style is just all messy in this forum. Just use pastebin.com to share your code. Or even better, GitHub.

hey buddy! Do you have any idea of my codes? I don't know what's wrong with them🙄 Just give me some tips.Thanks so much😊

What code editor are you using as we do have a Intelisense plugin that's being worked on for faf which is located on the faforever GitHub

"The needs of the many outweigh the needs of the few" - Spock

This post is deleted!

@rowey said in I need some help for the script.lua of my map:

What code editor are you using as we do have a Intelisense plugin that's being worked on for faf which is located on the faforever GitHub

I use SciTE. Do you have a better choice?

Majority use Visual Studio Code for development as that's what our Intelisense is created for

"The needs of the many outweigh the needs of the few" - Spock

@rowey said in I need some help for the script.lua of my map:

Majority use Visual Studio Code for development as that's what our Intelisense is created for

OK, I have installed Visual Studio Code, can you tell me where to download the "Intelisense plugin"?😊 I cannot wait to try it.

https://github.com/FAForever/fa-lua-vscode-extension

"The needs of the many outweigh the needs of the few" - Spock

@Ghoustaq_14 Any other question feel free to reach out on the discord in adding yourself a role in #role-selection and give your self the mapping role and all the experience people live their and will be bale to aid you further

"The needs of the many outweigh the needs of the few" - Spock