Thread Rating:
  • 29 Vote(s) - 2.59 Average
  • 1
  • 2
  • 3
  • 4
  • 5
FRONTLINE MESH
#17
Map ID is 376. I had to put it in like 8 places in that pvp task lua. Course this was after i removed my mesh. So i have to get my mesh rebuilt and try again but it did at least detect pvp it seemed.

Also had to change a gate check. Its not 100% but here is where I got to. Still need a solid mesh. Mine is being weird it works if i get to each of my grind points but that jump at the beginning is pissing it off.

Code:
ffxiv_task_pvp = inheritsFrom(ml_task)
ffxiv_task_pvp.name = "LT_PVP"

function ffxiv_task_pvp.Create()
    local newinst = inheritsFrom(ffxiv_task_pvp)
    
    --ml_task members
    newinst.valid = true
    newinst.completed = false
    newinst.subtask = nil
    newinst.auxiliary = false
    newinst.process_elements = {}
    newinst.overwatch_elements = {}
    
    --ffxiv_task_pvp members
    newinst.name = "LT_PVP"
    newinst.targetid = 0
    newinst.queueTimer = 0
    newinst.windowTimer = 0
    newinst.afkTimer = 0
    newinst.lastPos = {}
    newinst.fleeing = false
    newinst.targetPrio = ""
    newinst.leaveTimer = 0
    
    -- set the correct starting state in case we're already in a pvp map and reload lua
    if (Player.localmapid == 376 or Player.localmapid == 337 or Player.localmapid == 175 or Player.localmapid == 336) then
        newinst.state = "DUTY_STARTED"
    else
        newinst.state = ""
    end
    newinst.targetTimer = 0
    newinst.startTimer = 0
    
    --this is the targeting function that will be used for the generic KillTarget task
    newinst.targetFunction = GetPVPTarget
    
    return newinst
end

c_joinqueuepvp = inheritsFrom( ml_cause )
e_joinqueuepvp = inheritsFrom( ml_effect )
function c_joinqueuepvp:evaluate()
    return (( Player.localmapid ~= 376 and  Player.localmapid ~= 337 and Player.localmapid ~= 175 and Player.localmapid ~= 336) and
                TimeSince(ml_task_hub:CurrentTask().queueTimer) > math.random(30000,35000) and
                (ml_task_hub:CurrentTask().state == "COMBAT_ENDED" or
                ml_task_hub:CurrentTask().state == ""))
end
function e_joinqueuepvp:execute()
    if not ControlVisible("ContentsFinder") then
        ActionList:Cast(33,0,10)
        ml_task_hub:CurrentTask().windowTimer = ml_global_information.Now
    elseif (TimeSince(ml_task_hub:CurrentTask().windowTimer) > math.random(4000,5000)) then
        PressDutyJoin()
        ml_task_hub:CurrentTask().state = "WAITING_FOR_DUTY"
    end
end

c_pressleave = inheritsFrom( ml_cause )
c_pressleave.throttle = 1000
e_pressleave = inheritsFrom( ml_effect )
function c_pressleave:evaluate()
    return ((Player.localmapid == 376 or Player.localmapid == 337 or Player.localmapid == 336 or Player.localmapid == 175) and ControlVisible("ColosseumRecord"))
end
function e_pressleave:execute()
    -- reset pvp task state since it doesn't get terminated/reinstantiated
    if (gPVPDelayLeave == "1" and ml_task_hub:CurrentTask().leaveTimer == 0) then
        ml_task_hub:CurrentTask().leaveTimer = ml_global_information.Now + math.random(15000,25000)
    elseif (gPVPDelayLeave == "0" or ml_global_information.Now > ml_task_hub:CurrentTask().leaveTimer) then
        ml_task_hub:CurrentTask().state = "COMBAT_ENDED"
        ml_task_hub:CurrentTask().targetid = 0
        ml_task_hub:CurrentTask().startTimer = 0
        ml_task_hub:CurrentTask().leaveTimer = 0
        ml_task_hub:CurrentTask().lastPos = {}
        ml_task_hub:CurrentTask().afkTimer = ml_global_information.Now + math.random(300000,600000)
        ml_task_hub:CurrentTask().queueTimer = ml_global_information.Now
        Player:Stop()
        PressLeaveColosseum()
    end
end

c_startcombat = inheritsFrom( ml_cause )
e_startcombat = inheritsFrom( ml_effect )
function c_startcombat:evaluate()
    -- make sure we don't go back into combat state after the leave button is pressed
    if ml_task_hub:CurrentTask().state == "COMBAT_ENDED"  or ml_task_hub:CurrentTask().state == "COMBAT_STARTED" then return false end
    
    -- just in case we restart lua while in pvp combat
    if ((Player.localmapid == 376 or Player.localmapid == 337 or Player.localmapid == 336 or Player.localmapid == 175) and (Player.incombat or InCombatRange(ml_task_hub:CurrentTask().targetid))) then
        return true
    end

    if ((Player.localmapid == 376 or Player.localmapid == 337 or Player.localmapid == 336 or Player.localmapid == 175) and ml_task_hub:CurrentTask().state == "DUTY_STARTED") then
        local party = EntityList("myparty")
        local maxdistance = 0
        if (ValidTable(party)) then
            local FLGateCheck = 0
            local myPos = Player.pos
            local i, e = next(party)
            while i ~= nil and e ~= nil do
                -- if any party members are in combat then start combat
                if e.incombat then return true end

                if (Player.localmapid == 376) then
                    FLGateCheck = 333
                else
                    FLGateCheck = 33
                end

                -- otherwise check to see if any party members have crossed the gate and set a random timer
                if     (myPos.x > FLGateCheck and e.pos.x < FLGateCheck) or
                    (myPos.x < (-1 * FLGateCheck) and e.pos.x > (-1 * FLGateCheck))
                then
                    if (ml_task_hub:CurrentTask().startTimer == 0) then
                        ml_task_hub:CurrentTask().startTimer = ml_global_information.Now + math.random(500,1500)
                    elseif (ml_global_information.Now > ml_task_hub:CurrentTask().startTimer) then
                        return true
                    end
                end
            i, e = next(party, i)
            end
        end
            
        return false
    end
    
    return false
end
function e_startcombat:execute()
    ml_task_hub:CurrentTask().state = "COMBAT_STARTED"
end

c_movetotargetpvp = inheritsFrom( ml_cause )
e_movetotargetpvp = inheritsFrom( ml_effect )
function c_movetotargetpvp:evaluate()
    if (ml_task_hub:CurrentTask().targetid and ml_task_hub:CurrentTask().targetid ~= 0
        and Player.alive and not ml_task_hub:CurrentTask().fleeing and not HasBuff(Player.id,3)
        and not HasBuff(Player.id,280) and not HasBuff(Player.id,13))
    then
        local target = EntityList:Get(ml_task_hub:CurrentTask().targetid)
        return ValidTable(target) and not InCombatRange(target.id)
    end
    
    return false
end
function e_movetotargetpvp:execute()
    local target = EntityList:Get(ml_task_hub:CurrentTask().targetid)
    if ValidTable(target) then
        local gotoPos = target.pos
        ml_debug( "Moving to ("..tostring(gotoPos.x)..","..tostring(gotoPos.y)..","..tostring(gotoPos.z)..")")    
        local PathSize = Player:MoveTo( tonumber(gotoPos.x),tonumber(gotoPos.y),tonumber(gotoPos.z),1.0,
                                        true,gRandomPaths=="1")
    end
end

c_attargetpvp = inheritsFrom( ml_cause )
e_attargetpvp = inheritsFrom( ml_effect )
function c_attargetpvp:evaluate()
    if (Player:IsMoving() and not ml_task_hub:CurrentTask().fleeing) then
        if ml_global_information.AttackRange > 20 then
            local target = EntityList:Get(ml_task_hub:ThisTask().targetid)
            if ValidTable(target) then
                local rangePercent = tonumber(gCombatRangePercent) * 0.01
                return InCombatRange(ml_task_hub:ThisTask().targetid) and target.distance2d < (ml_global_information.AttackRange * rangePercent)
            end
        else
            return InCombatRange(ml_task_hub:ThisTask().targetid)
        end
    end
    return false
end
function e_attargetpvp:execute()
    Player:Stop()
end

c_fleepvp = inheritsFrom( ml_cause )
e_fleepvp = inheritsFrom( ml_effect )
function c_fleepvp:evaluate()
    if (gPVPFlee == "0" or Player:IsMoving()) then
        return false
    end

    local enemy = GetNearestAggro()
    if (ValidTable(enemy)) then
        if (IsRanged(Player.job) and InCombatRange(enemy.id)) then
            ml_task_hub:CurrentTask().fleeing = true
            return true
        end
    end
    
    gPVPTargetOne = ml_task_hub:CurrentTask().targetPrio
    ml_task_hub:CurrentTask().fleeing = false
    return false
end
function e_fleepvp:execute()
    -- temporarily target nearest regardless of actual priority
    ml_task_hub:CurrentTask().targetPrio = gPVPTargetOne
    gPVPTargetOne = strings[gCurrentLanguage].nearest
    ml_task_hub:CurrentTask().targetid = 0
    local myPos = Player.pos
    local newPos = NavigationManager:GetRandomPointOnCircle(myPos.x, myPos.y, myPos.z,10,20)
    if (ValidTable(newPos)) then
        Player:MoveTo(newPos.x, newPos.y, newPos.z, 0.5)
    end
end

c_afkmove = inheritsFrom( ml_cause )
e_afkmove = inheritsFrom( ml_effect )
function c_afkmove:evaluate()
    return     gAFKMove == "1" and
            ml_global_information.Now > ml_task_hub:CurrentTask().afkTimer and
            (TableSize(ml_task_hub:CurrentTask().lastPos) == 0 or
            Distance2D(Player.pos.x, Player.pos.y, ml_task_hub:CurrentTask().lastPos.x, ml_task_hub:CurrentTask().lastPos.y) < 1)
end
function e_afkmove:execute()
    local myPos = Player.pos
    local newPos = NavigationManager:GetRandomPointOnCircle(myPos.x, myPos.y, myPos.z,0.5,1)
    
    if (ValidTable(newPos)) then
        Player:MoveTo(newPos.x, newPos.y, newPos.z, 0.5)
    
        if ml_task_hub:CurrentTask().state == "WAITING_FOR_DUTY" then
            ml_task_hub:CurrentTask().afkTimer = ml_global_information.Now + math.random(300000,600000)
        elseif ml_task_hub:CurrentTask().state == "DUTY_STARTED" then
            ml_task_hub:CurrentTask().afkTimer = ml_global_information.Now + math.random(30000,60000)
        end
        
        ml_task_hub:CurrentTask().lastPos = newPos
    end
end

function ffxiv_task_pvp:Init()
    --init Process() cnes
    --local ke_fleePVP = ml_element:create( "FleePVP", c_fleepvp, e_fleepvp, 20 )
    --self:add(ke_fleePVP, self.process_elements)
    
    local ke_atTargetPVP = ml_element:create( "AtTarget", c_attargetpvp, e_attargetpvp, 15 )
    self:add(ke_atTargetPVP, self.process_elements)
    
    local ke_moveToTargetPVP = ml_element:create( "MoveToTargetPVP", c_movetotargetpvp, e_movetotargetpvp, 10 )
    self:add(ke_moveToTargetPVP, self.process_elements)
    
    local ke_pressConfirm = ml_element:create( "ConfirmDuty", c_pressconfirm, e_pressconfirm, 10 )
    self:add(ke_pressConfirm, self.process_elements)
    
    local ke_pressLeave = ml_element:create( "LeaveColosseum", c_pressleave, e_pressleave, 10 )
    self:add(ke_pressLeave, self.process_elements)
    
    local ke_pressJoin = ml_element:create( "JoinDutyFinder", c_joinqueuepvp, e_joinqueuepvp, 10 )
    self:add(ke_pressJoin, self.process_elements)
    
    local ke_startCombat = ml_element:create( "StartCombat", c_startcombat, e_startcombat, 5 )
    self:add(ke_startCombat, self.process_elements)
    
    local ke_dead = ml_element:create( "Dead", c_dead, e_dead, 5 )
    self:add( ke_dead, self.process_elements)
    
    local ke_afkMove = ml_element:create( "AFKMove", c_afkmove, e_afkmove, 5 )
    self:add( ke_afkMove, self.process_elements)
  
    self:AddTaskCheckCEs()
end

-- custom process function for optimal performance
function ffxiv_task_pvp:Process()
    -- only perform combat logic when we are in the wolves den
    if ((Player.localmapid == 376 or Player.localmapid == 337 or Player.localmapid == 336 or Player.localmapid == 175) and Player.alive) then
        if (ml_task_hub:CurrentTask().state == "COMBAT_STARTED") then
            -- if we got slept then stop any current movement attempts
            if (HasBuff(Player.id,3) or HasBuff(Player.id,280) or HasBuff(Player.id,13)) then
                Player:Stop()
            end
        
          -- first check for an optimal target
            local target = EntityList:Get(ml_task_hub:CurrentTask().targetid)
            if (    TimeSince(ml_task_hub:CurrentTask().targetTimer) > 1000 or
                    ml_task_hub:CurrentTask().targetid == 0 or
                    (target ~= nil and (not target.alive or HasBuff(target.id,3))))
            then
                local newTarget = GetPVPTarget()
                if ValidTable(newTarget) and newTarget.id ~= ml_task_hub:CurrentTask().targetid then
                    -- only switch to a new target if it has less hp percent than our current target
                    if     (target and target.alive and (target.hp.percent > newTarget.hp.percent) and
                        (target.hp.percent - newTarget.hp.percent > 20)) or (not target) or not (target.alive)
                    then
                        if not HasBuff(Player.id,3) then
                            local pos = newTarget.pos
                            Player:SetFacing(pos.x,pos.y,pos.z)
                            ml_task_hub:CurrentTask().targetid = newTarget.id
                            Player:SetTarget(ml_task_hub:CurrentTask().targetid)
                        end
                    end
                end
                ml_task_hub:CurrentTask().targetTimer = ml_global_information.Now
            end
                 -- second try to cast if we're within range or a healer
                
            target = EntityList:Get(ml_task_hub:CurrentTask().targetid)
          if ((InCombatRange(ml_task_hub:CurrentTask().targetid) or Player.role == 4) and ValidTable(target)) then
            
            local cast = false
        
            if (Player.hp.percent < 75 )then
                cast = SkillMgr.Cast( Player )
            end
            if not cast then            
                SkillMgr.Cast( target )
            end    
          end
        else
           -- cast precombat actions
           SkillMgr.Cast( Player , true )
        end
    end
      
    -- last run the regular cne elements

    if (TableSize(self.process_elements) > 0) then
        ml_cne_hub.clear_queue()
        ml_cne_hub.eval_elements(self.process_elements)
        if (self:superClass() and TableSize(self:superClass().process_elements) > 0) then
            ml_cne_hub.eval_elements(self:superClass().process_elements)
        end
        ml_cne_hub.queue_to_execute()
        ml_cne_hub.execute()
        return false
    else
        ml_debug("no elements in process table")
    end
end

function ffxiv_task_pvp:OnSleep()

end

function ffxiv_task_pvp:OnTerminate()

end

function ffxiv_task_pvp:IsGoodToAbort()

end

-- UI settings etc
function ffxiv_task_pvp.UIInit()
    GUI_NewComboBox(ml_global_information.MainWindow.Name,strings[gCurrentLanguage].pvpTargetOne,"gPVPTargetOne",strings[gCurrentLanguage].pvpMode,"")
    GUI_NewComboBox(ml_global_information.MainWindow.Name,strings[gCurrentLanguage].pvpTargetTwo,"gPVPTargetTwo",strings[gCurrentLanguage].pvpMode,"")
    GUI_NewCheckbox(ml_global_information.MainWindow.Name, strings[gCurrentLanguage].prioritizeRanged, "gPrioritizeRanged",strings[gCurrentLanguage].pvpMode)
    GUI_NewCheckbox(ml_global_information.MainWindow.Name, strings[gCurrentLanguage].antiAFKMove, "gAFKMove",strings[gCurrentLanguage].pvpMode)
    GUI_NewCheckbox(ml_global_information.MainWindow.Name, strings[gCurrentLanguage].delayLeave, "gPVPDelayLeave",strings[gCurrentLanguage].pvpMode)
    --GUI_NewCheckbox(ml_global_information.MainWindow.Name, strings[gCurrentLanguage].pvpFlee, "gPVPFlee",strings[gCurrentLanguage].pvpMode)

    --init combo boxes
    local targetTypeList = strings[gCurrentLanguage].healer..","..strings[gCurrentLanguage].dps..","..strings[gCurrentLanguage].tank..","..strings[gCurrentLanguage].nearest..","..strings[gCurrentLanguage].lowestHealth
    gPVPTargetOne_listitems = targetTypeList
    gPVPTargetTwo_listitems = targetTypeList
    
    if (Settings.FFXIVMINION.gPVPTargetOne == nil) then
        Settings.FFXIVMINION.gPVPTargetOne = "Healer"
    end
    
    if (Settings.FFXIVMINION.gPVPTargetTwo == nil) then
        Settings.FFXIVMINION.gPVPTargetTwo = "Lowest Health"
    end
    
    if (Settings.FFXIVMINION.gPrioritizeRanged == nil) then
        Settings.FFXIVMINION.gPrioritizeRanged = "0"
    end
    
    if (Settings.FFXIVMINION.gAFKMove == nil) then
        Settings.FFXIVMINION.gAFKMove = "1"
    end
    
    if (Settings.FFXIVMINION.gPVPDelayLeave == nil) then
        Settings.FFXIVMINION.gPVPDelayLeave = "0"
    end
    
    --if (Settings.FFXIVMINION.gPVPFlee == nil) then
        --Settings.FFXIVMINION.gPVPFlee = "0"
    --end
    
    GUI_SizeWindow(ml_global_information.MainWindow.Name,250,400)
    
    gPVPTargetOne = Settings.FFXIVMINION.gPVPTargetOne
    gPVPTargetTwo = Settings.FFXIVMINION.gPVPTargetTwo
    gPrioritizeRanged = Settings.FFXIVMINION.gPrioritizeRanged
    gAFKMove = Settings.FFXIVMINION.gAFKMove
    gPVPDelayLeave = Settings.FFXIVMINION.gPVPDelayLeave
    --gPVPFlee = Settings.FFXIVMINION.gPVPFlee
end

function ffxiv_task_pvp.GUIVarUpdate(Event, NewVals, OldVals)
    for k,v in pairs(NewVals) do
        if (     k == "gPVPTargetOne" or
                k == "gPVPTargetTwo" or
                k == "gPrioritizeRanged" or
                k == "gAFKMove" or
                k == "gPVPFlee" or
                k == "gPVPDelayLeave")
        then
            Settings.FFXIVMINION[tostring(k)] = v
        end
    end
    GUI_RefreshWindow(ml_global_information.MainWindow.Name)
end

RegisterEventHandler("GUI.Update",ffxiv_task_pvp.GUIVarUpdate)
 


Messages In This Thread
FRONTLINE MESH - by blackragnarok - 07-12-2014, 10:39 AM
RE: FRONTLINE MESH - by random73 - 07-12-2014, 03:43 PM
RE: FRONTLINE MESH - by andysx - 07-12-2014, 07:37 PM
RE: FRONTLINE MESH - by edb6377 - 07-12-2014, 08:14 PM
RE: FRONTLINE MESH - by blackragnarok - 07-12-2014, 10:56 PM
RE: FRONTLINE MESH - by richardwood - 07-13-2014, 03:36 AM
RE: FRONTLINE MESH - by richardwood - 07-13-2014, 06:05 AM
RE: FRONTLINE MESH - by random73 - 07-13-2014, 04:18 PM
RE: FRONTLINE MESH - by TauTau - 07-15-2014, 07:08 PM
RE: FRONTLINE MESH - by bloodboil - 07-13-2014, 05:19 PM
RE: FRONTLINE MESH - by random73 - 07-16-2014, 12:26 PM
RE: FRONTLINE MESH - by TauTau - 07-16-2014, 01:23 PM
RE: FRONTLINE MESH - by Cichard - 07-16-2014, 01:13 PM
RE: FRONTLINE MESH - by random73 - 07-16-2014, 03:06 PM
RE: FRONTLINE MESH - by Mutantx - 07-17-2014, 11:22 AM
RE: FRONTLINE MESH - by richardwood - 07-18-2014, 04:08 AM
RE: FRONTLINE MESH - by edb6377 - 07-20-2014, 05:28 AM
RE: FRONTLINE MESH - by Latty79 - 07-20-2014, 03:28 PM
RE: FRONTLINE MESH - by edb6377 - 07-20-2014, 09:01 PM
RE: FRONTLINE MESH - by Tru14 - 07-22-2014, 02:20 PM
RE: FRONTLINE MESH - by Drastik - 07-22-2014, 03:14 PM
RE: FRONTLINE MESH - by blackragnarok - 07-23-2014, 01:30 PM
RE: FRONTLINE MESH - by lollos - 07-24-2014, 07:00 PM
RE: FRONTLINE MESH - by Cichard - 07-24-2014, 08:37 PM
RE: FRONTLINE MESH - by lollos - 07-24-2014, 09:42 PM
RE: FRONTLINE MESH - by Cichard - 07-24-2014, 10:47 PM
RE: FRONTLINE MESH - by Drastik - 07-25-2014, 04:11 AM
RE: FRONTLINE MESH - by Tru14 - 07-25-2014, 08:42 AM
RE: FRONTLINE MESH - by richardwood - 08-04-2014, 05:30 AM
RE: FRONTLINE MESH - by studwb22 - 08-04-2014, 01:44 PM
RE: FRONTLINE MESH - by richardwood - 08-04-2014, 09:48 PM
RE: FRONTLINE MESH - by Warrminion - 08-12-2014, 07:03 AM
RE: FRONTLINE MESH - by thepsygeek - 08-14-2014, 02:32 AM
RE: FRONTLINE MESH - by richardwood - 08-18-2014, 06:28 PM
RE: FRONTLINE MESH - by automationarmy - 08-20-2014, 10:50 AM
RE: FRONTLINE MESH - by studwb22 - 08-27-2014, 07:45 PM
RE: FRONTLINE MESH - by random73 - 08-27-2014, 08:12 PM
RE: FRONTLINE MESH - by Cichard - 08-28-2014, 03:29 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)

We help you win the game.

FFXIV Bot and More.

 

Products