• 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

Release Scribe TS Books [Deleted]

Status
Not open for further replies.
Joined
Jun 21, 2019
RedCents
1,591¢
Trapper submitted a new resource:

Scribe TS Books - This Scribes all non-Scribed TS books in PoK

This scribes all Non-Scribed TS books in POK, I was going to add other zones but found there were only 6 books not duplicates of PoK.

be in PoK and have mq2nav
Costs ~4k pp if you are missing all books.

/mac scribe_ts

the very final vendor isn't in default mesh, sometimes it gets to him sometimes not.(Culturist Devari) 1 Race specific Compendium.

Read more about this resource...
 
Nice, could not have being fun gathering all the vendor lists.
Hopefully some of my slacker friends will now finally scribe the books
 
Default mesh now reaches Culturalist Devari. Updater and site are rebuilding as I post this to reflect the changes. 2 more mins max before it hits the updater.

Edit: Changes live now.
 
Nice, could not have being fun gathering all the vendor lists.
Hopefully some of my slacker friends will now finally scribe the books
The first version I wrote just checked every item, but it was really slow on some of the vendors with lots of junk.. and some reason around 200 items it would cause something like a memory leak in MQ and require a MQ reload. but I was atleast able to use that to build the ini.

then there was different books for different races, that only show up if your that race.. thats where it turned into a pain.. lol
 
Default mesh now reaches Culturalist Devari. Updater and site are rebuilding as I post this to reflect the changes. 2 more mins max before it hits the updater.

Edit: Changes live now.
Thanks Wired, does that mean I should delete the My mesh from this zip file? or doesn't really matter?
 
This scribes all Non-Scribed TS books in POK, I was going to add other zones but found there were only 6 books not duplicates of PoK.
Wow, didnt know that. I thought I ran all over EQ buying those books. Amazing
 
First and foremost, thank you for your contribution. Know that all things I post following is not meant to bad mouth your macro at all, it's meant to teach you more if you're interested.

Missing a closing bracket.

Code:
Sub navigate
    /echo trying to navigate to ${vendor}
    /Target ${vendor}
    /if (${Target.Distance}>15) {
        /delay 1
        /nav target
        /echo Traveling to \ar ${vendor}
        /delay 1


    /while (${Navigation.Active}) {
        /delay 1
    }
/return

You start an if statement here, and I believe the if is meant to wrap around the while statement. But it never closes the if statements bracket.

I figure it's supposed to look like

Code:
Sub navigate
    /echo trying to navigate to ${vendor}
    /Target ${vendor}
   
    /if (${Target.Distance}>15) {
        /delay 1
        /nav target
        /echo Traveling to \ar ${vendor}
        /delay 1
       
        /while (${Navigation.Active}) {
            /delay 1
        }
    }
/return

For the sake of speed when writing macros, it's also good to know if you didn't that you can have a /delay which takes a condition to stop early.

example.

Code:
/target id ${Spawn[npc ${vendor}].ID}
/delay 1s ${Target.ID} == ${Spawn[npc ${vendor}].ID}

This will target the spawn, and then wait for 1 second, or until the your targets ID if the ID of the spawn you wanted, whichever happens first. It's a good way to remove any unnecessary waiting a macro would do otherwise.

The code above also shows you how using a ${Spawn[search info]} can be used to get information about a specific spawn with more detail, so that you can then use that information without first targeting the NPC.

I want to show you have to use that for your navigation Sub because currently you're targeting the NPC without knowing where the player is in relation to the NPC. For macros you should not target things that the user cannot see, or would not otherwise be able to target manually.

Code:
Sub navigate
    /echo trying to navigate to ${vendor}
   
    /if (${Spawn[npc ${vendor}].Distance} > 15) {
        /nav id ${Spawn[npc ${vendor}].ID}
        /echo Traveling to \ar ${vendor}       
        /while (${Navigation.Active}) {
            /delay 1
        }
    }
/return

That looks like a lot, but basically we're doing a spawn search to get the information for the spawn we're traveling to, but without first targeting it. You can research more about spawn searches here https://redguides.com/docs/projects/macroquest/reference/general/spawn-search/

But since we no longer target the NPC in Sub navigate, we now need to do that in Sub interactWithVendor before we do the /click right target, so if you make the above change, make sure to also adjust for the change in this sub.

Moving down you have /echo Gathering Vendor List and following that you start a for loop. In this for loop you have some odd indentation going on. I know that not everyone may know what is considered proper indentation, or might not even care if they use proper indentation. But it does help the readability of the code. I've taken a little bit of time to adjust the bracketing to get a better picture of how it's laid out in this section.

a couple of notes for this. In here you use multiple /next v The rule of thumb when dealing with for loops in macros is that there should be only one /next for every /for, if you want to go to the next index in the loop in the middle of a loop you want to use /continue and if you want to leave the for loop early you would use /break.

So in the condition /if (!${LItem}) { you will want to change that one to a /continue

Last, you start an else statement, and before the closing bracket of that else portion of this loop you use /next v, You should place this after the closing bracket for the else statement.

/varset itemDesc = ${Window[ItemDisplayWindow].Child[IDW_ItemDescriptionTabBox].Child[IDW_ItemInfo1].Text}
when using a varset, in a macro you do not need to use an = unless you want the = to be part of the string in this case. This could be why you end up with a mismatch. Though I've not run it and added debugging code to verify.

Again I do hope this was helpful to you educationally, and you don't feel as though I were shaming you. I considered posting this to a PM but I also figured that other users might find the information useful if they too were interested in creating a macro. I've attached a copy of the macro after the adjustments I made and discussed here to hopefully give you the full picture.

Overall I think you did a good job, all the things I mentioned were simple things. I've always been a fan of "If it works, then I'm okay with it". But at the same time if it can work better, then no harm in that either :-)

Always good to see another member of the community contributing!
 

Attachments

First and foremost, thank you for your contribution. Know that all things I post following is not meant to bad mouth your macro at all, it's meant to teach you more if you're interested.
Wow thank you for the information ChatWithThisName, only coding/scripting experience I have was on automating Cisco switches about 5+ years ago, and it was totally different then this.

Also thanks for the info on targeting NPC's without LOS, that was a bad oversight on my part.

Bracketing and spacing might have gotten out of wack when I removed about 2/3 of the script I had originally wrote to build the INI and do all the initial searching. (though no excuse lol, just was well done with messing with it when I got to the end)

I think that it's great that you put the information here, as that's the only way I learn is by seeing how others do it.

Thanks,
Trapper
 
A couple people have asked me about the other 6 books, I had put it at the summary when the Script gets to the end. but going to post it here too for ease on others:

3 new books on Useful Automated Vendor in Brells rest
Black Acrylia Weapon Ornament Sketchbook
Ceramic Weapon Ornament Sketchbook
On Quivering
--------------------------------------------------------------------------------
new book on Armorer Xochtli on Thulisaar Island (this requires Faction)
Thaell Ew Ritual Armor
--------------------------------------------------------------------------------
2 new books on Garik Nogflop in Sunrise Hills (housing zone)
Garik's Secrets of Bag Expansion
The Articles on Holding
--------------------------------------------------------------------------------
 
Nice job with the macro creation, I have always used PoKScribe.mac and was wondering if this offers some different functionality?

I am dumb and missed the point where it said TS Books and not spells. Disregard and delete me off this website.
 
Been wanting this, had people say it was too easy to automate. only need once, etc... but for enough toons, its worth it. Thanks for making this, its working awesome, running this minute.
 
I am confused what your quoting but not saying? My post was just clarifying that the link showed other zones.
 
Dude I decided to try this to see if there were any I was missing on a a new character, and it's been running like 15 minutes now grabbing ones ones I clearly did not scribe.
Bravo, thank you so much. But I must also invest time into logging on every other character to go collect these as well, before I start AP skilling.
 
Just loaded this on my toon and I am getting an error. It runs to a book vendor and selects a book. The book shows it's already scribed. An error comes up in the MQ2 box saying "NULL mismatch retrying ( this usually needs a /reload mq2". I reload MQ2 and start again. Same error. What does this mean? Could I have all of the books scribed already? Thanks for the help.
 
Just loaded this on my toon and I am getting an error. It runs to a book vendor and selects a book. The book shows it's already scribed. An error comes up in the MQ2 box saying "NULL mismatch retrying ( this usually needs a /reload mq2". I reload MQ2 and start again. Same error. What does this mean? Could I have all of the books scribed already? Thanks for the help.

when I got this error, I logged out, restarted my computer, logged back in, and this Mac worked like a champ.

For me, it seems like if you’ve been using really resource intense macros like the tradeskill Mac sometimes errors get thrown when you try to use different macros on other (or the same) characters.
 
I kept having issues where this macro would bug out lastnight saying NULL and other info and to refresh MQ2... had it mess up several times.
NOT 100% sure if this had anything to do with it but I was running MQ2WAR, so today I paused MQ2WAR and the marco ran through 100% with no problems. Not sure if MQ2War would randomly try to do something that would interrupt the macro or not. Just trying to pass on any info.
 
I kept having issues where this macro would bug out lastnight saying NULL and other info and to refresh MQ2... had it mess up several times.
NOT 100% sure if this had anything to do with it but I was running MQ2WAR, so today I paused MQ2WAR and the marco ran through 100% with no problems. Not sure if MQ2War would randomly try to do something that would interrupt the macro or not. Just trying to pass on any info.
mq2war won't do anything that would mess with your macro (outside of returning to a camp if you set one or similar) - some of the other cwtn class plugins might start casting a spell or swap your target to buff or do other stuff - and you should pause them if you intend on doing other stuff - but as far as making a macro not work, no
 
I kept having issues where this macro would bug out lastnight saying NULL and other info and to refresh MQ2... had it mess up several times.
NOT 100% sure if this had anything to do with it but I was running MQ2WAR, so today I paused MQ2WAR and the marco ran through 100% with no problems. Not sure if MQ2War would randomly try to do something that would interrupt the macro or not. Just trying to pass on any info.
I'm getting that same issue randomly also.
 
I was never able to figure out the issue where it gets to not returning the information from the window. it seemed like some kind of memory leak in Mq2, If I ran it clean first thing in always worked fine. but like others said If I had a lot of other stuff running it would then bug out.. I had also originally wrote it to just parse every item on the vendor but no matter what on that one when it got to about the 200-300ish Item it would start hitting where the window wouldn't respond.
 
NM, may be the NPC display the book when you raech a skill level.
My War with 199 in Tailoring do not see it, but another char with 350 in tailoring see it.

I confirm, my War just ding 200 tailoring and now she see the book.
 
Last edited:
I appreciate the work you've done to automate this.

I keep getting:
Code:
[MQ2] NULL
[MQ2] mismatch retrying(this usually needs a /reload mq2)
I can see the book on the vendor, and item description window open. In every case the book has not been scribed yet.

There are three main issues with this.
1) Essentially, the macro critically fails. You don't have any logic to deal with this. It just hangs up infinitely at this point.
2) reloading mq2 doesn't fix it.
3) The script has a lot of extra delay in it. Subsequently, restarting the macro takes a long time to get back to the point of failure.


For #3: Perhaps use conditions-to-satisfy more than loops with multi-second delays. This is exactly what CWTN recommended.
Eg
Code:
/delay 10s !${Navigation.Active}

vs

/while (${Navigation.Active}) {
    /delay 1s
}

The '10s' parameter there is just a safety measure. The script will break out of the delay as soon as '!${Navigation.Active}' evaluates to FALSE (aka conditional == FALSE). I am not super familiar with those objects though. I usually call navigate directly, after checking if a target is navigable and an acceptable distance (esp. compared to another target, in multi-destination scenarios).

On delays: I would generally stay far away from a 4-second delay. That's forever in computer cycles. Even with the inherent client and server latency. 300 - 400 ms delay will account for 95%+ of any inherent latency.
 
Last edited:
Release Scribe TS Books [Deleted]
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart