Need help with a macro you are writing? Ask here!
Moderator: MacroQuest Developers
-
pukpuk
- orc pawn

- Posts: 12
- Joined: Thu Sep 02, 2004 5:35 am
Post
by pukpuk » Wed Sep 15, 2004 7:03 am
After updating to the new version of MQ2, I recognized that my "old" macro does bring EQ to crash immediately after starting to cast a "HoT-spell". Does anyone of u recognized simliar problems or is there any change in spellcasting...?
Here is the important part of my macro:
#turbo 40
#include spell_routines.inc
#Chat Chat
#Chat tell
Sub Main
/declare mychannel string outer XXXchannel
/declare healspell string outer Supernal Light
/declare fasthealspell string outer Supernal Remedy
/declare hotspell string outer Supernal Elixir
/declare daspell string outer Divine Barrier
/declare yaulpspell string outer Yaulp V
/declare spellhastebuff string outer Blessing of Reverence
/declare selfhpbuff string outer Blessed Armor of the Risen
/declare Poison string outer Antidote
/declare Disease string outer Counteract Disease
/declare gatespell string outer Gate
/declare Resurrect string outer Reviviscence
/declare Manastone int outer 0
/declare virtue string outer Virtue
/declare symbol string outer Symbol of Kazad
/declare stun string outer Tarnation
/declare hammer string outer Unswerving Hammer of Faith
/declare ddspell string outer Condemnation
/declare hotpoint int outer 85
/declare healpoint int outer 65
/declare fasthealpoint int outer 40
/declare dacastpoint int outer 30
/declare worsthurtid int outer 0
/declare worsthurt string outer NULL
/declare worsthp int outer 100
/declare worsthurtmember int outer 99
/declare hottimer0 int outer 0
/declare hottimer1 int outer 0
/declare hottimer2 int outer 0
/declare hottimer3 int outer 0
/declare hottimer4 int outer 0
/declare hottimer5 int outer 0
/declare spellrange int outer 100
/declare gmember int outer
/declare rodwait int outer 0
/declare following int outer 0
/declare follname string outer NULL
/declare autosit int outer 1
/declare manatimer int outer 0
/declare oomtimer int outer 0
/join ${mychannel}
/echo AFaeppo Active, running in Autohealmode
/echo Casting ${hotspell} at ${hotpoint}% HP
/echo Casting ${healspell} at ${healpoint}% HP
/echo Casting ${fasthealspell} at ${fasthealpoint}% HP
/echo Casting ${daspell} at ${dacastpoint}% HP
:healloop
/call GMCheck
/if (${Me.PctHPs}<=${dacastpoint}) {
/if (${Me.SpellReady[${daspell}]}) {
/g Casting DA!! <<WARNING>> DA!! No Heals for 18 seconds
:retryda
/call Cast "${daspell}"
/delay 1
/if ((!${Me.Buff[${daspell}].ID})&&(${Me.SpellReady[${daspell}]})) /goto :retryda
}
/if (!${Me.Buff[${daspell}].ID}) {
/target myself
/call cast "${fasthealspell}" gem4 1s
}
}
/varset worsthurt NULL
/varset worsthp 100
/varset worsthurtid 0
/varset worsthurtmember 99
/for gmember 0 to ${Group}
/if (${Group[${gmember}].Distance}<=${spellrange}) {
/if (${Group[${gmember}].PctHPs}<${worsthp}) {
/varset worsthurt ${Group[${gmember}].Name}
/varset worsthp ${Group[${gmember}].PctHPs}
/varset worsthurtid ${Group[${gmember}].ID}
/varset worsthurtmember ${gmember}
}
}
/next gmember
/if (${worsthurtid}<>0) {
/target id ${worsthurtid}
/if (${worsthp}<=${fasthealpoint}) {
/call cast "${fasthealspell}" gem4 1s
/g Fast Heal for %t (1.8s)
/goto :healloop
}
/if (${worsthp}<=${healpoint}) {
/call cast "${healspell}" gem3 1s
/g Heal for %t (3s)
/goto :healloop
}
/if (${worsthp}<=${hotpoint}) /call HOT
}
/if (${worsthurtid}==0) {
/if ((!${Me.Buff[Blessing of Reverence].ID})&&(!${Me.Buff[Aura of Reverence].ID})&&(${Me.PctMana}>=60)) {
/target myself
/call cast "${spellhastebuff}" gem7 5s
}
/if ((!${Me.Buff[${selfhpbuff}].ID})&&(!${Me.Buff[Blessing of the Nine].ID})&&(!${Me.Buff[Protection of the Nine].ID})&&(!${Me.Buff[Protection of the Glades].ID})&&(!${Me.Buff[Protection of the Cabbage].ID})&&(${Me.PctMana}>=60)) {
/target myself
/call cast "${selfhpbuff}" gem7 5s
}
}
/call CheckEvents
/if ((${Bool[${Me.Standing}]})&&(!${Me.Mount.ID})&&(${Me.SpellReady[${yaulpspell}]})&&(!${Me.Buff[${yaulpspell}].ID})) {
/call Cast "${yaulpspell}"
}
/goto :healloop
/return
Sub HOT
/if (${worsthurtmember}==0) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer0 1
/timed 300 /varset hottimer0 0
}
}
/if (${worsthurtmember}==1) {
/if (${hottimer1}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer1 1
/timed 300 /varset hottimer1 0
}
}
/if (${worsthurtmember}==2) {
/if (${hottimer2}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer2 1
/timed 300 /varset hottimer2 0
}
}
/if (${worsthurtmember}==3) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer3 1
/timed 300 /varset hottimer3 0
}
}
/if (${worsthurtmember}==4) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer4 1
/timed 300 /varset hottimer4 0
}
}
/if (${worsthurtmember}==5) {
/if (${hottimer5}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer5 1
/timed 300 /varset hottimer5 0
}
}
/Return
-
ztrike
- a ghoul

- Posts: 83
- Joined: Fri Mar 26, 2004 1:17 pm
-
Contact:
Post
by ztrike » Wed Sep 15, 2004 7:08 am
Code: Select all
#turbo 40
#include spell_routines.inc
#Chat Chat
#Chat tell
Sub Main
/declare mychannel string outer XXXchannel
/declare healspell string outer Supernal Light
/declare fasthealspell string outer Supernal Remedy
/declare hotspell string outer Supernal Elixir
/declare daspell string outer Divine Barrier
/declare yaulpspell string outer Yaulp V
/declare spellhastebuff string outer Blessing of Reverence
/declare selfhpbuff string outer Blessed Armor of the Risen
/declare Poison string outer Antidote
/declare Disease string outer Counteract Disease
/declare gatespell string outer Gate
/declare Resurrect string outer Reviviscence
/declare Manastone int outer 0
/declare virtue string outer Virtue
/declare symbol string outer Symbol of Kazad
/declare stun string outer Tarnation
/declare hammer string outer Unswerving Hammer of Faith
/declare ddspell string outer Condemnation
/declare hotpoint int outer 85
/declare healpoint int outer 65
/declare fasthealpoint int outer 40
/declare dacastpoint int outer 30
/declare worsthurtid int outer 0
/declare worsthurt string outer NULL
/declare worsthp int outer 100
/declare worsthurtmember int outer 99
/declare hottimer0 int outer 0
/declare hottimer1 int outer 0
/declare hottimer2 int outer 0
/declare hottimer3 int outer 0
/declare hottimer4 int outer 0
/declare hottimer5 int outer 0
/declare spellrange int outer 100
/declare gmember int outer
/declare rodwait int outer 0
/declare following int outer 0
/declare follname string outer NULL
/declare autosit int outer 1
/declare manatimer int outer 0
/declare oomtimer int outer 0
/join ${mychannel}
/echo AFaeppo Active, running in Autohealmode
/echo Casting ${hotspell} at ${hotpoint}% HP
/echo Casting ${healspell} at ${healpoint}% HP
/echo Casting ${fasthealspell} at ${fasthealpoint}% HP
/echo Casting ${daspell} at ${dacastpoint}% HP
:healloop
/call GMCheck
/if (${Me.PctHPs}<=${dacastpoint}) {
/if (${Me.SpellReady[${daspell}]}) {
/g Casting DA!! <<WARNING>> DA!! No Heals for 18 seconds
:retryda
/call Cast "${daspell}"
/delay 1
/if ((!${Me.Buff[${daspell}].ID})&&(${Me.SpellReady[${daspell}]})) /goto :retryda
}
/if (!${Me.Buff[${daspell}].ID}) {
/target myself
/call cast "${fasthealspell}" gem4 1s
}
}
/varset worsthurt NULL
/varset worsthp 100
/varset worsthurtid 0
/varset worsthurtmember 99
/for gmember 0 to ${Group}
/if (${Group[${gmember}].Distance}<=${spellrange}) {
/if (${Group[${gmember}].PctHPs}<${worsthp}) {
/varset worsthurt ${Group[${gmember}].Name}
/varset worsthp ${Group[${gmember}].PctHPs}
/varset worsthurtid ${Group[${gmember}].ID}
/varset worsthurtmember ${gmember}
}
}
/next gmember
/if (${worsthurtid}<>0) {
/target id ${worsthurtid}
/if (${worsthp}<=${fasthealpoint}) {
/call cast "${fasthealspell}" gem4 1s
/g Fast Heal for %t (1.8s)
/goto :healloop
}
/if (${worsthp}<=${healpoint}) {
/call cast "${healspell}" gem3 1s
/g Heal for %t (3s)
/goto :healloop
}
/if (${worsthp}<=${hotpoint}) /call HOT
}
/if (${worsthurtid}==0) {
/if ((!${Me.Buff[Blessing of Reverence].ID})&&(!${Me.Buff[Aura of Reverence].ID})&&(${Me.PctMana}>=60)) {
/target myself
/call cast "${spellhastebuff}" gem7 5s
}
/if ((!${Me.Buff[${selfhpbuff}].ID})&&(!${Me.Buff[Blessing of the Nine].ID})&&(!${Me.Buff[Protection of the Nine].ID})&&(!${Me.Buff[Protection of the Glades].ID})&&(!${Me.Buff[Protection of the Cabbage].ID})&&(${Me.PctMana}>=60)) {
/target myself
/call cast "${selfhpbuff}" gem7 5s
}
}
/call CheckEvents
/if ((${Bool[${Me.Standing}]})&&(!${Me.Mount.ID})&&(${Me.SpellReady[${yaulpspell}]})&&(!${Me.Buff[${yaulpspell}].ID})) {
/call Cast "${yaulpspell}"
}
/goto :healloop
/return
Sub HOT
/if (${worsthurtmember}==0) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer0 1
/timed 300 /varset hottimer0 0
}
}
/if (${worsthurtmember}==1) {
/if (${hottimer1}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer1 1
/timed 300 /varset hottimer1 0
}
}
/if (${worsthurtmember}==2) {
/if (${hottimer2}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer2 1
/timed 300 /varset hottimer2 0
}
}
/if (${worsthurtmember}==3) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer3 1
/timed 300 /varset hottimer3 0
}
}
/if (${worsthurtmember}==4) {
/if (${hottimer0}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer4 1
/timed 300 /varset hottimer4 0
}
}
/if (${worsthurtmember}==5) {
/if (${hottimer5}==0) {
/call cast "${hotspell}" gem5 1s
/g HoT for %t (3s)
/varset hottimer5 1
/timed 300 /varset hottimer5 0
}
}
/Return
(i know.. i didnt post an answer.. just think its a bit more fun to look at in code)
-
pukpuk
- orc pawn

- Posts: 12
- Joined: Thu Sep 02, 2004 5:35 am
Post
by pukpuk » Wed Sep 15, 2004 3:12 pm
ok after several tests with other macros I found out, that it seems to be a bug with casting at all. I have lot of crashs if casting while running a macro.
Not tested exactly where the bugs are... Will proceed.
-
Cr4zyb4rd
- Plugins Czar
- Posts: 1449
- Joined: Tue Jul 20, 2004 11:46 am
Post
by Cr4zyb4rd » Wed Sep 15, 2004 3:22 pm
Code: Select all
#define EQ_Character__GetFocusCastingTimeModifier 0x48CC24
in eqgame.h should fix at least one CTD in spell_routines.inc, give that a try
-
Neolesh
- a hill giant

- Posts: 231
- Joined: Mon Aug 23, 2004 11:15 am
Post
by Neolesh » Wed Sep 15, 2004 10:04 pm
This did not fix the crashing for me. Still crashing while trying to cast using spell_routines.inc
-
Night Hawk
- a grimling bloodguard

- Posts: 590
- Joined: Fri Aug 13, 2004 4:56 pm
Post
by Night Hawk » Wed Sep 15, 2004 10:05 pm
Did you recompile after making the #define change?
-
Neolesh
- a hill giant

- Posts: 231
- Joined: Mon Aug 23, 2004 11:15 am
Post
by Neolesh » Thu Sep 16, 2004 1:34 am
Yes I had recompiled at that point. What I found out the problem was is I had a version of MQ2 that came out about an hour before the current one and I didn't know any different. It's fixed now. Apparently the CTD was more than just this one offset but the latest version of mq2 works fine. Sorry about that.
-
BorealisSunbinder
- orc pawn

- Posts: 12
- Joined: Thu Oct 17, 2002 6:28 pm
Post
by BorealisSunbinder » Thu Sep 16, 2004 2:14 am
I just wanted to acknowledge this in case someone else was chasing down the Casting-Causing-Crash problem. I had the MQ2-20040914 version of the download and was experiencing this very problem. Re-downloaded and got the MQ2-20040915 version and everything shapped right back up.
Thanks to those posting here and all the DEVS!!!
-
pukpuk
- orc pawn

- Posts: 12
- Joined: Thu Sep 02, 2004 5:35 am
Post
by pukpuk » Thu Sep 16, 2004 8:04 am
Yeah the "second" new version seems to be working very well :)
Thanks a lot!!