• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
MQ VS Code Lua Autocomplete Definition Library

Lua - MQ VS Code Lua Autocomplete Definition Library (1 Viewer) 1.0.0

Joined
Sep 27, 2020
RedCents
3,870¢
I have the following (if it helps)

JSON:
    "Lua.completion.callSnippet": "Replace",
    "Lua.runtime.version": "LuaJIT",
    "Lua.workspace.ignoreSubmodules": false,
    "Lua.workspace.library": [
      "<MQ location>\\lua\\lib",
      "<MQ location>\\lua\\annotation"
    ],

lib files will sometimes have their own annotations I want to pick up. The external stuff goes into annotation. ignoreSubmodules came from a discussion with the Lua Language Server community. Not sure it helps, but it doesn't hurt either.
 
Joined
Oct 31, 2019
RedCents
1,008¢
With the absolute path I got it to run. Ontop a very useful information for me was the right location of the file settings.json. I created multiple hoping I got one also in the right place. But none of them have been under ... ...appdate\roaming ....

Acutal all seems to work as intended.
many thanks @Cannonballdex
 

MachoSod

Active member
Joined
Feb 14, 2022
RedCents
348¢
It is like a helper for creating lua scripts. When you type a command in vscode it will pop up helper stuff guiding you in the right direction for easy coding.
OK so totally beyond me at the moment. Still trying to learn how to use the programs, nowhere close to writing one. Thanks!
 
Joined
Oct 31, 2019
RedCents
1,008¢
I have the following (if it helps)

JSON:
    "Lua.completion.callSnippet": "Replace",
    "Lua.runtime.version": "LuaJIT",
    "Lua.workspace.ignoreSubmodules": false,
    "Lua.workspace.library": [
      "<MQ location>\\lua\\lib",
      "<MQ location>\\lua\\annotation"
    ],

lib files will sometimes have their own annotations I want to pick up. The external stuff goes into annotation. ignoreSubmodules came from a discussion with the Lua Language Server community. Not sure it helps, but it doesn't hurt either.
What is the effect of "Lua.completion.callSnippet": "Replace"?
Why do you use a different runtime. version "Lua.runtime.version": "LuaJIT"? Runs "Lua Version 5.1" interpreted vs. "LuaJIT" JIT-compiled?
"Lua.workspace.ignoreSubmodules": false... I imagine will allow Submodules to declare additional annotations, if that's the case, it makes sense to me.
 
Joined
Oct 31, 2019
RedCents
1,008¢
should be close, but still erratic: compareing numbers with userdata

erratic condition:
if (mq.TLO.Me.XTAggroCount(200) > 0) and (mq.TLO.Me.AltAbilityReady(102)()) then  --Escape

where is the bug?
 

Cannonballdex

Mad Scientist
Joined
Feb 9, 2017
RedCents
701¢
should be close, but still erratic: compareing numbers with userdata

erratic condition:
if (mq.TLO.Me.XTAggroCount(200) > 0) and (mq.TLO.Me.AltAbilityReady(102)()) then  --Escape

where is the bug?
What is the (200) in your aggrocount

Returns the number of AUTO-HATER mobs on the extended target window where your aggro is less than the optional parameter N. N must be between 1-100 inclusive or it will be set to 100 (the default value).

mq.TLO.Me.XTAggroCount(100)() > 0
 
Last edited:
Joined
Sep 27, 2020
RedCents
3,870¢
What is the effect of "Lua.completion.callSnippet": "Replace"?
Why do you use a different runtime. version "Lua.runtime.version": "LuaJIT"? Runs "Lua Version 5.1" interpreted vs. "LuaJIT" JIT-compiled?
"Lua.workspace.ignoreSubmodules": false... I imagine will allow Submodules to declare additional annotations, if that's the case, it makes sense to me.

The version of Lua included with MQ is LuaJIT 2.0.5. It is compatible with Lua 5.1, but offers a number of extensions. For example, I use the ffi.* functionality in a base library for my projects.

From the Lua Language Server documentation for Lua.completion.CallSnippet:

completion.callSnippet​


Type: string
Default: "Disable"
Options:
  • "Disable" - Only show function name
  • "Both" - Show function name and snippet
  • "Replace" - Only show the call snippet
Whether to show call snippets or not. When disabled, only the function name will be completed. When enabled, a "more complete" snippet will be offered.
 
Last edited:
Joined
Oct 31, 2019
RedCents
1,008¢
@rouneq thanks for the details. For me it seems, you dived verry deep into the Lua-stuff available ;)
The second of my questions for me seems the most important: do Lua 5.1 run interpreted vs.LuaJit which seems to run Jit-compiled?
 
Joined
Sep 27, 2020
RedCents
3,870¢
The second of my questions for me seems the most important: do Lua 5.1 run interpreted vs.LuaJit which seems to run Jit-compiled?
From The Lua Programming Language Beginner's Guide | How It Works:

There are two main components of Lua:
  • The Lua interpreter
  • The Lua virtual machine (VM)
Lua is not directly interpreted through a Lua file like other languages such as Python. Instead, it uses the Lua interpreter to compile a Lua file to bytecode. The Lua interpreter is written in ANSI C, making it highly portable and capable of running on a multitude of devices.

Usually, the compilation is done at the runtime. However, sometimes it can be done before the runtime to increase load times. Then the Lua virtual machine will run this compiled bytecode. The register-based architecture of the Lua virtual machine closely resembles actual hardware architectures, and it will increase the overall performance of the program.

From Introducing LuaJIT:

As the name says LuaJIT is a Just-In-Time (JIT) compiler. This means that functions are compiled on demand, i.e. when they are run first. This ensures both a quick application startup and helps to avoid useless work, too. E.g. unused functions are not compiled at all.
 
Last edited:
Joined
Oct 31, 2019
RedCents
1,008¢
@rouneq many thanks for the details. As I understan them, both versions do compile the code befor it is started. What benefits did you see in the Jit-compiler to choose it over the standard Lua? Do you expect better runtime-performance choosing the JIT-compiler?
 
Joined
Sep 27, 2020
RedCents
3,870¢
@rouneq many thanks for the details. As I understan them, both versions do compile the code befor it is started. What benefits did you see in the Jit-compiler to choose it over the standard Lua? Do you expect better runtime-performance choosing the JIT-compiler?

I didn't chose which version of Lua is included with MQ. One of the MQ devs will have to step in with their design choice(s) on the matter.
 

Coldblooded

Purveyor of all things MQNext and Lua
Joined
Mar 23, 2019
RedCents
4,619¢

Coldblooded

Purveyor of all things MQNext and Lua
Joined
Mar 23, 2019
RedCents
4,619¢

Coldblooded

Purveyor of all things MQNext and Lua
Joined
Mar 23, 2019
RedCents
4,619¢
SHD disc 2-Hit Rune ... for lvl 120 "Repudiate"

Condition: If I have anything on aggro and I am not Invis
fire my 2 hit Rune "Repudiate" whenever possible on cooldown
as long as there is atleast 1 mob on aggro


Import Event:
cmV0dXJuIHsKIGxvYWQgPSB7CiAgYWx3YXlzID0gZmFsc2UsCiAgY2xhc3MgPSAiIiwKICB6b25lID0gIiIsCiB9LAogY29kZSA9ICJMUzB0UUhSNWNHVWdUWEVLTFMwdFFIUjVjR1VnU1cxSGRXa0tDbXh2WTJGc0lHMXhJRDBnY21WeGRXbHlaU2duYlhFbktRcHNiMk5oYkNCRGIyMWlZWFJCWW1sc2FYUjVUbUZ0WlNBOUlDZFNaWEIxWkdsaGRHVW5DZ3BzYjJOaGJDQm1kVzVqZEdsdmJpQlRkRzl3UkZCVEtDa0tJQ0FnSUcxeExtTnRaQ2duTDNOeGRXVnNZMmdnTDIxeGNDQnZiaWNwQ2lBZ0lDQnRjUzVrWld4aGVTZ3hNQ2tLSUNBZ0lHMXhMbU50WkNnbkwzTnhkV1ZzWTJnZ0wySnZlSElnY0dGMWMyVW5LUW9nSUNBZ2JYRXVaR1ZzWVhrb01UQXBDaUFnSUNCM2FHbHNaU0J0Y1M1VVRFOHVUV1V1UTJGemRHbHVaeTVKUkNncElHUnZDaUFnSUNBZ0lDQnRjUzVrWld4aGVTZ3hNREFwQ2lBZ0lDQmxibVFLWlc1a0NncHNiMk5oYkNCbWRXNWpkR2x2YmlCU1pYTjFiV1ZFVUZNb0tRb2dJQ0J0Y1M1amJXUW9KeTl6Y1hWbGJHTm9JQzl0Y1hBZ2IyWm1KeWtLSUNBZ2JYRXVaR1ZzWVhrb01UQXBDaUFnSUcxeExtTnRaQ2duTDNOeGRXVnNZMmdnTDJKdmVISWdkVzV3WVhWelpTY3BDaUFnSUcxeExtUmxiR0Y1S0RFd0tRcGxibVFLQ214dlkyRnNJR1oxYm1OMGFXOXVJRTV2WmtoaGRHVnlLQ2tLTFMwdFFHUnBZV2R1YjNOMGFXTWdaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVTZJSFZ1WkdWbWFXNWxaQzFtYVdWc1pBb2dJQ0FnY21WMGRYSnVJRzF4TGxSTVR5NVlRWE56YVhOMExsaFVSblZzYkVoaGRHVnlRMjkxYm5Rb0tRcGxibVFLQ214dlkyRnNJRU5CVW1GdWEyVmtJRDBnSWlJS2JHOWpZV3dnWm5WdVkzUnBiMjRnYjI1ZmJHOWhaQ2dwQ2lBZ0lDQkRRVkpoYm10bFpDQTlJRzF4TGxSTVR5NVRjR1ZzYkNnb1EyOXRZbUYwUVdKcGJHbDBlVTVoYldVcEtTNVNZVzVyVG1GdFpTZ3BDbVZ1WkFvS2JHOWpZV3dnWm5WdVkzUnBiMjRnWTI5dVpHbDBhVzl1S0NrS0lDQWdJR2xtSUc1dmRDQjBiM04wY21sdVp5aHRjUzVVVEU4dVRXVXVRMnhoYzNNdVUyaHZjblJPWVcxbEtDa3BJRDA5SUNkVFNFUW5JSFJvWlc0Z2NtVjBkWEp1SUdaaGJITmxJR1Z1WkNBZ0lDQWdJQ0FnSUNBZ0xTMGdibThnVTBoRUlHNXZJR1oxYmdvZ0lDQWdMUzB0UUdScFlXZHViM04wYVdNZ1pHbHpZV0pzWlMxdVpYaDBMV3hwYm1VNklIVnVaR1ZtYVc1bFpDMW1hV1ZzWkFvZ0lDQWdhV1lnVG05bVNHRjBaWElvS1NBK0lEQWdZVzVrSUc1dmRDQnRjUzVVVEU4dVRXVXVTVzUyYVhNb0tTQmhibVFnYlhFdVZFeFBMazFsTGtOdmJXSmhkRUZpYVd4cGRIbFNaV0ZrZVNoRFFWSmhibXRsWkNrZ2RHaGxiaUJ5WlhSMWNtNGdkSEoxWlNCbGJtUUtJQ0FnSUhKbGRIVnliaUJtWVd4elpRcGxibVFLQ214dlkyRnNJR1oxYm1OMGFXOXVJR0ZqZEdsdmJpZ3BDaUFnSUNCVGRHOXdSRkJUS0NrS0lDQWdJRzF4TG1SbGJHRjVLREV3S1FvZ0lDQWdiWEV1WTIxa1ppZ25MM054ZFdWc1kyZ2dMMlJwYzJNZ0pYTW5MQ0JEUVZKaGJtdGxaQ2tLSUNBZ0lHMXhMbVJsYkdGNUtERXdLUW9nSUNBZ1VtVnpkVzFsUkZCVEtDa0taVzVrQ2dweVpYUjFjbTRnZTI5dWJHOWhaRDF2Ymw5c2IyRmtMQ0JqYjI1a1puVnVZejFqYjI1a2FYUnBiMjRzSUdGamRHbHZibVoxYm1NOVlXTjBhVzl1ZlE9PSIsCiBjYXRlZ29yeSA9ICJnZW5lcmFsIiwKIHR5cGUgPSAiY29uZGl0aW9ucyIsCiBuYW1lID0gIlNoZDJIaXRSdW5lRGlzYyIsCn0=

This disc does not consume alot of Endurance, but for my feeling offers alot of defense, as it adsorbes upto 88k damage from the next 2 hits. So my SHD likes it and want it always up when he has aggro.

Full ressource code:
[email protected] Mq
[email protected] ImGui

local mq = require('mq')
local CombatAbilityName = 'Repudiate'

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

local function NofHater()
[email protected] disable-next-line: undefined-field
    return mq.TLO.XAssist.XTFullHaterCount()
end

local CARanked = ""
local function on_load()
    CARanked = mq.TLO.Spell((CombatAbilityName)).RankName()
end

local function condition()
    if not tostring(mq.TLO.Me.Class.ShortName()) == 'SHD' then return false end           -- no SHD no fun
    [email protected] disable-next-line: undefined-field
    if NofHater() > 0 and not mq.TLO.Me.Invis() and mq.TLO.Me.CombatAbilityReady(CARanked) then return true end
    return false
end

local function action()
    StopDPS()
    mq.delay(10)
    mq.cmdf('/squelch /disc %s', CARanked)
    mq.delay(10)
    ResumeDPS()
end

return {onload=on_load, condfunc=condition, actionfunc=action}


Idea for further improvements:
- extend for multiclass-support
I think this might be in the wrong thread?
 
Joined
Oct 13, 2017
RedCents
252¢
Could not possibly say enough good things about this.
Question, I've updated to the most recent version, but it's still not sensing the CWTN tlo, and it also gives me an error on .IsLoaded (which validates through /lua parse in game) is there a way to get these TLO's added possibly?

Seriously though, thank you so much for all of this.
 

Coldblooded

Purveyor of all things MQNext and Lua
Joined
Mar 23, 2019
RedCents
4,619¢
Could not possibly say enough good things about this.
Question, I've updated to the most recent version, but it's still not sensing the CWTN tlo, and it also gives me an error on .IsLoaded (which validates through /lua parse in game) is there a way to get these TLO's added possibly?

Seriously though, thank you so much for all of this.
I have not added the CWTN TLOs. If you want, I'm more than happy to take a PR on that, or if not, I'll try and get around to it. At a minimum, put an issue up on GitHub so I don't forget :)
 

Cannonballdex

Mad Scientist
Joined
Feb 9, 2017
RedCents
701¢
I have not added the CWTN TLOs. If you want, I'm more than happy to take a PR on that, or if not, I'll try and get around to it. At a minimum, put an issue up on GitHub so I don't forget :)
Awesome job with this. Really enjoy it. I actually started to add the CWTN TLO's (mind you no idea what i am doing). I got the first few files created and there is was popping up in the helper box. Then I went to research all the CWTN TLO's and was like, F-That.
Mad props to you for as much as you have got in to this already. Greatly appreciated.
 

Users who are viewing this thread

Top