From experience. there are many advantages to this startup and configuration script type, I leave it to you to understand the subtlety.
Code: Select all
Sub Main
|** Start Session waiting **|
/if (!(${Select[${MacroQuest.GameState},INGAME]} && ${Zone.ID} && !${Select[${Me.CleanName},NULL]})) {
/delay 300s (${Select[${MacroQuest.GameState},INGAME]} && ${Zone.ID} && !${Select[${Me.CleanName},NULL]})
/delay 1s
}
|** Clear Previous MQ2 Error messages **|
/clearerrors
|** Auto start Plugins **|
/echo Loading PLUGINS...
/if (!${Plugin[MQ2Cast].Name.Equal[MQ2Cast]}) /squelch /plugin MQ2Cast
/if (!${Plugin[MQ2EQBC].Name.Equal[MQ2EQBC]}) /squelch /plugin MQ2EQBC
/if (!${Plugin[MQ2ChatWnd].Name.Equal[MQ2ChatWnd]}) /squelch /plugin mq2chatwnd
/if (!${Plugin[mq2custombinds].Name.Equal[mq2custombinds]}) /squelch /plugin mq2custombinds
/if (!${Plugin[mq2emusearch].Name.Equal[mq2emusearch]}) /squelch /plugin mq2emusearch
/if (!${Plugin[mq2labels].Name.Equal[mq2labels]}) /squelch /plugin mq2labels
/if (!${Plugin[mq2map].Name.Equal[mq2map]}) /squelch /plugin mq2map
/if (!${Plugin[MQ2NetBots].Name.Equal[MQ2NetBots]}) /squelch /plugin MQ2NetBots
/if (!${Plugin[MQ2NetHeal].Name.Equal[MQ2NetHeal]}) /squelch /plugin MQ2NetHeal
/if (${Plugin[MQ2FPS].Name.Equal[MQ2FPS]}) /squelch /plugin MQ2FPS unload
/if (${Plugin[MQ2Clip].Name.Equal[MQ2Clip]}) /squelch /plugin MQ2Clip unload
/if (!${Plugin[MQ2MoveUtils].Name.Equal[MQ2MoveUtils]}) /squelch /plugin MQ2MoveUtils
/if (!${Plugin[MQ2Buffblock].Name.Equal[MQ2Buffblock]}) /squelch /plugin MQ2Buffblock
/if (!${Plugin[MQ2Exchange].Name.Equal[MQ2Exchange]}) /squelch /plugin MQ2Exchange
/if (!${Plugin[MQ2Twist].Name.Equal[MQ2Twist]}) /squelch /plugin MQ2Twist
/if (!${Plugin[MQ2EmuAutoMacro].Name.Equal[MQ2EmuAutoMacro]}) /squelch /plugin MQ2EmuAutoMacro
/if (!${Plugin[MQ2AutoGroup].Name.Equal[MQ2AutoGroup]}) /squelch /plugin MQ2AutoGroup
/if (!${Plugin[MQ2AutoLogin].Name.Equal[MQ2AutoLogin]}) /squelch /plugin MQ2AutoLogin
/if (!${Plugin[MQ2EmuMouseAPI].Name.Equal[MQ2EmuMouseAPI]}) /squelch /plugin MQ2EmuMouseAPI
/if (!${Plugin[MQ2EmuArt].Name.Equal[MQ2EmuArt]}) /squelch /plugin MQ2EmuArt
/if (!${Plugin[MQ2ItemDisplay].Name.Equal[MQ2ItemDisplay]}) /squelch /plugin MQ2ItemDisplay
| HUD on tank/offtank class
/if (${Me.Class.Name.Equal[Warrior]} || ${Me.Class.Name.Equal[Shadow Knight]} || ${Me.CleanName.Lower.Find[${Ini[./Setup.ini,CONFIG,MAINTANK].Lower}]}) {
/if (!${Plugin[MQ2HUD].Name.Equal[MQ2HUD]}) /squelch /plugin MQ2HUD noauto
} else {
/if (${Plugin[MQ2HUD].Name.Equal[MQ2HUD]}) /squelch /plugin MQ2HUD unload
}
/if (${Plugin[MQ2Vmqnet].Name.Equal[MQ2Vmqnet]}) /squelch /plugin MQ2Vmqnet unload
/if (${Plugin[MQ2EmuNetAdvPath].Name.Equal[MQ2EmuNetAdvPath]}) /squelch /plugin MQ2EmuNetAdvPath unload
/if (${Plugin[MQ2EmuMap].Name.Equal[MQ2EmuMap]}) /squelch /plugin MQ2EmuMap unload
/if (${Plugin[MQ2EmuCharacters].Name.Equal[MQ2EmuCharacters]}) /squelch /plugin MQ2EmuCharacters unload
/if (${Plugin[MQ2DPSAdv].Name.Equal[MQ2DPSAdv]}) /squelch /plugin MQ2DPSAdv unload
/if (${Plugin[MQ2Melee].Name.Equal[MQ2Melee]}) /squelch /plugin MQ2Melee unload
/if (${Plugin[MQ2Tracking].Name.Equal[MQ2Tracking]}) /squelch /plugin MQ2Tracking unload
|** Auto start OTHER/CUSTOM or PERSONAL Plugins **|
|** Start Plugin by ini macro **|
/if (${Ini[./Setup.ini,CONFIG,AUTOFPS].Equal[ON]}) {
/if (!${Plugin[MQ2FPS].Name.Equal[MQ2FPS]}) /squelch /plugin MQ2FPS
}
/if (${Ini[./Setup.ini,CONFIG,AUTOCLIP].NotEqual[NULL]} && ${Ini[./Setup.ini,CONFIG,AUTOCLIP].NotEqual[OFF]}) {
/if (!${Plugin[MQ2Clip].Name.Equal[MQ2Clip]}) /squelch /plugin MQ2Clip
/delay 5s (${Plugin[MQ2Clip].Name.Equal[MQ2Clip]})
/if (${Plugin[MQ2Clip].Name.Equal[MQ2Clip]}) /goodfps ${Ini[./Setup.ini,CONFIG,AUTOCLIP]}
}
|** Declaration of custom mouse and key bind **|
| Mouse Key BIND for Stop/Attack/Sqr/Follow
/bind HOT3_1 SHIFT+CTRL+1
/bind HOT4_6 SHIFT+CTRL+6
/bind HOT4_7 SHIFT+CTRL+7
/bind HOT4_8 SHIFT+CTRL+8
/bind HOT4_9 SHIFT+CTRL+9
| View Key BIND
/bind USE U
/bind ~CENTERVIEW HOME
/bind First_Person_Camera N
/bind Chase_Camera O
/bind Open_Inv_Bags SHIFT+CTRL+I
/bind Close_Inv_Bags SHIFT+CTRL+O
/bind Cmd_Clipboard_Paste SHIFT+CTRL+V
| Clear eqkey
/bind TOGGLETARGET clear
/bind CYCLEREPLY clear
/bind CYCLEREPLY_BACK clear
| Target Key BIND
/bind ~TargetNPC `
/bind ~CycleNpcTargets SHIFT+`
/bind CycleNpcTargets TAB
/bind TOGGLETWOTARGETS SHIFT+TAB
|** Load NETBOT & NETHEAL **|
/squelch /netbot on grab=on send=on
/squelch /netheal on send=on grab=on
|** Load MQ2FPS Settings **|
/if (${Plugin[MQ2FPS].Name.Equal[MQ2FPS]}) {
/squelch /maxfps fg 25
/squelch /maxfps bg 15
/squelch /render fg 1
/squelch /render bg 1
}
|** Common Effect,Chat, toons default set **|
| Disable effect
/showspelleffects off
| /showname off
/showgrass off
| Disable inspect
/toggleinspect off
| Load MQ2ChatWnd Font Size
/squelch /mqfont 1
/squelch /chatfontsize 1
| Setup default channel
| /squelch /channel guildsay
| Load MQ2ChatWnd silent
/squelch /bccmd set silentoutmsg on
/squelch /bccmd set silentcmd on
/squelch /bccmd set silentinccmd on
| Load Eqbcs reconnect time
/squelch /bccmd set reconnectsecs 1
| Load Boxing Optimisations
/squelch /Showspelleffect off
/squelch /showname off
/squelch /showgrass off
/squelch /showspelleffects off
| Load MQ2AutoGroup
/squelch /autogroup on
| Load Target Group Buff [off]
/squelch /tgb off
| Load Assist [off]
/squelch /assist off
| Configure default moveto distance
/squelch /moveto dist 10
| Sound Realism 0 - 20 (5% by increment) - Prevent the sound saturation with many boxing session
/notify OptionsWindow OGP_SoundRealismSlider newvalue 5
| Music Volume 0 - 20
/notify OptionsWindow OGP_MusicVolumeSlider newvalue 0
| Sound Volume 0 - 20
/notify OptionsWindow OGP_SoundVolumeSlider newvalue 5
|** Declaration of GOBAL var and timer (required for a hot restart macros) **|
/if (!${Defined[MaxDPStimer1]}) /declare MaxDPStimer1 timer global 0
/if (!${Defined[MaxDPStimer2]}) /declare MaxDPStimer2 timer global 0
/if (!${Defined[MaxDPStimer3]}) /declare MaxDPStimer3 timer global 0
/if (!${Defined[MaxDPStimer4]}) /declare MaxDPStimer4 timer global 0
/if (!${Defined[MaxDPStimer5]}) /declare MaxDPStimer5 timer global
/if (!${Defined[Recast10Timer]}) /declare Recast10Timer timer global 0
/if (!${Defined[Recast11Timer]}) /declare Recast11Timer timer global 0
/if (!${Defined[Recast17Timer]}) /declare Recast17Timer timer global
| ETC...
|** Aliases declaration **|
/if (!${Ini[..\MacroQuest.ini,Aliases,/start].Replace[$,].Equal[/noparse /bcaa //if (!${Macro.RunTime}) /macro main.mac]}) {
/alias /start /noparse /bcaa //if (!${Macro.RunTime) /macro main.mac
/call Runwait
}
/if (!${Ini[..\MacroQuest.ini,Aliases,/restart].Replace[$,].Equal[/noparse /bcaa //macro main.mac]}) {
/alias /restart /noparse /bcaa //macro main.mac
/call Runwait
}
/if (!${Ini[..\MacroQuest.ini,Aliases,/endall].Replace[$,].Equal[/bcaa //endmacro]}) {
/alias /endall /bcaa //endmacro
/call Runwait
}
/if (!${Ini[..\MacroQuest.ini,Aliases,/end].Replace[$,].Equal[/endmacro]}) {
/alias /end /endmacro
/call Runwait
}
| ETC...
| Standard Stick
| Bug fix with in Natimbi (Equal changed for Find function), update for Tanking/Offtanking mode exclusion
/noparse /alias /stickme /multiline @ /echo Command [ /stickme ]@ /noparse /bca //multiline ; /if (!${Defined[StickZone]}) /declare StickZone string global;/if (!${Defined[StickTar]}) /declare StickTar int global;/if (!${Defined[TankTarget]}) /declare TankTarget string global 0@ /bca //varset StickZone ${Zone.Name}@ /bca //varset StickTar ${Me.ID}@ /noparse /bca //if (${TankTarget.Equal[0]} && ${Zone.Name.Find[${StickZone}]} && ${Spawn[${StickTar}].ID} && ${Spawn[${StickTar}].Distance}<300 && ${LineOfSight[${Me.Y},${Me.X},${Me.Z}:${Spawn[${StickTar}].Y},${Spawn[${StickTar}].X},${Spawn[${StickTar}].Z}]}) /multiline ; /echo Sticking to [ ${Spawn[${StickTar}].CleanName} ];/squelch /face ID ${StickTar} fast;/stick ID ${StickTar} 10 moveback behindonce@/noparse /bca //timed 10 /if (${Stick.Status.Equal[OFF]}) /bc NOT Sticking to [ ${Spawn[${StickTar}].CleanName} - ${Spawn[${StickTar}].Distance} - ${Spawn[${StickTar}].LineOfSight} - ${Zone.Name} ]
/call Runwait
| ETC...
|** Show MQ2 Error on Start sequence **|
/if (${MacroQuest.Error.NotEqual[NULL]}) {
/bcaa //docommand /${echo} ${Cr}Last MQ2 error${Cx}: ${MacroQuest.Error} - [ PC:${Ct}${Me.CleanName}${Cx} ]
/endmac
}
|** Auto start the MAIN macro
/echo Main macro starting...
/squelch /docommand /macro main.mac
/return
Sub Runwait
|** ini file waiting for Windows 10 multiple write in sampe ini BUG **|
/if (!${Defined[Running]}) /declare Running int outer ${MacroQuest.Running}
/delay 1s (${Running}<${MacroQuest.Running})
/varset Running ${MacroQuest.Running}
/return