• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Question - camp

jmastema

Member
Joined
Mar 11, 2015
RedCents
327¢
Sorry for a simple question but would like to know

How do you set up kiss to camp to the Char screen when it zones out of a instance?
 
Kiss currently can't do that. It would need to be hacked. What instance do you want to camp after?
 
Make a shell and do KA as a modified .inc file. Create your shell to include that file and have an event in it that looks for "You are in #*#" or whatever the exact phrase is when you enter a new zone. The event sub does a ${Zone.Name} check and if it doesn't equal the name of the instance zone name, it camps.
 
I use to do a lot of the LDON's and what I did was just set AFKToolsOn=2 in my .ini file and added the highlighted code to the sub AFKTools in Kissassist:

The macro has to be started in the instance or this will camp your toons when you zone to a different zone than the macro was started, but only if AFKToolsOn=2.

Rich (BB code):
    Sub AFKTools
    /declare holding bool local
    /if (${CampZone}!=${Zone.ID}) /return
    /if (${Select[${AFKToolsOn},1,2]}) {
        :CZLockDown
            /if (${Posse.Strangers}>=1) {
                /if (!${holding}) {
                    /echo [AHTools] Macro on hold due to player activity in camp radius.
                    /call BroadCast ${IRCOn} ${EQBCOn} r "**PCS DETECTED IN CAMP RADIUS**"
                    /multiline ; /beep ; /timed 1 /beep ; /timed 1 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 1 /beep ; /timed 1 /beep
                    /varset holding 1
                }
                /delay 1s
                /call CheckForCombat 1 AFKTools
                /doevents
                /goto :CZLockDown
        } else { /varset holding 0 }
        /if (${AFKToolsOn}==2 && ${Zone.ID}!=${CampZone}) {
           /timed 20 /camp 
           /end
        }
    }
    /if (${Select[${AFKToolsOn},1,3]}) {
        :GMLockDown
        /if (${SpawnCount[GM]}>=1) {
            /if (${AFKGMAction}==1) {
                /if (!${holding}) {
                    /echo [AHTools] Macro on hold due to GM Presence
                    /call BroadCast ${IRCOn} ${EQBCOn} r "** GM DETECTED **"
                    /multiline ; /beep ; /timed 1 /beep ; /timed 1 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 1 /beep ; /timed 1 /beep
                    /varset holding 1
                }
                /goto :GMLockDown
            } else {
                /varset holding 0
            }
            /if (${AFKGMAction}==2) /multiline ; /echo [AHTools] Ending Macro due to GM Presence ; /mq2log [AHTools] Ending Macro due to GM Presence ; /endmacro
            /if (${AFKGMAction}==3) /multiline ; /echo [AHTools] Unloading MQ2 due to GM Presence; /mq2log [AHTools] Unloading MQ2 due to GM Presence ; /unload
            /if (${AFKGMAction}==4) /multiline ; /echo [AHTools] Quitting out of EQ due to GM Presence ; /mq2log [AHTools] Quitting out of EQ due to GM Presence ; /quit
        }
    }
   /return
 
Found this when looking for a solution to camp when the instance timer ends but it doesnt seem to be working, I am guessing it has to do with it not working with the newest version of kiss.

Any chance anyone can help me update this so that it will work with the current version of kissassist?
 
I created a small lem event which should work with all other tools without interfrerences.
You need lem to be installed
if not using kissassist you need Boxr installed

Tests done, working as intended now. If you copied befor this line was modified, you shall reload it. Had to add a "Lua stop lem" at the bottom, to avoid interferences with the next lem-tic while camping.

Import the following event as "CampOnZoning" in the chapter "Condition Events"
[CODE title="CampOnZoning"]cmV0dXJuIHsKIGxvYWQgPSB7CiAgYWx3YXlzID0gZmFsc2UsCiAgY2xhc3MgPSAiIiwKICB6b25lID0gIiIsCiB9LAogY29kZSA9ICJMUzB0UUhSNWNHVWdUWEVLTFMwdFFIUjVjR1VnU1cxSGRXa0tDbXh2WTJGc0lHMXhJRDBnY21WeGRXbHlaU2duYlhFbktRb0tiRzlqWVd3Z1puVnVZM1JwYjI0Z1UzUnZjRVJRVXlncENpQWdJQ0J0Y1M1amJXUW9KeTl6Y1hWbGJHTm9JQzl0Y1hBZ2IyNG5LUW9nSUNBZ2JYRXVaR1ZzWVhrb01UQXBDaUFnSUNCdGNTNWpiV1FvSnk5emNYVmxiR05vSUM5aWIzaHlJSEJoZFhObEp5a0tJQ0FnSUcxeExtUmxiR0Y1S0RFd0tRb2dJQ0FnZDJocGJHVWdiWEV1VkV4UExrMWxMa05oYzNScGJtY3VTVVFvS1NCa2J3b2dJQ0FnSUNBZ2JYRXVaR1ZzWVhrb01UQXdLUW9nSUNBZ1pXNWtDbVZ1WkFvS2JHOWpZV3dnWm5WdVkzUnBiMjRnVW1WemRXMWxSRkJUS0NrS0lDQWdiWEV1WTIxa0tDY3ZjM0YxWld4amFDQXZiWEZ3SUc5bVppY3BDaUFnSUcxeExtUmxiR0Y1S0RFd0tRb2dJQ0J0Y1M1amJXUW9KeTl6Y1hWbGJHTm9JQzlpYjNoeUlIVnVjR0YxYzJVbktRb2dJQ0J0Y1M1a1pXeGhlU2d4TUNrS1pXNWtDZ290TFNCMllXeHBaQ0JqYjI1a2FYUnBiMjV6Q2kwdEpIdGFiMjVsTGtsRWZTRTlNVFV4SUNZbUlDUjdXbTl1WlM1SlJIMGhQVEl3TWlBbUppQWtlMXB2Ym1VdVNVUjlJVDB6TkRRZ0ppWWdKSHRhYjI1bExrbEVmU0U5TXpRMUlDWW1JQ1I3VFdVdVEyOXRZbUYwVTNSaGRHVXVUbTkwUlhGMVlXeGJRMDlOUWtGVVhYMGdKaVlnSVNSN1RXVXVUVzkyYVc1bmZTQW1KaUFoSkh0T1lYWnBaMkYwYVc5dUxrRmpkR2wyWlgwS0xTMGdJQ0FnSUNBbUppQWhKSHROWlM1SmJuWnBjMzBnSmlZZ0lTUjdUV1V1UTJGemRHbHVaeTVKUkgwZ0ppWWdKSHROWlM1UVkzUk5ZVzVoZlR3NU1DQW1KaUFrZTAxbExsQmpkRWhRYzMwZ1BqMGdOelVLQ214dlkyRnNJRUZqZEhWaGJGcHZibVZKWkNBOUlEQUtiRzlqWVd3Z1puVnVZM1JwYjI0Z2IyNWZiRzloWkNncENpQWdJQ0JCWTNSMVlXeGFiMjVsU1dRZ1BTQnRjUzVVVEU4dVdtOXVaUzVKUkNncENtVnVaQW9LYkc5allXd2dablZ1WTNScGIyNGdZMjl1WkdsMGFXOXVLQ2tLSUNBZ0lHbG1JQ0J0Y1M1VVRFOHVXbTl1WlM1SlJDZ3BJSDQ5SUVGamRIVmhiRnB2Ym1WSlpDQjBhR1Z1SUhKbGRIVnliaUIwY25WbElHVnVaQ0FnSUNBZ0lDQWdJQ0FnTFMwZ2JtOTBJSHB2Ym1Wa0lIbGxkQW9nSUNBZ2NtVjBkWEp1SUdaaGJITmxDbVZ1WkFvS2JHOWpZV3dnWm5WdVkzUnBiMjRnWVdOMGFXOXVLQ2tLSUNBZ0lGTjBiM0JFVUZNb0tRb2dJQ0FnYlhFdVpHVnNZWGtvTVRBcENpQWdJQ0J0Y1M1amJXUW9KeTlqWVcxd0p5a0tJQ0FnSUcxeExtUmxiR0Y1S0RFd0tRb2dJQ0FnYlhFdVkyMWtLQ2N2VEhWaElITjBiM0FnYkdWdEp5a2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzB0SUdoaGRtVWdkRzhnYzNSdmNDQk1kV0VnZEc4Z2NISmxkbVZ1ZENCdVpYaDBJR1YyWlc1MExYUnBZeUIwYnlCcGJuUmxjbVpsY21VZ2QybDBhQ0JqWVcxd0NpQWdJQ0J0Y1M1a1pXeGhlU2d4TlRBcENtVnVaQW9LY21WMGRYSnVJSHR2Ym14dllXUTliMjVmYkc5aFpDd2dZMjl1WkdaMWJtTTlZMjl1WkdsMGFXOXVMQ0JoWTNScGIyNW1kVzVqUFdGamRHbHZibjA9IiwKIGNhdGVnb3J5ID0gImdlbmVyYWwiLAogdHlwZSA9ICJjb25kaXRpb25zIiwKIG5hbWUgPSAiQ2FtcE9uWm9uaW5nIiwKfQ==[/CODE]


Usually this Event should be disabled.
At the Moment you activate the Event, it will save the actual ZoneId for comparison.
As soon as the ZoneId changes (indicates that you changed Zone), it will use "/mqp on " or /Boxr Pause" to hold all automation.
After that it will issue the command "/camp".


here the full source-code of the event
[CODE title="CampOnZoning"]
---@type Mq
---@type ImGui

local mq = require('mq')

local function StopDPS()
mq.cmd('/squelch /mqp on')
mq.delay(10)
mq.cmd('/squelch /boxr pause')
mq.delay(10)
while mq.TLO.Me.Casting.ID() do
mq.delay(100)
end
end

local function ResumeDPS()
mq.cmd('/squelch /mqp off')
mq.delay(10)
mq.cmd('/squelch /boxr unpause')
mq.delay(10)
end

-- valid conditions
--${Zone.ID}!=151 && ${Zone.ID}!=202 && ${Zone.ID}!=344 && ${Zone.ID}!=345 && ${Me.CombatState.NotEqual[COMBAT]} && !${Me.Moving} && !${Navigation.Active}
-- && !${Me.Invis} && !${Me.Casting.ID} && ${Me.PctMana}<90 && ${Me.PctHPs} >= 75

local ActualZoneId = 0
local function on_load()
ActualZoneId = mq.TLO.Zone.ID()
end

local function condition()
if mq.TLO.Zone.ID() ~= ActualZoneId then return true end -- not zoned yet
return false
end

local function action()
StopDPS()
mq.delay(10)
mq.cmd('/camp')
mq.delay(10)
mq.cmd('/Lua stop lem') -- have to stop Lua to prevent next event-tic to interfere with camp
mq.delay(150)
end

return {onload=on_load, condfunc=condition, actionfunc=action}[/CODE]


The main job is done at the function action()
possible variations of the line: mq.cmd('/camp')
mq.cmd('/camp desktop') -- you guess it, don't you
mq.cmd('/dgga /camp') -- if you activate the event on all chars, as soon as the first leaves the zone he will call whole group to camp (when using dannet)


possible variation of line: mq.cmd('/Lua stop lem')
mq.cmd('/lem event CampOnZoning off') -- works only, if you named this event exactly "CampOnZoning" or else modify the name in this line to the name you chosed


Possible unwanted feature:
if you die and spawn elsewhere, the command "/camp" will be issued as well ... but you have 10 seconds to interrupt it (and issue "/Lua run lem" to reactivate lem").
 
Last edited:
@Sumony You can give this a try.

Code:
    Sub AFKTools
        /declare holding bool local
        /if (${CampZone}!=${Zone.ID}) {
            /if (${AFKToolsOn}==2) {
                /timed 20 /camp
                /end
            }
            /return
        }
        /if (${HealsOn} && ${AggroTargetID}) /return
        /if (${Select[${AFKToolsOn},1,2]}) {
            /if (${Macro.IsTLO[Posse]}) {
                /while (${Posse.Strangers}>=1) {
                    /if (!${holding}) {
                        /echo [AHTools] Macro on hold due to player activity in camp radius.
                        /call BroadCast r "**PCS DETECTED IN CAMP RADIUS**"
                        /multiline ; /beep ; /timed 1 /beep ; /timed 1 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 1 /beep ; /timed 1 /beep
                        /varset holding 1
                    }
                    /delay 1s
                    /if (${DPSOn} || ${MeleeOn}) {
                        /call CheckForCombat 0 AFKTools1 0
                    } else {
                        /call CheckForCombat 1 AFKTools2 0
                    }
                    /doevents
                }
            } else {
                /varset holding 0
            }
        }
        /if (${Select[${AFKToolsOn},1,3]}) {
            |/if (${GMailEvents.Find[GM]} && ${SpawnCount[GM]}>=1) /call GmailSend "GM in Zone, ${Zone.ShortName}"
            /if (${SpawnCount[GM]}>=1) {
                /if (${AFKGMAction}==1) {
                    /while (${SpawnCount[GM]}>=1) {
                        /if (!${holding}) {
                            /echo [AHTools] Macro on hold due to GM Presence
                            /call BroadCast r "** GM DETECTED **"
                            /multiline ; /beep ; /timed 1 /beep ; /timed 1 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 5 /beep ; /timed 1 /beep ; /timed 1 /beep
                            /varset holding 1
                        }
                    }
                } else {
                    /varset holding 0
                }
                /if (${AFKGMAction}==2) {
                    /multiline ; /echo [AHTools] Ending Macro due to GM Presence ; /mq2log [AHTools] Ending Macro due to GM Presence ; /endmacro
                } else /if (${AFKGMAction}==3) {
                    /multiline ; /echo [AHTools] Unloading MQ2 due to GM Presence; /mq2log [AHTools] Unloading MQ2 due to GM Presence ; /unload
                } else /if (${AFKGMAction}==4) {
                    /multiline ; /echo [AHTools] Quitting out of EQ due to GM Presence ; /mq2log [AHTools] Quitting out of EQ due to GM Presence ; /quit
                }
            }
        }
   /return

Just replace the whole routine with what I posted.
 
Question - camp

Users who are viewing this thread

Back
Top
Cart