FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login

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

    Scheduled Pinned Locked Moved Mapping
    17 Posts 4 Posters 919 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      Ghoustaq_14
      last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • G
        Ghoustaq_14
        last edited by

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

        Anachronism_A 1 Reply Last reply Reply Quote 0
        • Anachronism_A
          Anachronism_ @Ghoustaq_14
          last edited by

          @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

          G 1 Reply Last reply Reply Quote 0
          • G
            Ghoustaq_14 @Anachronism_
            last edited by

            @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

            Anachronism_A 1 Reply Last reply Reply Quote 0
            • maggeM
              magge Global Moderator
              last edited by

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

              Join a FAFtastic Team

              G 2 Replies Last reply Reply Quote 0
              • Anachronism_A
                Anachronism_ @Ghoustaq_14
                last edited by

                @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

                1 Reply Last reply Reply Quote 0
                • G
                  Ghoustaq_14 @magge
                  last edited by

                  @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

                  1 Reply Last reply Reply Quote 0
                  • G
                    Ghoustaq_14 @magge
                    last edited by

                    @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😊

                    1 Reply Last reply Reply Quote 0
                    • maggeM
                      magge Global Moderator
                      last edited by

                      Sorry, I am not familiar with LUA.

                      Join a FAFtastic Team

                      1 Reply Last reply Reply Quote 0
                      • RoweyR
                        Rowey
                        last edited by

                        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

                        G 2 Replies Last reply Reply Quote 0
                        • G
                          Ghoustaq_14 @Rowey
                          last edited by

                          This post is deleted!
                          1 Reply Last reply Reply Quote 0
                          • G
                            Ghoustaq_14 @Rowey
                            last edited by

                            @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?

                            1 Reply Last reply Reply Quote 0
                            • RoweyR
                              Rowey
                              last edited by

                              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

                              G 1 Reply Last reply Reply Quote 0
                              • G
                                Ghoustaq_14 @Rowey
                                last edited by

                                @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.

                                1 Reply Last reply Reply Quote 0
                                • RoweyR
                                  Rowey
                                  last edited by Rowey

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

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

                                  G 1 Reply Last reply Reply Quote 0
                                  • G
                                    Ghoustaq_14 @Rowey
                                    last edited by

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

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

                                    Thank you for helping buddy👏 ,you are so kind

                                    1 Reply Last reply Reply Quote 0
                                    • RoweyR
                                      Rowey
                                      last edited by

                                      @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

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post