Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 10-20-2011, 01:07 PM
KingMort
Banned
 
Join Date: Sep 2006
Posts: 841
Default

Finally figured it out hehe , good instructions like i said.

Hopefully you can also tell me how to fix it that would rock

Code:
>	Zone.exe!Mob::CalcFocusEffect(focusType type=focusManaCost, unsigned short focus_id=65535, unsigned short spell_id=7058, bool best_focus=false)  Line 3707 + 0x6 bytes	C++
 	Zone.exe!Client::GetFocusEffect(focusType type=focusManaCost, unsigned short spell_id=7058)  Line 4168 + 0x1e bytes	C++
 	Zone.exe!Client::GetActSpellCost(unsigned short spell_id=7058, int cost=1375)  Line 313 + 0xf bytes	C++
 	Zone.exe!Mob::DoCastSpell(unsigned short spell_id=7058, unsigned short target_id=322, unsigned short slot=0, int cast_time=50, int mana_cost=1375, unsigned int * oSpellWillFinish=0x00000000, unsigned int item_slot=4294967295, unsigned int timer=4294967295, unsigned int timer_duration=0, unsigned int type=0, short resist_adjust=0)  Line 399 + 0x19 bytes	C++
 	Zone.exe!Mob::CastSpell(unsigned short spell_id=7058, unsigned short target_id=0, unsigned short slot=0, int cast_time=-1, int mana_cost=-1, unsigned int * oSpellWillFinish=0x00000000, unsigned int item_slot=4294967295, unsigned int timer=4294967295, unsigned int timer_duration=0, unsigned int type=0, short * resist_adjust=0x00000000)  Line 313	C++
 	Zone.exe!Client::Handle_OP_CastSpell(const EQApplicationPacket * app=0x014e9ce8)  Line 4595	C++
 	Zone.exe!Client::HandlePacket(const EQApplicationPacket * app=0x014e9ce8)  Line 456	C++
 	Zone.exe!Client::Process()  Line 740 + 0xf bytes	C++
 	Zone.exe!EntityList::MobProcess()  Line 488 + 0x1a bytes	C++
 	Zone.exe!main(int argc=1, char * * argv=0x003a2fe0)  Line 480	C++
 	Zone.exe!__tmainCRTStartup()  Line 266 + 0x12 bytes	C
 	kernel32.dll!7c816d4f() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	kernel32.dll!7c8399f3() 	
 	Zone.exe!Database::LoadVariables()  Line 1016 + 0x14 bytes	C++
 	cc7d83cc()
Also the window above had an arrow pointing to this section ..

Code:
	for (int i = 0; i < EFFECT_COUNT; i++) {
>		switch (focus_spell.effectid[i]) {
		case SE_Blank:
			break;
Reply With Quote
  #2  
Old 10-20-2011, 01:50 PM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

Looking at your call stack, and looking at the source code, I could see this crash happening if you had an item with no innate focus effect, but that item has an aug which does have
a focus effect.

Not sure if that code has been altered recently, but this patch may fix it (totally untested):
Code:
Index: spell_effects.cpp
===================================================================
--- spell_effects.cpp   (revision 2034)
+++ spell_effects.cpp   (working copy)
@@ -4110,20 +4110,20 @@
                                                focus_max = CalcFocusEffect(type, TempItemAug->Focus.Effect, spell_id, true);
                                                if (focus_max > 0 && focus_max_real >= 0 && focus_max > focus_max_real) {
                                                        focus_max_real = focus_max;
-                                                       UsedItem = TempItem;
+                                                       UsedItem = TempItemAug;
                                                } else if (focus_max < 0 && focus_max < focus_max_real) {
                                                        focus_max_real = focus_max;
-                                                       UsedItem = TempItem;
+                                                       UsedItem = TempItemAug;
                                                }
                                        }
                                        else {
                                                Total = CalcFocusEffect(type, TempItemAug->Focus.Effect, spell_id);
                                                if (Total > 0 && realTotal >= 0 && Total > realTotal) {
                                                        realTotal = Total;
-                                                       UsedItem = TempItem;
+                                                       UsedItem = TempItemAug;
                                                } else if (Total < 0 && Total < realTotal) {
                                                        realTotal = Total;
-                                                       UsedItem = TempItem;
+                                                       UsedItem = TempItemAug;
                                                }
                                        }
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 12:12 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3