I have it on ALL of my toons under the onzone tab as "timedcommand 150 run custom/gatheringgoblin" that way 15 seconds after zoning (when it should be completed zoning properly) it will run the script. You don't have to have custom in there, I just keep it in a folder in scripts called custom. Make sure you change the code in there, you'll see it.
- Code: Select all
;This is a script to hire goblins
function main()
{
Event[EQ2_onIncomingText]:AttachAtom[CheckGoblin]
declarevariable scriptDone bool script FALSE
if TRUE
{
oc !c -castabilitynoexport ${Me.Name} "Summon Artisan's Gathering Goblin"
oc ${Me.Name} summoning gathering goblin
wait 40
if ${Actor[${Me.Name}Goblin](exists)}
{
Actor[${Me.Name}Goblin]:DoubleClick
}
else
{
return
}
while !${scriptDone}
{
wait 10
}
}
}
atom CheckGoblin(string text)
{
;Goblin full, collect stuff
if ${text.Find["Dees packs be full!"]} && ${text.Find[${Me.Name}](exists)}
{
oc ${Me.Name} packs full, collecting.
timedcommand 10 oc !c -ConversationBubble ${Me.Name} 1
timedcommand 50 Actor[${Me.Name}Goblin]:DoubleClick
}
;Goblin not full, send him out again!
if ${text.Find["Can't harvest yourself?"]} && ${text.Find[${Me.Name}](exists)}
{
;This is where you decide what level to collect. Bubble 1 is lvl 1-60, bubble 2 is 70-100. Bubble 6 is level 100.
oc ${Me.Name} sending the goblin out for collections.
timedcommand 10 oc !c -ConversationBubble ${Me.Name} 2
timedcommand 20 oc !c -ConversationBubble ${Me.Name} 6
timedcommand 50 eq2ex cancel_maintained Summon Artisan's Gathering Goblin
timedcommand 60 eq2ex container deposit_all ${Actor["Harvesting Supply Depot"].ID} 0
timedcommand 70 eq2ex container deposit_all ${Actor["Harvesting Supply Depot (Large)"].ID} 0
timedcommand 80 eq2ex container deposit_all ${Actor["Personal Harvest Depot (large)"].ID} 0
scriptDone:Set[TRUE]
;tell your uplink to wait 2 hours and 30 seconds and then tell your toon to run the script
relay ${SettingXML[InnerSpace.XML].Set[Remote].GetString[Name].Escape} timedcommand 72600 relay ${Me.Name} runscript custom/GatheringGoblin
}
;Goblin still collecting
if (${text.Find["Need more time"]} || ${text.Find["Need more patiences from you"]}) && ${text.Find[${Me.Name}](exists)}
{
oc ${Me.Name}'s goblin still harvesting.
timedcommand 10 eq2ex cancel_maintained Summon Artisan's Gathering Goblin
scriptDone:Set[TRUE]
}
}
As you can see what it does it summons the goblin, clicks him and then reads the chat for the corresponding thing to do next. One thing that I've done to ensure it doesn't click the wrong goblin (as I summon multiple at once) is changed all the names of the goblins to Namegoblin (Glitterrangergoblin or Glittermysticgoblin for example). Make sure you do this to your goblins or it will not work.
Here is the script for the pony, same principals, change it to Namepony (eg Glitterrangerpony or Glittermysticpony)
- Code: Select all
;This is a script to hire packpony
function main()
{
Event[EQ2_onIncomingText]:AttachAtom[CheckPony]
declarevariable scriptDone bool script FALSE
if TRUE
{
oc !c -castabilitynoexport ${Me.Name} "Summon Artisan's Pack Pony"
oc ${Me.Name} summoning gathering pony
wait 40
if ${Actor[${Me.Name}pony](exists)}
{
Actor[${Me.Name}pony]:DoubleClick
}
else
{
return
}
while !${scriptDone}
{
wait 10
}
}
}
atom CheckPony(string text)
{
;Pony full, collect stuff
if ${text.Find["the packs are full"]} && ${text.Find[${Me.Name}](exists)}
{
oc ${Me.Name} packs full, collecting.
timedcommand 10 oc !c -ConversationBubble ${Me.Name} 1
timedcommand 50 Actor[${Me.Name}pony]:DoubleClick
}
;Pony not full, send her out again!
if ${text.Find["*whinny*"]} && ${text.Find[${Me.Name}](exists)}
{
oc ${Me.Name} sending the pony out for collections.
timedcommand 10 oc !c -ConversationBubble ${Me.Name} 2
timedcommand 20 oc !c -ConversationBubble ${Me.Name} 6
timedcommand 50 eq2ex cancel_maintained Summon Artisan's Pack Pony
timedcommand 60 eq2ex container deposit_all ${Actor["Harvesting Supply Depot"].ID} 0
timedcommand 70 eq2ex container deposit_all ${Actor["Harvesting Supply Depot (Large)"].ID} 0
timedcommand 80 eq2ex container deposit_all ${Actor["Personal Harvest Depot (large)"].ID} 0
scriptDone:Set[TRUE]
;tell your uplink to wait 2 hours and 30 seconds and then tell your toon to run the script
relay ${SettingXML[InnerSpace.XML].Set[Remote].GetString[Name].Escape} timedcommand 72600 relay ${Me.Name} runscript custom/GatheringPony
}
;Goblin still collecting
if ${text.Find["Your faithful pack pony is still at work"]}
{
oc ${Me.Name}'s pony still harvesting.
timedcommand 10 eq2ex cancel_maintained Summon Artisan's Pack Pony
scriptDone:Set[TRUE]
}
}
One beautiful thing these scripts do is set a timer for 2 hours and then reruns the script. So if you're a lazy piece of shit like me and need to fill up your depots, it will redo the script over and over. *use at your own risk* If you want this part to work you will have to create a relay group for every toon with their own name (eg relay group Glitterranger)
Happy hunting!