BUG: $char(gem,"spell name")

A forum for feature requests/discussions and user submitted patches that improve MQ2

Moderator: MacroQuest Developers

User avatar
Curious
a ghoul
a ghoul
Posts: 88
Joined: Wed Aug 27, 2003 5:19 am

BUG: $char(gem,"spell name")

Post by Curious » Wed Sep 10, 2003 2:33 pm

Code: Select all

:Start
/cast "turtle skin"
:CastLoop
/doevents
/if n $char(gem,"turtle skin")<0 /goto :CastLoop
/goto :Start
The :CastLoop exits as soon as the spell is done casting - not when the gem becomes active again. Also, a /delay 5 is now needed after the loop or you get the error "You are not ready yet"

javaspot
orc pawn
orc pawn
Posts: 25
Joined: Mon Oct 07, 2002 10:54 pm

Post by javaspot » Thu Sep 11, 2003 9:03 am

On my system $char(gem,"name of spell") crashes the client.

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

Post by driftinsupra » Thu Sep 11, 2003 1:06 pm

I scripts it crashes my client....when typed with a /echo it is just fine.

Shocks
a ghoul
a ghoul
Posts: 101
Joined: Tue Feb 18, 2003 3:26 pm
Contact:

Post by Shocks » Thu Sep 11, 2003 6:52 pm

Same here $char(gem,spellname) also is what is crashing my script.

Thanks all devs.

User avatar
Curious
a ghoul
a ghoul
Posts: 88
Joined: Wed Aug 27, 2003 5:19 am

Post by Curious » Fri Sep 12, 2003 2:39 am

It's strange to hear the number of people who chrash using $char(gem,spellname) ... it doesn't crash me. Is there a specific spell everyone is checking to get the crash? I use it in a buff-up routine, casting Spirit of Wolf along with 4 other buffs - and the only problems I have are mentioned in the first post.

Shocks
a ghoul
a ghoul
Posts: 101
Joined: Tue Feb 18, 2003 3:26 pm
Contact:

Ensnare

Post by Shocks » Fri Sep 12, 2003 9:18 am

Ensnare seems to be the one that crashes me. Ill check other spells.

Yep I found no other spells that crash me just Ensnare. Very strange....

javaspot
orc pawn
orc pawn
Posts: 25
Joined: Mon Oct 07, 2002 10:54 pm

Post by javaspot » Fri Sep 12, 2003 11:54 pm

Mine was "Ring of the Nexus"

MacroFiend
a grimling bloodguard
a grimling bloodguard
Posts: 662
Joined: Mon Jul 28, 2003 2:47 am

shot in the dark ...

Post by MacroFiend » Sat Sep 13, 2003 1:39 am

but what spell gems were the crashing spells mem'd in ... and what page/position in your spell book are they scribed?

Shocks
a ghoul
a ghoul
Posts: 101
Joined: Tue Feb 18, 2003 3:26 pm
Contact:

Post by Shocks » Sun Sep 14, 2003 6:29 am

It seems to be Gem slot one thats causing me to crash. Checking with more spells.

motd2k
a ghoul
a ghoul
Posts: 141
Joined: Fri Oct 25, 2002 9:46 am

Post by motd2k » Sun Sep 14, 2003 11:16 am

$char(gem,"Spell name") always returns -2... which used to be the value for an unrefreshed gem.

Looks like the struct is incorrect, the value at the address in memory to which the structure points is always 1.


MOTD

User avatar
Curious
a ghoul
a ghoul
Posts: 88
Joined: Wed Aug 27, 2003 5:19 am

Post by Curious » Sun Sep 14, 2003 2:58 pm

On my system, $char(gem,"spell name") only returns -2 while casting. When I get the message of "you feel faster" (or whatever), it returns the gem slot the spell is assigned to, even though the gem is not yet active.

For spells I have not memorized, it returns a 0

Never tried a spell in gem slot 1 (only used 2-6), but never had a crash using it.

Shocks
a ghoul
a ghoul
Posts: 101
Joined: Tue Feb 18, 2003 3:26 pm
Contact:

Post by Shocks » Sun Sep 14, 2003 3:12 pm

I bet dimes to dollars you do that on gem 1 it will crash.

motd2k
a ghoul
a ghoul
Posts: 141
Joined: Fri Oct 25, 2002 9:46 am

Post by motd2k » Sun Sep 14, 2003 6:45 pm

tis a strange problem. Whats happening is you are actually getting the spellstate for the gem *above* the one you are asking for...

Let say you have Harvest in Gem2 and Shielding in Gem3... you do a /echo $char(gem,"Shielding") and you get the spellstate for Harvest. Odd. Looking into it ATM. (thats obviously also why gem1 causes a CTD)



MOTD

motd2k
a ghoul
a ghoul
Posts: 141
Joined: Fri Oct 25, 2002 9:46 am

Post by motd2k » Sun Sep 14, 2003 6:58 pm

Okay, cludged a fix together...

in eqlib_macroparser change...

Code: Select all

                                pSpellSlot = (PEQCASTSPELLWINDOW)pCastSpellWindow->SpellSlots[[color=red]sp[/color]]; 
                                if (pSpellSlot->spellstate != 0) {
                                    strcpy(szTemp,"-2");

to...

Code: Select all

                                pSpellSlot = (PEQCASTSPELLWINDOW)pCastSpellWindow->SpellSlots[[color=red]sp+1[/color]]; 
                                if (pSpellSlot->spellstate != 0) {
                                    strcpy(szTemp,"-2");

Shocks
a ghoul
a ghoul
Posts: 101
Joined: Tue Feb 18, 2003 3:26 pm
Contact:

Post by Shocks » Tue Sep 16, 2003 4:18 pm

Thanks alot MOTD that works like a charm. Would you by chance have any idea about the /memspell issue?