Go Back   EQEmulator Home > EQEmulator Forums > Archives > Archive::Development > Archive::Development

Archive::Development Archive area for Development's posts that were moved here after an inactivity period of 90 days.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-25-2004, 10:08 AM
cofruben
Old-EQEmu Developer
 
Join Date: Oct 2002
Location: Spain
Posts: 323
Default Search Recipes

This is a beta,wont work very well but at least is a start.Im working on it,if someone can help me a little,it will be very good.Not sure if opcodes are still up to date.

opcodes
Code:
#define OP_SendSearchResults   0x01f9 
#define OP_SearchRecipe         0x01f8 
#define OP_RecipeInfo         0x01fa 
#define OP_RequestFavRecipe      0x0321
structure for packets:
Code:
struct SearchRecipe_Struct 
{ 
/* 
   0: 13 00 00 00 00 00 00 00 - 00 00 00 00 F4 01 00 00  | ................ 
  16: 68 6F 6C 61 00 00 00 00 - 00 00 00 00 00 00 00 00  | name............ 
  32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
  48: 00 03 00 00 34 DD 13 00 - 9C E8 13 00 A0 F7 50 01  | ....4.........P. 
  64: 00 00 00 00 94 04 00 00 - A4 C9 33 00 A4 C9 33 00  | ..........3...3. 

*/ 
/*000*/   uint32 tradeskill; 
/*004*/   uint32 unknown004; 
/*008*/   uint32 mintrivial; 
/*012*/   uint32 maxtrivial; 
/*016*/   char recipename[32]; 

}; 
struct SendRecipeSearch_Struct 
{ 
//  [OPCode: 0x01fd] [Raw OPCode: 0x01fd] [Size: 84] 
//   0: 0F 00 00 00 1B 46 00 00 - 03 00 00 00 08 01 00 00  | .....F.......... 
//  16: 24 00 00 00 52 61 74 20 - 45 61 72 20 53 61 6E 64  | $...Rat Ear Sand 
//  32: 77 69 63 68 00 00 00 00 - 00 00 00 00 00 00 00 00  | wich............ 
//  48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
//  64: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................ 
//  80: 00 00 00 00                                        | .... 
      int8 unknown000[8]; 
      uint32 components; 
      uint32 recipeid; 
      uint32 trivial; 
      char recipename[64]; 
};
function to process it,in client_process.cpp:
Code:
            case OP_SearchRecipe:{ 
               SearchRecipe_Struct* sr = (SearchRecipe_Struct*) app->pBuffer; 
               SendSearchResults(sr->recipename,sr->tradeskill,sr->mintrivial,sr->maxtrivial); 
               break; 
            } 

void Client::SendSearchResults(char* recipename,int tradeskill,int mintriv,int maxtriv) 
{ 
   char errbuf[MYSQL_ERRMSG_SIZE]; 
    char* query = 0; 
   char* query2=0; 
   MYSQL_RES *result; 
   MYSQL_RES *result2; 
   MYSQL_ROW row; 
   MYSQL_ROW row2; 
   int p=1; 
   unsigned int ids; 
   APPLAYER* outapp = new APPLAYER(OP_SendSearchResults,sizeof(SendRecipeSearch_Struct)); 
   SendRecipeSearch_Struct* ss = (SendRecipeSearch_Struct*)outapp->pBuffer; 
   memset(outapp->pBuffer,0,outapp->size); 
   ss->unknown000[0]=0x0F; 
   ss->unknown000[4]=0x1B; 
   ss->unknown000[5]=0x46; 
   ss->unknown000[8]=0x03; 
   if (database.RunQuery(query,MakeAnyLenString(&query, "select id,name from items where name like '%s%%'",recipename),errbuf,&result)){ 
      while(row=mysql_fetch_row(result)){ 
         ids=atoi(row[0]); 
         if (database.RunQuery(query2,MakeAnyLenString(&query2, "select trivial,id from tradeskillrecipe where product=%i AND trivial>=%i AND trivial<=%i",ids,mintriv,maxtriv),errbuf,&result2)) 
         { 
         if(mysql_num_rows(result2)==0) 
            break; 
         if(p>=10) 
            break; 
            row2=0; 
            row2=mysql_fetch_row(result2); 
            strcpy(ss->recipename,row[1]); 
            ss->trivial=atoi(row2[0]); 
            ss->recipeid=atoi(row2[1]); 
            ss->components=3; // need to work this 
            this->QueuePacket(outapp); 
            DumpPacket(outapp); 
         p++; 
         } 
         safe_delete_array(query); 
         safe_delete_array(query2); 
      } 
   } 
   safe_delete(outapp); 
}
and declare it in client.h
Code:
void SendSearchResults(char* recipename,int tradeskill,int mintriv,int maxtriv);
Things need to be finished:

-Send recipe information(when you click on the recipe)
-Favorites
-Auto combine.
-Check opcodes.


I will post updates when I finish them,working on several things atm.Thanks. :twisted:
Reply With Quote
Reply


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 07:03 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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3