* Made the party booking search pass results as array of pointers, rather than array of indexes, which require further lookup.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14514 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
c13027baf7
commit
4d73f8ab86
@ -1,6 +1,7 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
2010/11/28
|
2010/11/28
|
||||||
|
* Made the party booking search pass results as array of pointers, rather than array of indexes, which require further lookup. [Ai4rei]
|
||||||
* Replaced literal constants related to the party booking system with defines. [Ai4rei]
|
* Replaced literal constants related to the party booking system with defines. [Ai4rei]
|
||||||
* Fixed pets derived from immobile monsters not being able to walk (bugreport:3377, since r13789). [Ai4rei]
|
* Fixed pets derived from immobile monsters not being able to walk (bugreport:3377, since r13789). [Ai4rei]
|
||||||
- This also fixes pets using original monster walk speed, instead of the one defined in pet db.
|
- This also fixes pets using original monster walk speed, instead of the one defined in pet db.
|
||||||
|
@ -10832,7 +10832,7 @@ void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd)
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* more_result: 0 - no more, 1 - more
|
* more_result: 0 - no more, 1 - more
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
void clif_PartyBookingSearchAck(int fd, unsigned long *index, int count, bool more_result)
|
void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
int size = sizeof(struct party_booking_ad_info); // structure size (48)
|
int size = sizeof(struct party_booking_ad_info); // structure size (48)
|
||||||
@ -10840,11 +10840,10 @@ void clif_PartyBookingSearchAck(int fd, unsigned long *index, int count, bool mo
|
|||||||
WFIFOHEAD(fd,size*count + 5);
|
WFIFOHEAD(fd,size*count + 5);
|
||||||
WFIFOW(fd,0) = 0x805;
|
WFIFOW(fd,0) = 0x805;
|
||||||
WFIFOW(fd,2) = size*count + 5;
|
WFIFOW(fd,2) = size*count + 5;
|
||||||
WFIFOB(fd,4) = (bool)more_result;
|
WFIFOB(fd,4) = more_result;
|
||||||
for(i=0; i<count; i++)
|
for(i=0; i<count; i++)
|
||||||
{
|
{
|
||||||
pb_ad = party_booking_getdata(index[i]);
|
pb_ad = results[i];
|
||||||
if(pb_ad == NULL) return;
|
|
||||||
WFIFOL(fd,i*size+5) = pb_ad->index;
|
WFIFOL(fd,i*size+5) = pb_ad->index;
|
||||||
memcpy(WFIFOP(fd,i*size+9),pb_ad->charname,NAME_LENGTH);
|
memcpy(WFIFOP(fd,i*size+9),pb_ad->charname,NAME_LENGTH);
|
||||||
WFIFOL(fd,i*size+33) = pb_ad->starttime;
|
WFIFOL(fd,i*size+33) = pb_ad->starttime;
|
||||||
|
@ -469,7 +469,7 @@ void clif_progressbar_abort(struct map_session_data * sd);
|
|||||||
|
|
||||||
void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag);
|
void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag);
|
||||||
void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag);
|
void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag);
|
||||||
void clif_PartyBookingSearchAck(int fd, unsigned long *index, int count, bool more_result);
|
void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result);
|
||||||
void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);
|
void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);
|
||||||
void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index);
|
void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index);
|
||||||
void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);
|
void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);
|
||||||
|
@ -1078,13 +1078,6 @@ static struct party_booking_ad_info* create_party_booking_data(int party_id)
|
|||||||
return pb_ad;
|
return pb_ad;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct party_booking_ad_info* party_booking_getdata(unsigned long index)
|
|
||||||
{
|
|
||||||
struct party_booking_ad_info *pb_ad;
|
|
||||||
pb_ad = (struct party_booking_ad_info*)idb_get(party_booking_db, index);
|
|
||||||
return pb_ad;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool check_party_leader(struct map_session_data *sd, struct party_data *p)
|
bool check_party_leader(struct map_session_data *sd, struct party_data *p)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -1130,8 +1123,7 @@ void party_booking_register(struct map_session_data *sd, short level, short mapi
|
|||||||
|
|
||||||
clif_PartyBookingRegisterAck(sd, 0);
|
clif_PartyBookingRegisterAck(sd, 0);
|
||||||
clif_PartyBookingInsertNotify(sd, pb_ad); // Notice
|
clif_PartyBookingInsertNotify(sd, pb_ad); // Notice
|
||||||
clif_PartyBookingSearchAck(sd->fd, &pb_ad->index, 1, false); // Update Client!
|
clif_PartyBookingSearchAck(sd->fd, &pb_ad, 1, false); // Update Client!
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void party_booking_update(struct map_session_data *sd, short* job)
|
void party_booking_update(struct map_session_data *sd, short* job)
|
||||||
@ -1157,18 +1149,17 @@ void party_booking_update(struct map_session_data *sd, short* job)
|
|||||||
else pb_ad->p_detail.job[i] = -1;
|
else pb_ad->p_detail.job[i] = -1;
|
||||||
|
|
||||||
clif_PartyBookingUpdateNotify(sd, pb_ad);
|
clif_PartyBookingUpdateNotify(sd, pb_ad);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount)
|
void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount)
|
||||||
{
|
{
|
||||||
struct party_booking_ad_info *pb_ad;
|
struct party_booking_ad_info *pb_ad;
|
||||||
int i, count=0;
|
int i, count=0;
|
||||||
unsigned long index_list[PARTY_BOOKING_RESULTS];
|
struct party_booking_ad_info* result_list[PARTY_BOOKING_RESULTS];
|
||||||
bool more_result = false;
|
bool more_result = false;
|
||||||
DBIterator* iter = party_booking_db->iterator(party_booking_db);
|
DBIterator* iter = party_booking_db->iterator(party_booking_db);
|
||||||
|
|
||||||
memset(index_list, 0, sizeof(index_list));
|
memset(result_list, 0, sizeof(result_list));
|
||||||
|
|
||||||
for( pb_ad = (struct party_booking_ad_info*)iter->first(iter,NULL); iter->exists(iter); pb_ad = (struct party_booking_ad_info*)iter->next(iter,NULL) )
|
for( pb_ad = (struct party_booking_ad_info*)iter->first(iter,NULL); iter->exists(iter); pb_ad = (struct party_booking_ad_info*)iter->next(iter,NULL) )
|
||||||
{
|
{
|
||||||
@ -1179,19 +1170,19 @@ void party_booking_search(struct map_session_data *sd, short level, short mapid,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (mapid == 0 && job == -1)
|
if (mapid == 0 && job == -1)
|
||||||
index_list[count] = pb_ad->index;
|
result_list[count] = pb_ad;
|
||||||
else if (mapid == 0) {
|
else if (mapid == 0) {
|
||||||
for(i=0; i<PARTY_BOOKING_JOBS; i++)
|
for(i=0; i<PARTY_BOOKING_JOBS; i++)
|
||||||
if (pb_ad->p_detail.job[i] == job && job != -1)
|
if (pb_ad->p_detail.job[i] == job && job != -1)
|
||||||
index_list[count] = pb_ad->index;
|
result_list[count] = pb_ad;
|
||||||
} else if (job == -1){
|
} else if (job == -1){
|
||||||
if (pb_ad->p_detail.mapid == mapid)
|
if (pb_ad->p_detail.mapid == mapid)
|
||||||
index_list[count] = pb_ad->index;
|
result_list[count] = pb_ad;
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
iter->destroy(iter);
|
iter->destroy(iter);
|
||||||
clif_PartyBookingSearchAck(sd->fd, index_list, count, more_result);
|
clif_PartyBookingSearchAck(sd->fd, result_list, count, more_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool party_booking_delete(struct map_session_data *sd, bool force_delete)
|
bool party_booking_delete(struct map_session_data *sd, bool force_delete)
|
||||||
|
@ -86,7 +86,6 @@ int party_foreachsamemap(int (*func)(struct block_list *,va_list),struct map_ses
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Party Booking in KRO [Spiria]
|
* Party Booking in KRO [Spiria]
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
struct party_booking_ad_info* party_booking_getdata(unsigned long index);
|
|
||||||
void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job);
|
void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job);
|
||||||
void party_booking_update(struct map_session_data *sd, short* job);
|
void party_booking_update(struct map_session_data *sd, short* job);
|
||||||
void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount);
|
void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user