Added adoption to TXT version
git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1364 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a26bc148fb
commit
4c3d26bcbd
@ -2,6 +2,10 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
03/31
|
03/31
|
||||||
|
* Added father/mother/child fields to mmo_char_tostr() and
|
||||||
|
mmo_char_fromstr() [veider]
|
||||||
|
* Added exp sharing between family members for TXT version [veider]
|
||||||
|
* Added char_married() and char_child() to TXT version [veider]
|
||||||
* Fixed memory corruption associated with afm files [SVN 1363: MouseJstr]
|
* Fixed memory corruption associated with afm files [SVN 1363: MouseJstr]
|
||||||
* More pedantic g++ fixes so that it builds without any and
|
* More pedantic g++ fixes so that it builds without any and
|
||||||
all warnings [SVN 1362: MouseJstr]
|
all warnings [SVN 1362: MouseJstr]
|
||||||
|
@ -263,7 +263,7 @@ int mmo_char_tostr(char *str, struct mmo_charstatus *p) {
|
|||||||
|
|
||||||
str_p += sprintf(str_p, "%d\t%d,%d\t%s\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
|
str_p += sprintf(str_p, "%d\t%d,%d\t%s\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
|
||||||
"\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
|
"\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
|
||||||
"\t%s,%d,%d\t%s,%d,%d,%d\t",
|
"\t%s,%d,%d\t%s,%d,%d,%d,%d,%d,%d\t",
|
||||||
p->char_id, p->account_id, p->char_num, p->name, //
|
p->char_id, p->account_id, p->char_num, p->name, //
|
||||||
p->class_, p->base_level, p->job_level,
|
p->class_, p->base_level, p->job_level,
|
||||||
p->base_exp, p->job_exp, p->zeny,
|
p->base_exp, p->job_exp, p->zeny,
|
||||||
@ -276,7 +276,7 @@ int mmo_char_tostr(char *str, struct mmo_charstatus *p) {
|
|||||||
p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom,
|
p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom,
|
||||||
p->last_point.map, p->last_point.x, p->last_point.y, //
|
p->last_point.map, p->last_point.x, p->last_point.y, //
|
||||||
p->save_point.map, p->save_point.x, p->save_point.y,
|
p->save_point.map, p->save_point.x, p->save_point.y,
|
||||||
p->partner_id);
|
p->partner_id,p->father,p->mother,p->child);
|
||||||
for(i = 0; i < 10; i++)
|
for(i = 0; i < 10; i++)
|
||||||
if (p->memo_point[i].map[0]) {
|
if (p->memo_point[i].map[0]) {
|
||||||
str_p += sprintf(str_p, "%s,%d,%d", p->memo_point[i].map, p->memo_point[i].x, p->memo_point[i].y);
|
str_p += sprintf(str_p, "%s,%d,%d", p->memo_point[i].map, p->memo_point[i].x, p->memo_point[i].y);
|
||||||
@ -326,7 +326,27 @@ int mmo_char_fromstr(char *str, struct mmo_charstatus *p) {
|
|||||||
// initilialise character
|
// initilialise character
|
||||||
memset(p, '\0', sizeof(struct mmo_charstatus));
|
memset(p, '\0', sizeof(struct mmo_charstatus));
|
||||||
|
|
||||||
// If it's not char structure of version 1008 and after
|
// If it's not char structure of version 1363 and after
|
||||||
|
if ((set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
|
||||||
|
"\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
|
||||||
|
"\t%[^,],%d,%d\t%[^,],%d,%d,%d,%d,%d,%d%n",
|
||||||
|
&tmp_int[0], &tmp_int[1], &tmp_int[2], p->name, //
|
||||||
|
&tmp_int[3], &tmp_int[4], &tmp_int[5],
|
||||||
|
&tmp_int[6], &tmp_int[7], &tmp_int[8],
|
||||||
|
&tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12],
|
||||||
|
&tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18],
|
||||||
|
&tmp_int[19], &tmp_int[20],
|
||||||
|
&tmp_int[21], &tmp_int[22], &tmp_int[23], //
|
||||||
|
&tmp_int[24], &tmp_int[25], &tmp_int[26],
|
||||||
|
&tmp_int[27], &tmp_int[28], &tmp_int[29],
|
||||||
|
&tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34],
|
||||||
|
p->last_point.map, &tmp_int[35], &tmp_int[36], //
|
||||||
|
p->save_point.map, &tmp_int[37], &tmp_int[38], &tmp_int[39],
|
||||||
|
&tmp_int[40], &tmp_int[41], &tmp_int[42], &next)) != 46) {
|
||||||
|
tmp_int[40] = 0; // father
|
||||||
|
tmp_int[41] = 0; // mother
|
||||||
|
tmp_int[42] = 0; // child
|
||||||
|
// If it's not char structure of version 1008 and before 1363
|
||||||
if ((set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
|
if ((set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
|
||||||
"\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
|
"\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
|
||||||
"\t%[^,],%d,%d\t%[^,],%d,%d,%d%n",
|
"\t%[^,],%d,%d\t%[^,],%d,%d,%d%n",
|
||||||
@ -385,9 +405,14 @@ int mmo_char_fromstr(char *str, struct mmo_charstatus *p) {
|
|||||||
}
|
}
|
||||||
// Char structure of version 1008+
|
// Char structure of version 1008+
|
||||||
} else {
|
} else {
|
||||||
|
set+=3;
|
||||||
//printf("char: new char data ver.3\n");
|
//printf("char: new char data ver.3\n");
|
||||||
}
|
}
|
||||||
if (set != 43)
|
// Char structture of version 1363+
|
||||||
|
} else {
|
||||||
|
//printf("char: new char data ver.4\n");
|
||||||
|
}
|
||||||
|
if (set != 46)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
p->char_id = tmp_int[0];
|
p->char_id = tmp_int[0];
|
||||||
@ -430,6 +455,9 @@ int mmo_char_fromstr(char *str, struct mmo_charstatus *p) {
|
|||||||
p->save_point.x = tmp_int[37];
|
p->save_point.x = tmp_int[37];
|
||||||
p->save_point.y = tmp_int[38];
|
p->save_point.y = tmp_int[38];
|
||||||
p->partner_id = tmp_int[39];
|
p->partner_id = tmp_int[39];
|
||||||
|
p->father = tmp_int[40];
|
||||||
|
p->mother = tmp_int[41];
|
||||||
|
p->child = tmp_int[42];
|
||||||
|
|
||||||
// Some checks
|
// Some checks
|
||||||
for(i = 0; i < char_num; i++) {
|
for(i = 0; i < char_num; i++) {
|
||||||
@ -3566,3 +3594,19 @@ int do_init(int argc, char **argv) {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int char_married(int pl1,int pl2) {
|
||||||
|
if (char_dat[pl1].char_id == char_dat[pl2].partner_id && char_dat[pl2].char_id == char_dat[pl1].partner_id)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int char_child(int parent_id, int child_id) {
|
||||||
|
if (char_dat[parent_id].child == char_dat[child_id].char_id &&
|
||||||
|
((char_dat[parent_id].char_id == char_dat[child_id].father) ||
|
||||||
|
(char_dat[parent_id].char_id == char_dat[child_id].mother)))
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -24,6 +24,9 @@ int mapif_sendall(unsigned char *buf, unsigned int len);
|
|||||||
int mapif_sendallwos(int fd,unsigned char *buf, unsigned int len);
|
int mapif_sendallwos(int fd,unsigned char *buf, unsigned int len);
|
||||||
int mapif_send(int fd,unsigned char *buf, unsigned int len);
|
int mapif_send(int fd,unsigned char *buf, unsigned int len);
|
||||||
|
|
||||||
|
int char_married(int pl1,int pl2);
|
||||||
|
int char_child(int parent_id, int child_id);
|
||||||
|
|
||||||
int char_log(char *fmt, ...);
|
int char_log(char *fmt, ...);
|
||||||
|
|
||||||
extern int autosave_interval;
|
extern int autosave_interval;
|
||||||
|
@ -180,7 +180,8 @@ struct party* search_partyname(char *str) {
|
|||||||
|
|
||||||
// EXP公平分配できるかチェック
|
// EXP公平分配できるかチェック
|
||||||
int party_check_exp_share(struct party *p) {
|
int party_check_exp_share(struct party *p) {
|
||||||
int i;
|
int i, dudes=0;
|
||||||
|
int pl1=0,pl2=0,pl3=0;
|
||||||
int maxlv = 0, minlv = 0x7fffffff;
|
int maxlv = 0, minlv = 0x7fffffff;
|
||||||
|
|
||||||
for(i = 0; i < MAX_PARTY; i++) {
|
for(i = 0; i < MAX_PARTY; i++) {
|
||||||
@ -190,9 +191,22 @@ int party_check_exp_share(struct party *p) {
|
|||||||
minlv = lv;
|
minlv = lv;
|
||||||
if (maxlv < lv)
|
if (maxlv < lv)
|
||||||
maxlv = lv;
|
maxlv = lv;
|
||||||
|
if( lv >= 70 ) dudes+=1000;
|
||||||
|
dudes++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if((dudes/1000 >= 2) && (dudes%1000 == 3) && (!strcmp(p->member[0].map,p->member[1].map)) && (!strcmp(p->member[1].map,p->member[2].map))) {
|
||||||
|
pl1=search_character_index(p->member[0].name);
|
||||||
|
pl2=search_character_index(p->member[1].name);
|
||||||
|
pl3=search_character_index(p->member[2].name);
|
||||||
|
printf("PARTY: group of 3 Id1 %d lv %d name %s Id2 %d lv %d name %s Id3 %d lv %d name %s\n",pl1,p->member[0].lv,p->member[0].name,pl2,p->member[1].lv,p->member[1].name,pl3,p->member[2].lv,p->member[2].name);
|
||||||
|
if (char_married(pl1,pl2) && char_child(pl1,pl3))
|
||||||
|
return 1;
|
||||||
|
if (char_married(pl1,pl3) && char_child(pl1,pl2))
|
||||||
|
return 1;
|
||||||
|
if (char_married(pl2,pl3) && char_child(pl2,pl1))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
return (maxlv==0 || maxlv-minlv<=party_share_level);
|
return (maxlv==0 || maxlv-minlv<=party_share_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user