本文整理汇总了C++中clif_party_info函数的典型用法代码示例。如果您正苦于以下问题:C++ clif_party_info函数的具体用法?C++ clif_party_info怎么用?C++ clif_party_info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clif_party_info函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: party_recv_movemap
// パーティメンバの移動通知
int party_recv_movemap(int party_id,int account_id,char *map,int online,int lv)
{
struct party *p;
int i;
if( (p=party_search(party_id))==NULL)
return 0;
for(i=0;i<MAX_PARTY;i++){
struct party_member *m=&p->member[i];
if( m == NULL ){
ShowError("party_recv_movemap nullpo?\n");
return 0;
}
if(m->account_id==account_id){
memcpy(m->map,map,MAP_NAME_LENGTH-1);
m->online=online;
m->lv=lv;
break;
}
}
if(i==MAX_PARTY){
if(battle_config.error_log)
ShowError("party: not found member %d on %d[%s]",account_id,party_id,p->name);
return 0;
}
for(i=0;i<MAX_PARTY;i++){ // sd再設定
struct map_session_data *sd= map_id2sd(p->member[i].account_id);
p->member[i].sd=(sd!=NULL && sd->status.party_id==p->party_id && !sd->state.waitingdisconnect)?sd:NULL;
}
party_send_xy_clear(p); // 座標再通知要請
clif_party_info(p,-1);
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:36,代码来源:party.c
示例2: party_recv_movemap
int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short map,int online,int lv)
{
struct party_data *p;
int i;
if( (p=party_search(party_id))==NULL)
return 0;
for(i=0;i<MAX_PARTY;i++){
struct map_session_data *sd;
struct party_member *m=&p->party.member[i];
if(m->account_id==account_id && m->char_id==char_id){
m->map = map;
m->online=online;
m->lv=lv;
//Check if they still exist on this map server
sd = map_id2sd(m->account_id);
p->data[i].sd = (sd!=NULL && sd->status.party_id==p->party.party_id && sd->status.char_id == m->char_id && !sd->state.waitingdisconnect)?sd:NULL;
break;
}
}
if(i==MAX_PARTY){
if(battle_config.error_log)
ShowError("party: not found member %d/%d on %d[%s]",account_id,char_id,party_id,p->party.name);
return 0;
}
clif_party_info(p,NULL);
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:28,代码来源:party.c
示例3: party_send_movemap
// パーティメンバの移動
int party_send_movemap(dumb_ptr<map_session_data> sd)
{
struct party *p;
nullpo_ret(sd);
if (sd->status.party_id == 0)
return 0;
intif_party_changemap(sd, 1);
if (sd->party_sended != 0) // もうパーティデータは送信済み
return 0;
// 競合確認
party_check_conflict(sd);
// あるならパーティ情報送信
if ((p = party_search(sd->status.party_id)) != NULL)
{
party_check_member(p); // 所属を確認する
if (sd->status.party_id == p->party_id)
{
clif_party_info(p, sd->fd);
clif_party_option(p, sd, 0x100);
sd->party_sended = 1;
}
}
return 0;
}
开发者ID:JaduJagat,项目名称:tmwa,代码行数:31,代码来源:party.cpp
示例4: intif_parse_PartyLeaderChanged
static
void intif_parse_PartyLeaderChanged(Session *, const Packet_Fixed<0x3828>& fixed)
{
int i;
PartyPair p = TRY_UNWRAP(party_search(fixed.party_id), return);
for (i = 0; i < MAX_PARTY; i++)
{
PartyMember *m = &p->member[i];
if (m->account_id == fixed.account_id)
{
dumb_ptr<map_session_data> sd = map_id2sd(wrap<BlockId>(unwrap<AccountId>(fixed.account_id)));
m->leader = (fixed.leader > 0 ? 1 : 0);
if (sd != nullptr)
{
AString msg = STRPRINTF("You are %s a leader of %s."_fmt,
fixed.leader > 0 ? "now"_s : "no longer"_s, p->name);
clif_displaymessage(sd->sess, msg);
}
break;
}
}
clif_party_info(p, nullptr);
}
开发者ID:themanaworld,项目名称:tmwa,代码行数:27,代码来源:intif.cpp
示例5: party_member_withdraw
/// Invoked (from char-server) when a party member leaves the party.
int party_member_withdraw(int party_id, int account_id, int char_id)
{
struct map_session_data* sd = map_id2sd(account_id);
struct party_data* p = party_search(party_id);
int i;
if( p )
{
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == account_id && p->party.member[i].char_id == char_id );
if( i < MAX_PARTY )
{
clif_party_withdraw(p,sd,account_id,p->party.member[i].name,0x00);
memset(&p->party.member[i], 0, sizeof(p->party.member[0]));
memset(&p->data[i], 0, sizeof(p->data[0]));
p->party.count--;
party_check_state(p);
clif_party_info(p, NULL);
}
}
if( sd && sd->status.party_id == party_id && sd->status.char_id == char_id )
{
sd->status.party_id = 0;
if( sd->state.spb ) {
sd->state.spb = 0;
clif_displaymessage(sd->fd, msg_txt(1451));
}
clif_charnameupdate(sd); //Update name display [Skotlex]
//TODO: hp bars should be cleared too
if( p->instance_id )
instance_check_kick(sd);
}
return 0;
}
开发者ID:Chocolate31,项目名称:eamod,代码行数:36,代码来源:party.c
示例6: party_member_added
/// Invoked (from char-server) when a new member is added to the party.
/// flag: 0-success, 1-failure
int party_member_added(int party_id,int account_id,int char_id, int flag)
{
struct map_session_data *sd = map_id2sd(account_id),*sd2;
struct party_data *p = party_search(party_id);
int i;
if(sd == NULL || sd->status.char_id != char_id || !sd->party_joining ) {
if (!flag) //Char logged off before being accepted into party.
intif_party_leave(party_id,account_id,char_id);
return 0;
}
sd2 = map_id2sd(sd->party_invite_account);
sd->party_joining = false;
sd->party_invite = 0;
sd->party_invite_account = 0;
if (!p) {
ShowError("party_member_added: party %d not found.\n",party_id);
intif_party_leave(party_id,account_id,char_id);
return 0;
}
if( flag )
{// failed
if( sd2 != NULL )
clif_party_inviteack(sd2,sd->status.name,3);
return 0;
}
sd->status.party_id = party_id;
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == 0 );
if (i < MAX_PARTY) {
//TODO: This is a hack to allow the following clif calls to send the data to the new player.
//The correct player data is set when party_recv_info arrives soon afterwards.
party_fill_member(&p->party.member[i], sd);
p->data[i].sd = sd;
}
clif_party_member_info(p,sd);
clif_party_option(p,sd,0x100);
clif_party_info(p,sd);
if( sd2 != NULL )
clif_party_inviteack(sd2,sd->status.name,2);
for( i = 0; i < ARRAYLENGTH(p->data); ++i )
{// hp of the other party members
sd2 = p->data[i].sd;
if( sd2 && sd2->status.account_id != account_id && sd2->status.char_id != char_id )
clif_hpmeter_single(sd->fd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp);
}
clif_party_hp(sd);
clif_party_xy(sd);
clif_charnameupdate(sd); //Update char name's display [Skotlex]
return 0;
}
开发者ID:PiratGameInfo,项目名称:Eathena,代码行数:62,代码来源:party.c
示例7: party_recv_movemap
/// Invoked (from char-server) when a party member
/// - changes maps
/// - logs in or out
/// - gains a level (disabled)
int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short map,int online,int lv)
{
struct party_member* m;
struct party_data* p;
int i;
p = party_search(party_id);
if( p == NULL )
return 0;
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == account_id && p->party.member[i].char_id == char_id );
if( i == MAX_PARTY )
{
ShowError("party_recv_movemap: char %d/%d not found in party %s (id:%d)",account_id,char_id,p->party.name,party_id);
return 0;
}
m = &p->party.member[i];
m->map = map;
m->online = online;
m->lv = lv;
//Check if they still exist on this map server
p->data[i].sd = party_sd_check(party_id, account_id, char_id);
clif_party_info(p,NULL);
return 0;
}
开发者ID:PiratGameInfo,项目名称:Eathena,代码行数:31,代码来源:party.c
示例8: party_send_movemap
void party_send_movemap(struct map_session_data *sd)
{
int i;
struct party_data *p;
if( sd->status.party_id==0 )
return;
intif_party_changemap(sd,1);
p=party_search(sd->status.party_id);
if (!p) return;
if(sd->state.connect_new) {
//Note that this works because this function is invoked before connect_new is cleared.
clif_party_option(p,sd,0x100);
clif_party_info(p,sd);
clif_party_member_info(p,sd);
}
if (sd->fd) { // synchronize minimap positions with the rest of the party
for(i=0; i < MAX_PARTY; i++) {
if (p->data[i].sd &&
p->data[i].sd != sd &&
p->data[i].sd->bl.m == sd->bl.m)
{
clif_party_xy_single(sd->fd, p->data[i].sd);
clif_party_xy_single(p->data[i].sd->fd, sd);
}
}
}
return;
}
开发者ID:PiratGameInfo,项目名称:Eathena,代码行数:33,代码来源:party.c
示例9: party_changeleader
int party_changeleader(struct map_session_data *sd, struct map_session_data *tsd, struct party_data *p)
{
int mi, tmi;
if ( !p ) {
if (!sd || !sd->status.party_id)
return -1;
if (!tsd || tsd->status.party_id != sd->status.party_id) {
clif_displaymessage(sd->fd, msg_txt(sd,283));
return -3;
}
if ( map[sd->bl.m].flag.partylock ) {
clif_displaymessage(sd->fd, msg_txt(sd,287));
return 0;
}
if ((p = party_search(sd->status.party_id)) == NULL )
return -1;
ARR_FIND( 0, MAX_PARTY, mi, p->data[mi].sd == sd );
if (mi == MAX_PARTY)
return 0; // Shouldn't happen
if (!p->party.member[mi].leader) { // Need to be a party leader.
clif_displaymessage(sd->fd, msg_txt(sd,282));
return 0;
}
ARR_FIND( 0, MAX_PARTY, tmi, p->data[tmi].sd == tsd);
if (tmi == MAX_PARTY)
return 0; // Shouldn't happen
} else {
ARR_FIND(0,MAX_PARTY,mi,p->party.member[mi].leader);
if (mi == MAX_PARTY)
return 0; // Shouldn't happen
ARR_FIND(0,MAX_PARTY,tmi,p->data[tmi].sd == tsd);
if (tmi == MAX_PARTY)
return 0; // Shouldn't happen
}
// Change leadership.
p->party.member[mi].leader = 0;
p->party.member[tmi].leader = 1;
// Update members
clif_party_leaderchanged(p->data[mi].sd, p->data[mi].sd->status.account_id, p->data[tmi].sd->status.account_id);
// Update info.
intif_party_leaderchange(p->party.party_id,p->party.member[tmi].account_id,p->party.member[tmi].char_id);
clif_party_info(p,NULL);
return 1;
}
开发者ID:julius5,项目名称:rathena,代码行数:59,代码来源:party.c
示例10: party_member_added
/// Invoked (from char-server) when a new member is added to the party.
/// flag: 0-success, 1-failure
int party_member_added (int party_id, int account_id, int char_id, int flag)
{
struct map_session_data *sd = map_id2sd (account_id), *sd2;
struct party_data *p = party_search (party_id);
int i;
if (sd == NULL || sd->status.char_id != char_id || !sd->party_joining) {
if (!flag) //Char logged off before being accepted into party.
intif_party_leave (party_id, account_id, char_id);
return 0;
}
sd2 = map_id2sd (sd->party_invite_account);
sd->party_joining = false;
sd->party_invite = 0;
sd->party_invite_account = 0;
if (!p) {
ShowError ("party_member_added: party %d not found.\n", party_id);
intif_party_leave (party_id, account_id, char_id);
return 0;
}
if (flag) {
// failed
if (sd2 != NULL)
clif_party_inviteack (sd2, sd->status.name, 3);
return 0;
}
sd->status.party_id = party_id;
clif_party_member_info (p, sd);
clif_party_option (p, sd, 0x100);
clif_party_info (p, sd);
if (sd2 != NULL)
clif_party_inviteack (sd2, sd->status.name, 2);
for (i = 0; i < ARRAYLENGTH (p->data); ++i) {
// hp of the other party members
sd2 = p->data[i].sd;
if (sd2 && sd2->status.account_id != account_id && sd2->status.char_id != char_id)
clif_hpmeter_single (sd->fd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp);
}
clif_party_hp (sd);
clif_party_xy (sd);
clif_charnameupdate (sd); //Update char name's display [Skotlex]
if (p->instance_id)
clif_instance_join (sd->fd, p->instance_id);
return 0;
}
开发者ID:Celso1415,项目名称:Fusion,代码行数:59,代码来源:party.c
示例11: party_changeleader
bool party_changeleader(struct map_session_data *sd, struct map_session_data *tsd)
{
struct party_data *p;
int mi, tmi;
if (!sd || !sd->status.party_id)
return false;
if (!tsd || tsd->status.party_id != sd->status.party_id) {
clif_displaymessage(sd->fd, msg_txt(283));
return false;
}
if( map[sd->bl.m].flag.partylock )
{
clif_displaymessage(sd->fd, "You cannot change party leaders on this map.");
return false;
}
if ((p = party_search(sd->status.party_id)) == NULL)
return false;
ARR_FIND( 0, MAX_PARTY, mi, p->data[mi].sd == sd );
if (mi == MAX_PARTY)
return false; //Shouldn't happen
if (!p->party.member[mi].leader)
{ //Need to be a party leader.
clif_displaymessage(sd->fd, msg_txt(282));
return false;
}
ARR_FIND( 0, MAX_PARTY, tmi, p->data[tmi].sd == tsd);
if (tmi == MAX_PARTY)
return false; //Shouldn't happen
//Change leadership.
p->party.member[mi].leader = 0;
if (p->data[mi].sd->fd)
clif_displaymessage(p->data[mi].sd->fd, msg_txt(284));
p->party.member[tmi].leader = 1;
if (p->data[tmi].sd->fd)
clif_displaymessage(p->data[tmi].sd->fd, msg_txt(285));
//Update info.
intif_party_leaderchange(p->party.party_id,p->party.member[tmi].account_id,p->party.member[tmi].char_id);
clif_party_info(p,NULL);
party_booking_delete(sd, true); // Party Booking [Spiria]
clif_PartyBookingDeleteAck(sd, 0); // Close small window
return true;
}
开发者ID:Chocolate31,项目名称:eamod,代码行数:52,代码来源:party.c
示例12: party_recv_info
// 情報所得
int party_recv_info(struct party *sp)
{
struct party *p;
int i;
nullpo_retr(0, sp);
if((p=(struct party *) numdb_search(party_db,sp->party_id))==NULL){
p=(struct party *)aCalloc(1,sizeof(struct party));
numdb_insert(party_db,sp->party_id,p);
// 最初のロードなのでユーザーのチェックを行う
party_check_member(sp);
}
memcpy(p,sp,sizeof(struct party));
for(i=0;i<MAX_PARTY;i++){ // sdの設定
struct map_session_data *sd = map_id2sd(p->member[i].account_id);
if(sd!=NULL && sd->status.party_id==p->party_id && !sd->state.waitingdisconnect)
p->member[i].sd=sd;
else
p->member[i].sd=NULL;
}
clif_party_info(p,-1);
// Refresh hp/xy state [LuzZza]
for(i=0;i<MAX_PARTY;i++) {
struct map_session_data *sd = p->member[i].sd;
if(sd!=NULL) {
clif_party_hp(sd);
clif_party_xy(sd);
}
}
for(i=0;i<MAX_PARTY;i++){ // 設定情報の送信
struct map_session_data *sd = p->member[i].sd;
if(sd!=NULL && sd->state.party_sent==0){
clif_party_option(p,sd,0x100);
sd->state.party_sent=1;
}
}
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:46,代码来源:party.c
示例13: party_send_movemap
// パーティメンバの移動
int party_send_movemap(struct map_session_data *sd)
{
int i;
struct party *p;
nullpo_retr(0, sd);
if( sd->status.party_id==0 )
return 0;
intif_party_changemap(sd,1);
p=party_search(sd->status.party_id);
if (p && sd->fd) {
//Send dots of other party members to this char. [Skotlex]
for(i=0; i < MAX_PARTY; i++) {
if (!p->member[i].sd || p->member[i].sd == sd ||
p->member[i].sd->bl.m != sd->bl.m)
continue;
clif_party_xy_single(sd->fd, p->member[i].sd);
}
}
if( sd->state.party_sent ) // もうパーティデータは送信済み
return 0;
// 競合確認
party_check_conflict(sd);
// あるならパーティ情報送信
if(p){
party_check_member(p); // 所属を確認する
if(sd->status.party_id==p->party_id){
clif_party_main_info(p,sd->fd);
clif_party_option(p,sd,0x100);
clif_party_info(p,sd->fd);
sd->state.party_sent=1;
}
}
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:44,代码来源:party.c
示例14: party_recv_movemap
// パーティメンバの移動通知
void party_recv_movemap(PartyId party_id, AccountId account_id, MapName mapname,
int online, int lv)
{
PartyPair p;
int i;
if (!(p = party_search(party_id)))
return;
for (i = 0; i < MAX_PARTY; i++)
{
PartyMember *m = &p->member[i];
if (m == nullptr)
{
PRINTF("party_recv_movemap nullpo?\n"_fmt);
return;
}
if (m->account_id == account_id)
{
m->map = mapname;
m->online = online;
m->lv = lv;
break;
}
}
if (i == MAX_PARTY)
{
if (battle_config.error_log)
PRINTF("party: not found member %d on %d[%s]"_fmt, account_id,
party_id, p->name);
return;
}
for (i = 0; i < MAX_PARTY; i++)
{ // sd再設定
dumb_ptr<map_session_data> sd = map_id2sd(account_to_block(p->member[i].account_id));
p->member[i].sd = (sd != nullptr
&& sd->status.party_id == p.party_id) ? sd.operator->() : nullptr;
}
party_send_xy_clear(p); // 座標再通知要請
clif_party_info(p, nullptr);
}
开发者ID:mrktj,项目名称:tmwa,代码行数:43,代码来源:party.cpp
示例15: party_recv_movemap
// パーティメンバの移動通知
void party_recv_movemap(int party_id, int account_id, MapName mapname,
int online, int lv)
{
struct party *p;
int i;
if ((p = party_search(party_id)) == NULL)
return;
for (i = 0; i < MAX_PARTY; i++)
{
struct party_member *m = &p->member[i];
if (m == NULL)
{
PRINTF("party_recv_movemap nullpo?\n");
return;
}
if (m->account_id == account_id)
{
m->map = mapname;
m->online = online;
m->lv = lv;
break;
}
}
if (i == MAX_PARTY)
{
if (battle_config.error_log)
PRINTF("party: not found member %d on %d[%s]", account_id,
party_id, p->name);
return;
}
for (i = 0; i < MAX_PARTY; i++)
{ // sd再設定
dumb_ptr<map_session_data> sd = map_id2sd(p->member[i].account_id);
p->member[i].sd = (sd != NULL
&& sd->status.party_id == p->party_id) ? sd.operator->() : NULL;
}
party_send_xy_clear(p); // 座標再通知要請
clif_party_info(p, -1);
}
开发者ID:JaduJagat,项目名称:tmwa,代码行数:43,代码来源:party.cpp
示例16: party_recv_info
// 情報所得
int party_recv_info(struct party *sp)
{
struct map_session_data *sd;
struct party *p;
int i;
nullpo_retr(0, sp);
p= idb_ensure(party_db, sp->party_id, create_party);
if (!p->party_id) //party just received.
party_check_member(sp);
memcpy(p,sp,sizeof(struct party));
for(i=0;i<MAX_PARTY;i++){ // sdの設定
if (!p->member[i].account_id) {
p->member[i].sd=NULL;
continue;
}
sd = map_id2sd(p->member[i].account_id);
p->member[i].sd = (sd!=NULL && sd->status.party_id==p->party_id && sd->status.char_id == p->member[i].char_id && !sd->state.waitingdisconnect)?sd:NULL;
}
for(i=0;i<MAX_PARTY;i++){ // 設定情報の送信
sd = p->member[i].sd;
if(!sd)
continue;
// Refresh hp/xy state [LuzZza]
clif_party_hp(sd);
clif_party_xy(sd);
if(sd->state.party_sent==0){
clif_party_main_info(p,-1);
clif_party_option(p,sd,0x100);
clif_party_info(p,-1);
sd->state.party_sent=1;
}
}
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:41,代码来源:party.c
示例17: party_recv_info
// 情報所得
int party_recv_info(const struct party *sp)
{
int i;
nullpo_ret(sp);
struct party *p = party_db.search(sp->party_id);
if (p == NULL)
{
p = party_db.init(sp->party_id);
// 最初のロードなのでユーザーのチェックを行う
*p = *sp;
party_check_member(p);
}
else
*p = *sp;
for (i = 0; i < MAX_PARTY; i++)
{ // sdの設定
dumb_ptr<map_session_data> sd = map_id2sd(p->member[i].account_id);
p->member[i].sd = (sd != NULL
&& sd->status.party_id == p->party_id) ? sd.operator->() : NULL;
}
clif_party_info(p, -1);
for (i = 0; i < MAX_PARTY; i++)
{ // 設定情報の送信
// dumb_ptr<map_session_data> sd = map_id2sd(p->member[i].account_id);
dumb_ptr<map_session_data> sd = dumb_ptr<map_session_data>(p->member[i].sd);
if (sd != NULL && sd->party_sended == 0)
{
clif_party_option(p, sd, 0x100);
sd->party_sended = 1;
}
}
return 0;
}
开发者ID:JaduJagat,项目名称:tmwa,代码行数:41,代码来源:party.cpp
示例18: party_recv_info
// 情報所得
int party_recv_info(const PartyPair sp)
{
int i;
nullpo_retz(sp);
PartyPair p = party_search(sp.party_id);
if (!p)
{
p.party_most = party_db.init(sp.party_id);
// 最初のロードなのでユーザーのチェックを行う
*p.party_most = *sp.party_most;
party_check_member(p);
}
else
*p.party_most = *sp.party_most;
for (i = 0; i < MAX_PARTY; i++)
{ // sdの設定
dumb_ptr<map_session_data> sd = map_id2sd(account_to_block(p->member[i].account_id));
p->member[i].sd = (sd != nullptr
&& sd->status.party_id == p.party_id) ? sd.operator->() : nullptr;
}
clif_party_info(p, nullptr);
for (i = 0; i < MAX_PARTY; i++)
{ // 設定情報の送信
// dumb_ptr<map_session_data> sd = map_id2sd(p->member[i].account_id);
dumb_ptr<map_session_data> sd = dumb_ptr<map_session_data>(p->member[i].sd);
if (sd != nullptr && sd->party_sended == 0)
{
clif_party_option(p, sd, 0x100);
sd->party_sended = 1;
}
}
return 0;
}
开发者ID:mrktj,项目名称:tmwa,代码行数:41,代码来源:party.cpp
示例19: party_recv_movemap
// パーティメンバの移動通知
int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short map,int online,int lv)
{
struct party *p;
int i;
if( (p=party_search(party_id))==NULL)
return 0;
for(i=0;i<MAX_PARTY;i++){
struct map_session_data *sd;
struct party_member *m=&p->member[i];
/* This can never happen...
if( m == NULL ){
ShowError("party_recv_movemap nullpo?\n");
return 0;
}
*/
if(m->account_id==account_id && m->char_id==char_id){
m->map = map;
m->online=online;
m->lv=lv;
//Check if they still exist on this map server
sd = map_id2sd(m->account_id);
p->member[i].sd=(sd!=NULL && sd->status.party_id==p->party_id && sd->status.char_id == m->char_id && !sd->state.waitingdisconnect)?sd:NULL;
//if so, clear their coordinates as they just changed maps.
if (p->member[i].sd) {
sd->party_x=-1;
sd->party_y=-1;
}
break;
}
}
if(i==MAX_PARTY){
if(battle_config.error_log)
ShowError("party: not found member %d on %d[%s]",account_id,party_id,p->name);
return 0;
}
clif_party_info(p,-1);
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:40,代码来源:party.c
示例20: party_recv_info
int party_recv_info(struct party *sp)
{
struct party_data *p;
int i;
bool party_new = false;
nullpo_retr(0, sp);
p = (struct party_data*)idb_ensure(party_db, sp->party_id, create_party);
if (!p->party.party_id) //party just received.
{
party_new = true;
party_check_member(sp);
}
memcpy(&p->party,sp,sizeof(struct party));
memset(&p->state, 0, sizeof(p->state));
memset(&p->data, 0, sizeof(p->data));
for(i=0;i<MAX_PARTY;i++){
if (!p->party.member[i].account_id)
continue;
p->data[i].sd = party_sd_check(p->party.party_id, p->party.member[i].account_id, p->party.member[i].char_id);
}
party_check_state(p);
if (party_new) {
//Send party data to all players.
struct map_session_data *sd;
for(i=0;i<MAX_PARTY;i++){
sd = p->data[i].sd;
if(!sd) continue;
clif_charnameupdate(sd); //Update other people's display. [Skotlex]
clif_party_member_info(p,sd);
clif_party_option(p,sd,0x100);
clif_party_info(p,NULL);
}
}
return 0;
}
开发者ID:PiratGameInfo,项目名称:Eathena,代码行数:38,代码来源:party.c
注:本文中的clif_party_info函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论