- When when a party-member levels up, the level change is sent to the char-server to update the even-share range values.

- When joining a gvg_dungeon, the pvp packet will be sent to signal versus.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9759 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-02-01 18:16:09 +00:00
parent 083fc86437
commit 8a9e1eaa07
7 changed files with 102 additions and 77 deletions

View File

@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2007/01/31
* When when a party-member levels up, the level change is sent to the
char-server to update the even-share range values.
* When joining a gvg_dungeon, the pvp packet will be sent to signal
versus. With this gvg dungeons should be working correctly now. [Skotlex]
* Changes in the VS8 project files: [FlavioJS]
- synchronized the settings between the projects
- joined all .h and .cpp files and grouped them based on the src subfolder

View File

@ -637,11 +637,12 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
if (p == NULL)
return 0;
for(i = 0; i < MAX_PARTY; i++) {
if(p->party.member[i].account_id == account_id &&
p->party.member[i].char_id == char_id)
{
p->party.member[i].map = map;
for(i = 0; i < MAX_PARTY &&
(p->party.member[i].account_id != account_id ||
p->party.member[i].char_id != char_id); i++);
if (i == MAX_PARTY) return 0;
if (p->party.member[i].online != online)
{
p->party.member[i].online = online;
@ -669,10 +670,12 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
int_party_check_lv(p);
} else
p->party.member[i].lv = lv;
//There is no need to send level update to map servers
//since they do nothing with it.
}
if (p->party.member[i].map != map) {
p->party.member[i].map = map;
mapif_party_membermoved(&p->party, i);
break;
}
}
return 0;
}

View File

@ -716,7 +716,7 @@ int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
mapif_party_info(-1,&p->party);
return 0;
}
// When member goes to other map
// When member goes to other map or levels up.
int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv)
{
struct party_data *p;
@ -726,11 +726,12 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
if (p == NULL)
return 0;
for(i = 0; i < MAX_PARTY; i++) {
if(p->party.member[i].account_id == account_id &&
p->party.member[i].char_id == char_id)
{
p->party.member[i].map = map;
for(i = 0; i < MAX_PARTY &&
(p->party.member[i].account_id != account_id ||
p->party.member[i].char_id != char_id); i++);
if (i == MAX_PARTY) return 0;
if (p->party.member[i].online != online)
{
p->party.member[i].online = online;
@ -750,6 +751,7 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
int_party_check_lv(p);
}
}
if (p->party.member[i].lv != lv) {
if(p->party.member[i].lv == p->min_lv ||
p->party.member[i].lv == p->max_lv)
@ -758,13 +760,17 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
int_party_check_lv(p);
} else
p->party.member[i].lv = lv;
//There is no need to send level update to map servers
//since they do nothing with it.
}
if (p->party.member[i].map != map) {
p->party.member[i].map = map;
mapif_party_membermoved(&p->party, i);
break;
}
}
return 0;
}
// ƒp<C692>[ƒeƒB‰ðŽU—v<76>
int mapif_parse_BreakParty(int fd,int party_id)
{

View File

@ -8175,9 +8175,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if (map[sd->bl.m].flag.gvg_dungeon)
{
clif_set0199(fd,2); //TODO: Figure out the real thing to do here.
clif_set0199(fd, 1); //TODO: Figure out the real packet to send here.
if (!sd->pvp_point)
{
sd->pvp_point=5; //Need to die twice to be warped out.
sd->pvp_won=0;
sd->pvp_lost=0;
}
}
if(map_flag_gvg(sd->bl.m))

View File

@ -508,15 +508,14 @@ int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short m
return 0;
}
int party_send_movemap(struct map_session_data *sd)
void party_send_movemap(struct map_session_data *sd)
{
int i;
struct party_data *p;
nullpo_retr(0, sd);
if( sd->status.party_id==0 )
return 0;
return;
intif_party_changemap(sd,1);
p=party_search(sd->status.party_id);
@ -532,7 +531,7 @@ int party_send_movemap(struct map_session_data *sd)
}
if( sd->state.party_sent )
return 0;
return;
party_check_conflict(sd);
@ -546,7 +545,12 @@ int party_send_movemap(struct map_session_data *sd)
}
}
return 0;
return;
}
void party_send_levelup(struct map_session_data *sd)
{
intif_party_changemap(sd,1);
}
int party_send_logout(struct map_session_data *sd)

View File

@ -32,7 +32,8 @@ int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short m
int party_broken(int party_id);
int party_optionchanged(int party_id,int account_id,int exp,int item,int flag);
int party_changeoption(struct map_session_data *sd,int exp,int item);
int party_send_movemap(struct map_session_data *sd);
void party_send_movemap(struct map_session_data *sd);
void party_send_levelup(struct map_session_data *sd);
int party_send_logout(struct map_session_data *sd);
int party_send_message(struct map_session_data *sd,char *mes,int len);
int party_recv_message(int party_id,int account_id,char *mes,int len);

View File

@ -4100,6 +4100,9 @@ int pc_checkbaselevelup(struct map_session_data *sd)
//LORDALFA - LVLUPEVENT
if(sd->state.event_baselvup)
npc_script_event(sd, NPCE_BASELVUP);
if(sd->status.party_id)
party_send_levelup(sd);
return 1;
}