diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/atcommand.c | 40 | ||||
-rw-r--r-- | src/map/pet.c | 80 | ||||
-rw-r--r-- | src/map/pet.h | 2 | ||||
-rw-r--r-- | src/map/skill.c | 9 |
4 files changed, 41 insertions, 90 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 045448888..8a23c9d05 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -201,7 +201,6 @@ ACMD_FUNC(uptime); // by MC Cameri ACMD_FUNC(changesex); // by MC Cameri ACMD_FUNC(mute); // celest ACMD_FUNC(refresh); // by MC Cameri -ACMD_FUNC(petid); // by MC Cameri ACMD_FUNC(identify); // by MC Cameri ACMD_FUNC(gmotd); // Added by MC Cameri, created by davidsiaw ACMD_FUNC(misceffect); // by MC Cameri @@ -486,7 +485,6 @@ static AtCommandInfo atcommand_info[] = { { AtCommand_Mute, "@mute", 80, atcommand_mute }, // [celest] { AtCommand_WhoZeny, "@whozeny", 20, atcommand_whozeny }, // [Valaris] { AtCommand_Refresh, "@refresh", 1, atcommand_refresh }, // by MC Cameri - { AtCommand_PetId, "@petid", 40, atcommand_petid }, // by MC Cameri { AtCommand_Identify, "@identify", 40, atcommand_identify }, // by MC Cameri { AtCommand_Gmotd, "@gmotd", 20, atcommand_gmotd }, // Added by MC Cameri, created by davidsiaw { AtCommand_MiscEffect, "@misceffect", 50, atcommand_misceffect }, // by MC Cameri @@ -7592,44 +7590,6 @@ int atcommand_refresh(const int fd, struct map_session_data* sd, const char* com } /*========================================== - * @petid <part of pet name> - * => Displays a list of matching pets. - *------------------------------------------*/ -int atcommand_petid(const int fd, struct map_session_data* sd, const char* command, const char* message) -{ - char searchtext[100]; - char temp0[100]; - int cnt = 0, i = 0; - - nullpo_retr(-1, sd); - - if (!message || !*message || sscanf(message, "%99s", searchtext) < 1) - { - clif_displaymessage(fd, "Please, enter a pet name (usage: @petid <part of pet name>)."); - return -1; - } - - snprintf(temp0, sizeof(temp0), "First %i search results for: %s", MAX_SEARCH, searchtext); - clif_displaymessage(fd,temp0); - - for (i = 0; i < MAX_PET_DB; i++) - { - if (stristr(pet_db[i].name, searchtext) || stristr(pet_db[i].jname, searchtext)) - { - cnt++; - if (cnt <= MAX_SEARCH) { // limits the number of search results - snprintf(temp0, sizeof(temp0), "ID: %i -- Name: %s", pet_db[i].class_, pet_db[i].jname); - clif_displaymessage(fd, temp0); - } - } - } - - snprintf(temp0, sizeof(temp0), "%i pets have '%s' in their name.", cnt, searchtext); - clif_displaymessage(fd, temp0); - return 0; -} - -/*========================================== * @identify * => GM's magnifier. *------------------------------------------*/ diff --git a/src/map/pet.c b/src/map/pet.c index 302669632..606e29d31 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -6,6 +6,7 @@ #include "../common/nullpo.h" #include "../common/malloc.h" #include "../common/showmsg.h" +#include "../common/strlib.h" #include "../common/utils.h" #include "../common/ers.h" @@ -23,7 +24,7 @@ #include "script.h" #include "skill.h" #include "unit.h" -#include "atcommand.h" +#include "atcommand.h" // msg_txt() #include <stdio.h> #include <stdlib.h> @@ -279,30 +280,16 @@ int search_petDB_index(int key,int type) { int i; - for(i=0;i<MAX_PET_DB;i++) { + for( i = 0; i < MAX_PET_DB; i++ ) + { if(pet_db[i].class_ <= 0) continue; switch(type) { - case PET_CLASS: - if(pet_db[i].class_ == key) - return i; - break; - case PET_CATCH: - if(pet_db[i].itemID == key) - return i; - break; - case PET_EGG: - if(pet_db[i].EggID == key) - return i; - break; - case PET_EQUIP: - if(pet_db[i].AcceID == key) - return i; - break; - case PET_FOOD: - if(pet_db[i].FoodID == key) - return i; - break; + case PET_CLASS: if(pet_db[i].class_ == key) return i; break; + case PET_CATCH: if(pet_db[i].itemID == key) return i; break; + case PET_EGG: if(pet_db[i].EggID == key) return i; break; + case PET_EQUIP: if(pet_db[i].AcceID == key) return i; break; + case PET_FOOD: if(pet_db[i].FoodID == key) return i; break; default: return -1; } @@ -1252,40 +1239,46 @@ int pet_skill_support_timer(int tid,unsigned int tick,int id,int data) *------------------------------------------*/ int read_petdb() { + char* filename[] = {"pet_db.txt","pet_db2.txt"}; FILE *fp; - char line[1024]; - int nameid,i,k; - int j=0; - int lines; - char *filename[]={"pet_db.txt","pet_db2.txt"}; - char *str[32],*p,*np; - + int nameid,i,j,k; -//Remove any previous scripts in case reloaddb was invoked. - for(j =0; j < MAX_PET_DB; j++) + // Remove any previous scripts in case reloaddb was invoked. + for( j = 0; j < MAX_PET_DB; j++ ) if (pet_db[j].script) { aFree(pet_db[j].script); pet_db[j].script = NULL; } - j = 0; + + // clear database memset(pet_db,0,sizeof(pet_db)); - for(i=0;i<2;i++){ + + j = 0; // entry counter + for( i = 0; i < ARRAYLENGTH(filename); i++ ) + { + char line[1024]; + int lines; + sprintf(line, "%s/%s", db_path, filename[i]); fp=fopen(line,"r"); - if(fp==NULL){ - if(i>0) - continue; - ShowError("can't read %s\n",line); - return -1; + if( fp == NULL ) + { + if( i == 0 ) + ShowError("can't read %s\n",line); + continue; } + lines = 0; - while(fgets(line, sizeof(line), fp) && j < MAX_PET_DB) + while( fgets(line, sizeof(line), fp) && j < MAX_PET_DB ) { + char *str[32],*p,*np; + lines++; if(line[0] == '/' && line[1] == '/') continue; + // split string into table columns for(k=0,p=line;k<20;k++){ if((np=strchr(p,','))!=NULL){ str[k]=p; @@ -1307,8 +1300,8 @@ int read_petdb() } pet_db[j].class_ = nameid; - strncpy(pet_db[j].name,str[1],NAME_LENGTH); - strncpy(pet_db[j].jname,str[2],NAME_LENGTH); + safestrncpy(pet_db[j].name,str[1],NAME_LENGTH); + safestrncpy(pet_db[j].jname,str[2],NAME_LENGTH); pet_db[j].itemID=atoi(str[3]); pet_db[j].EggID=atoi(str[4]); pet_db[j].AcceID=atoi(str[5]); @@ -1334,7 +1327,8 @@ int read_petdb() pet_db[j].script = parse_script(np, filename[i], lines, 0); j++; } - if (j >= MAX_PET_DB) + + if( j >= MAX_PET_DB ) ShowWarning("read_petdb: Reached max number of pets [%d]. Remaining pets were not read.\n ", MAX_PET_DB); fclose(fp); ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' pets in '"CL_WHITE"%s"CL_RESET"'.\n",j,filename[i]); @@ -1367,7 +1361,7 @@ int do_init_pet(void) int do_final_pet(void) { int i; - for(i = 0;i < MAX_PET_DB; i++) { + for( i = 0; i < MAX_PET_DB; i++ ) { if(pet_db[i].script) { script_free_code(pet_db[i].script); pet_db[i].script = NULL; diff --git a/src/map/pet.h b/src/map/pet.h index 8ecf94d93..c1c27b105 100644 --- a/src/map/pet.h +++ b/src/map/pet.h @@ -5,7 +5,7 @@ #define _PET_H_ #define MAX_PET_DB 300 -#define MAX_PETLOOT_SIZE 30 // [Valaris] - Changed to MAX_PETLOOT_SIZE [Skotlex] +#define MAX_PETLOOT_SIZE 30 struct s_pet_db { short class_; diff --git a/src/map/skill.c b/src/map/skill.c index d9518d9bf..98db18af9 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3772,12 +3772,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SA_TAMINGMONSTER: clif_skill_nodamage(src,bl,skillid,skilllv,1); if (sd && dstmd) { - for (i = 0; i < MAX_PET_DB; i++) { - if (dstmd->class_ == pet_db[i].class_) { - pet_catch_process1 (sd, dstmd->class_); - break; - } - } + ARR_FIND( 0, MAX_PET_DB, i, dstmd->class_ == pet_db[i].class_ ); + if( i < MAX_PET_DB ) + pet_catch_process1(sd, dstmd->class_); } break; |