View Single Post
  #3  
Old 11-14-2006, 05:15 AM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

I worked it out. Here's the "real" patch; it deals with only unmemming the spells you need to remove, and everything appears to work perfectly. I will go and have a lie-down now

Paul.

Code:
*** ../../EQEmu-0.7.0-903/zone/client_packet.cpp        2006-10-31 03:04:23.000000000 +0000
--- client_packet.cpp   2006-11-14 16:59:45.000000000 +0000
***************
*** 307,312 ****
--- 307,313 ----
        ConnectedOpcodes[OP_SenseHeading] = &Client::Handle_OP_Ignore;
        ConnectedOpcodes[OP_FloatListThing] = &Client::Handle_OP_Ignore;
        ConnectedOpcodes[OP_WorldUnknown001] = &Client::Handle_OP_Ignore;
+       ConnectedOpcodes[OP_LoadSpellSet] = &Client::Handle_OP_LoadSpellSet;

  }

***************
*** 4393,4398 ****
--- 4394,4414 ----
        return;
  }

+ void Client::Handle_OP_LoadSpellSet(const EQApplicationPacket *app)
+ {
+       if(app->size!=sizeof(LoadSpellSet_Struct))
+               printf("Wrong size of LoadSpellSet_Struct! Expected: %i, Got: %i\n",sizeof(LoadSpellSet_Struct),app->size);
+       else {
+               int i;
+               LoadSpellSet_Struct* set=(LoadSpellSet_Struct*)app->pBuffer;
+               for(i=0;i<MAX_PP_MEMSPELL;i++) {
+                       if (set->spell[i] != 0xFFFFFFFF) UnmemSpell(i,true);
+               }
+       }
+       return;
+ }
+
+
  void Client::Handle_OP_PetitionBug(const EQApplicationPacket *app)
  {
        if(app->size!=sizeof(PetitionBug_Struct))

*** ../../EQEmu-0.7.0-903/zone/client_packet.h  2006-08-15 02:18:33.000000000 +0100
--- client_packet.h     2006-11-13 11:17:23.000000000 +0000
***************
*** 207,210 ****
--- 207,211 ----
        void Handle_OP_RequestTitles(const EQApplicationPacket *app);
        void Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket *app);
        void Handle_OP_Ignore(const EQApplicationPacket *app);
+       void Handle_OP_LoadSpellSet(const EQApplicationPacket *app);

*** ../../EQEmu-0.7.0-903/common/eq_packet_structs.h    2006-10-22 21:12:38.000000000 +0100
--- eq_packet_structs.h 2006-11-14 16:42:48.000000000 +0000
***************
*** 3178,3183 ****
--- 3178,3187 ----
        uint32  value;          //always 4
  };

+ struct LoadSpellSet_Struct {
+       uint32  spell[10];      // 0xFFFFFFFF if no action, slot number if to unmem starting at 0
+ };
+
  //old structures live here:
  #include "eq_old_structs.h"
Reply With Quote