本文整理汇总了C++中pc_delitem函数的典型用法代码示例。如果您正苦于以下问题:C++ pc_delitem函数的具体用法?C++ pc_delitem怎么用?C++ pc_delitem使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pc_delitem函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: chrif_divorceack
/*==========================================
* Divorce players
* only used if 'partner_id' is offline
*------------------------------------------*/
int chrif_divorceack(int char_id, int partner_id)
{
struct map_session_data* sd;
int i;
if( !char_id || !partner_id )
return 0;
if( (sd = map_charid2sd(char_id)) != NULL && sd->status.partner_id == partner_id )
{
sd->status.partner_id = 0;
for(i = 0; i < MAX_INVENTORY; i++)
if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER);
}
if( (sd = map_charid2sd(partner_id)) != NULL && sd->status.partner_id == char_id )
{
sd->status.partner_id = 0;
for(i = 0; i < MAX_INVENTORY; i++)
if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER);
}
return 0;
}
开发者ID:J4ND3RS0N,项目名称:Cronus-Emulator,代码行数:30,代码来源:chrif.c
示例2: mail_removeitem
int mail_removeitem(struct map_session_data *sd, short flag, int idx, int amount)
{
int i;
nullpo_ret(sd);
idx -= 2;
if( idx < 0 || idx >= MAX_INVENTORY )
return false;
if( amount <= 0 || amount > sd->inventory.u.items_inventory[idx].amount )
return false;
ARR_FIND(0, MAIL_MAX_ITEM, i, sd->mail.item[i].index == idx && sd->mail.item[i].nameid > 0);
if( i == MAIL_MAX_ITEM ){
return false;
}
if( flag ){
if( battle_config.mail_attachment_price > 0 ){
if( pc_payzeny( sd, battle_config.mail_attachment_price, LOG_TYPE_MAIL, NULL ) ){
return false;
}
}
#if PACKETVER < 20150513
// With client update packet
pc_delitem(sd, idx, amount, 1, 0, LOG_TYPE_MAIL);
#else
// RODEX refreshes the client inventory from the ACK packet
pc_delitem(sd, idx, amount, 0, 0, LOG_TYPE_MAIL);
#endif
}else{
for( ; i < MAIL_MAX_ITEM-1; i++ ){
if (sd->mail.item[i + 1].nameid == 0)
break;
sd->mail.item[i].index = sd->mail.item[i+1].index;
sd->mail.item[i].nameid = sd->mail.item[i+1].nameid;
sd->mail.item[i].amount = sd->mail.item[i+1].amount;
}
for( ; i < MAIL_MAX_ITEM; i++ ){
sd->mail.item[i].index = 0;
sd->mail.item[i].nameid = 0;
sd->mail.item[i].amount = 0;
}
#if PACKETVER < 20150513
clif_additem(sd, idx, amount, 0);
#else
clif_mail_removeitem(sd, true, idx + 2, amount);
#endif
}
return 1;
}
开发者ID:Vincentore,项目名称:rathena,代码行数:57,代码来源:mail.c
示例3: bg_member_removeskulls
int bg_member_removeskulls(struct map_session_data *sd)
{
int n;
nullpo_ret(sd);
if( (n = pc_search_inventory(sd,BLUE_SKULL)) >= 0 )
pc_delitem(sd,n,sd->status.inventory[n].amount,0,2,LOG_TYPE_CONSUME);
if( (n = pc_search_inventory(sd,RED_SKULL)) >= 0 )
pc_delitem(sd,n,sd->status.inventory[n].amount,0,2,LOG_TYPE_CONSUME);
if( (n = pc_search_inventory(sd,GREEN_SKULL)) >= 0 )
pc_delitem(sd,n,sd->status.inventory[n].amount,0,2,LOG_TYPE_CONSUME);
return 1;
}
开发者ID:Chocolate31,项目名称:eamod,代码行数:13,代码来源:battleground.c
示例4: pet_food
static int pet_food(struct map_session_data *sd, struct pet_data *pd)
{
int i, food_id;
food_id = pd->petDB->FoodID;
i = pc_search_inventory(sd, food_id);
if( i == INDEX_NOT_FOUND ) {
clif_pet_food(sd, food_id, 0);
return 1;
}
pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_CONSUME);
if( pd->pet.hungry > 90 )
pet_set_intimate(pd, pd->pet.intimate - pd->petDB->r_full);
else {
int add_intimate = 0;
if( battle_config.pet_friendly_rate != 100 )
add_intimate = (pd->petDB->r_hungry * battle_config.pet_friendly_rate) / 100;
else
add_intimate = pd->petDB->r_hungry;
if( pd->pet.hungry > 75 ) {
add_intimate = add_intimate>>1;
if( add_intimate <= 0 )
add_intimate = 1;
}
pet_set_intimate(pd, pd->pet.intimate + add_intimate);
}
开发者ID:SamuelHercules,项目名称:idathena,代码行数:30,代码来源:pet.c
示例5: storage_storageadd
/**
* Add an item to the storage from the inventory.
* @param sd : player
* @param stor : Storage data
* @param index : inventory index to take the item from
* @param amount : number of item to take
* @return 0:fail, 1:success
*/
void storage_storageadd(struct map_session_data* sd, struct s_storage *stor, int index, int amount)
{
enum e_storage_add result;
nullpo_retv(sd);
result = storage_canAddItem(stor, index, sd->inventory.u.items_inventory, amount, MAX_INVENTORY);
if (result == STORAGE_ADD_INVALID)
return;
else if (result == STORAGE_ADD_OK) {
switch( storage_additem(sd, stor, &sd->inventory.u.items_inventory[index], amount) ){
case 0:
pc_delitem(sd,index,amount,0,4,LOG_TYPE_STORAGE);
return;
case 1:
break;
case 2:
result = STORAGE_ADD_NOROOM;
break;
}
}
clif_storageitemremoved(sd,index,0);
clif_dropitem(sd,index,0);
}
开发者ID:DingWeizhe,项目名称:rathena,代码行数:33,代码来源:storage.c
示例6: storage_storageadd
/*==========================================
* Add an item to the storage from the inventory.
*------------------------------------------
*/
int storage_storageadd(struct map_session_data *sd,int index,int amount)
{
struct storage *stor;
nullpo_retr(0, sd);
nullpo_retr(0, stor=account2storage2(sd->status.account_id));
if((stor->storage_amount > MAX_STORAGE) || !stor->storage_status)
return 0; // storage full / storage closed
if(index<0 || index>=MAX_INVENTORY)
return 0;
if(sd->status.inventory[index].nameid <= 0)
return 0; //No item on that spot
if(amount < 1 || amount > sd->status.inventory[index].amount)
return 0;
// log_tostorage(sd, index, 0);
if(storage_additem(sd,stor,&sd->status.inventory[index],amount)==0)
// remove item from inventory
pc_delitem(sd,index,amount,0);
return 1;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:30,代码来源:storage.c
示例7: 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);
if( p ) {
int i;
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,0x0);
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);
}
}
if( sd && sd->status.party_id == party_id && sd->status.char_id == char_id ) {
int idxlist[MAX_INVENTORY]; //or malloc to reduce consumtion
int j,i;
j = pc_bound_chk(sd,3,idxlist);
for(i=0;i<j;i++)
pc_delitem(sd,idxlist[i],sd->status.inventory[idxlist[i]].amount,0,1,LOG_TYPE_OTHER);
sd->status.party_id = 0;
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:SNDBXIE,项目名称:myway-eathena,代码行数:33,代码来源:party.c
示例8: pet_food
static int pet_food(struct map_session_data *sd, struct pet_data *pd)
{
int i,k;
k=pd->petDB->FoodID;
i=pc_search_inventory(sd,k);
if(i < 0) {
clif_pet_food(sd,k,0);
return 1;
}
pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);
if( pd->pet.hungry > 90 )
pet_set_intimate(pd, pd->pet.intimate - pd->petDB->r_full);
else
{
if( battle_config.pet_friendly_rate != 100 )
k = (pd->petDB->r_hungry * battle_config.pet_friendly_rate)/100;
else
k = pd->petDB->r_hungry;
if( pd->pet.hungry > 75 )
{
k = k >> 1;
if( k <= 0 )
k = 1;
}
pet_set_intimate(pd, pd->pet.intimate + k);
}
开发者ID:BlazingSpear,项目名称:rathena,代码行数:28,代码来源:pet.c
示例9: storage_guild_storageadd
/*==========================================
* Attempt to add an item in guild storage from inventory, then refresh it
* @index : inventory idx
* return
* 0 : fail
* 1 : succes
*------------------------------------------*/
int storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
{
struct guild_storage *stor;
nullpo_ret(sd);
nullpo_ret(stor=guild2storage2(sd->status.guild_id));
if( !stor->storage_status || stor->storage_amount > MAX_GUILD_STORAGE )
return 0;
if( index<0 || index>=MAX_INVENTORY )
return 0;
if( sd->status.inventory[index].nameid <= 0 )
return 0;
if( amount < 1 || amount > sd->status.inventory[index].amount )
return 0;
if( stor->lock ) {
storage_guild_storageclose(sd);
return 0;
}
if(guild_storage_additem(sd,stor,&sd->status.inventory[index],amount)==0)
pc_delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE);
return 1;
}
开发者ID:gigaguzel,项目名称:rAthena-1,代码行数:36,代码来源:storage.c
示例10: gstorage_storageadd
/**
* Attempt to add an item in guild storage from inventory, then refresh it
* @param sd : player
* @param amount : number of item to delete
*/
void gstorage_storageadd(struct map_session_data *sd, int index, int amount)
{
struct guild_storage *stor;
nullpo_retv(sd);
nullpo_retv(stor = gstorage_get_storage(sd->status.guild_id));
if (!stor->opened || stor->opened != sd->status.char_id || stor->storage_amount > MAX_GUILD_STORAGE)
return;
if (index < 0 || index >= MAX_INVENTORY)
return;
if (!(sd->status.inventory[index].nameid))
return;
if (amount < 1 || amount > sd->status.inventory[index].amount)
return;
if (stor->locked) {
gstorage_storageclose(sd);
return;
}
if (gstorage_additem(sd, stor, &sd->status.inventory[index], amount))
pc_delitem(sd, index, amount, 0, 4, LOG_TYPE_GSTORAGE);
else {
clif_storageitemremoved(sd, index, 0);
clif_dropitem(sd, index, 0);
}
}
开发者ID:MStr3am,项目名称:idathena,代码行数:36,代码来源:storage.c
示例11: storage_storageadd
/**
* Add an item to the storage from the inventory.
* @param sd : player
* @param index : inventory index to take the item from
* @param amount : number of item to take
* @return 0:fail, 1:success
*/
int storage_storageadd(struct map_session_data* sd, int index, int amount)
{
nullpo_ret(sd);
if( sd->status.storage.storage_amount > sd->storage_size )
return 0; // storage full
if( index < 0 || index >= MAX_INVENTORY )
return 0;
if( sd->status.inventory[index].nameid <= 0 )
return 0; // No item on that spot
if( amount < 1 || amount > sd->status.inventory[index].amount )
return 0;
if( storage_additem(sd,&sd->status.inventory[index],amount) == 0 )
pc_delitem(sd,index,amount,0,4,LOG_TYPE_STORAGE);
else {
clif_dropitem(sd,index,0);
return 0;
}
return 1;
}
开发者ID:Filgaja,项目名称:rathena,代码行数:32,代码来源:storage.c
示例12: storage_guild_storageadd
/**
* Attempt to add an item in guild storage from inventory, then refresh it
* @param sd : player
* @param amount : number of item to delete
*/
void storage_guild_storageadd(struct map_session_data* sd, int index, int amount)
{
struct s_storage *stor;
nullpo_retv(sd);
nullpo_retv(stor = guild2storage2(sd->status.guild_id));
if( !stor->status || stor->amount > MAX_GUILD_STORAGE )
return;
if( index < 0 || index >= MAX_INVENTORY )
return;
if( sd->inventory.u.items_inventory[index].nameid == 0 )
return;
if( amount < 1 || amount > sd->inventory.u.items_inventory[index].amount )
return;
if( stor->lock ) {
storage_guild_storageclose(sd);
return;
}
if(storage_guild_additem(sd,stor,&sd->inventory.u.items_inventory[index],amount))
pc_delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE);
else {
clif_storageitemremoved(sd,index,0);
clif_dropitem(sd,index,0);
}
}
开发者ID:AtlantisRO,项目名称:rathena,代码行数:36,代码来源:storage.c
示例13: hom_food
/**
* Feed homunculus
* @param sd
* @param hd
*/
int hom_food(struct map_session_data *sd, struct homun_data *hd)
{
int i, foodID, emotion;
nullpo_retr(1,sd);
nullpo_retr(1,hd);
if (hd->homunculus.vaporize)
return 1;
foodID = hd->homunculusDB->foodID;
i = pc_search_inventory(sd,foodID);
if (i < 0) {
clif_hom_food(sd,foodID,0);
return 1;
}
pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);
if ( hd->homunculus.hunger >= 91 ) {
hom_decrease_intimacy(hd, 50);
emotion = ET_KEK;
} else if ( hd->homunculus.hunger >= 76 ) {
hom_decrease_intimacy(hd, 5);
emotion = ET_PROFUSELY_SWEAT;
} else if ( hd->homunculus.hunger >= 26 ) {
hom_increase_intimacy(hd, 75);
emotion = ET_DELIGHT;
} else if ( hd->homunculus.hunger >= 11 ) {
hom_increase_intimacy(hd, 100);
emotion = ET_DELIGHT;
} else {
hom_increase_intimacy(hd, 50);
emotion = ET_DELIGHT;
}
hd->homunculus.hunger += 10; //dunno increase value for each food
if(hd->homunculus.hunger > 100)
hd->homunculus.hunger = 100;
log_feeding(sd, LOG_FEED_HOMUNCULUS, foodID);
clif_emotion(&hd->bl,emotion);
clif_send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger);
clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
clif_hom_food(sd,foodID,1);
// Too much food :/
if(hd->homunculus.intimacy == 0)
return hom_delete(sd->hd, ET_HUK);
return 0;
}
开发者ID:anacondaqq,项目名称:rathena,代码行数:57,代码来源:homunculus.cpp
示例14: pet_recv_petdata
/**
* Finalize hatching process and load pet to client.
* @param account_id : account ID of owner
* @param p : pet requesting
* @param flag : 1:stop loading of pet
* @return 0:success, 1:failure
*/
int pet_recv_petdata(int account_id,struct s_pet *p,int flag)
{
struct map_session_data *sd;
sd = map_id2sd(account_id);
if(sd == NULL)
return 1;
if(flag == 1) {
sd->status.pet_id = 0;
return 1;
}
if(p->incubate == 1) {
int i;
//Delete egg from inventory. [Skotlex]
for (i = 0; i < MAX_INVENTORY; i++) {
if(sd->status.inventory[i].card[0] == CARD0_PET &&
p->pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]))
break;
}
if(i >= MAX_INVENTORY) {
ShowError("pet_recv_petdata: Hatching pet (%d:%s) aborted, couldn't find egg in inventory for removal!\n",p->pet_id, p->name);
sd->status.pet_id = 0;
return 1;
}
if (!pet_birth_process(sd,p)) //Pet hatched. Delete egg.
pc_delitem(sd,i,1,0,0,LOG_TYPE_OTHER);
} else {
pet_data_init(sd,p);
if(sd->pd && sd->bl.prev != NULL) {
if(map_addblock(&sd->pd->bl))
return 1;
clif_spawn(&sd->pd->bl);
clif_send_petdata(sd,sd->pd,0,0);
clif_send_petdata(sd,sd->pd,5,battle_config.pet_hair_style);
clif_pet_equip_area(sd->pd);
clif_send_petstatus(sd);
}
}
return 0;
}
开发者ID:Chocolate31,项目名称:eamod,代码行数:58,代码来源:pet.c
示例15: merc_hom_food
int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
{
int i, foodID, emotion;
char mes[255];
if(hd->homunculus.vaporize)
return 1 ;
foodID = hd->homunculusDB->foodID;
i = pc_search_inventory(sd,foodID);
if(i < 0) {
clif_hom_food(sd,foodID,0);
return 1;
}
pc_delitem(sd,i,1,0,0);
if ( hd->homunculus.hunger >= 91 ) {
merc_hom_decrease_intimacy(hd, 50);
emotion = E_WAH;
} else if ( hd->homunculus.hunger >= 76 ) {
merc_hom_decrease_intimacy(hd, 5);
emotion = E_SWT2;
} else if ( hd->homunculus.hunger >= 26 ) {
merc_hom_increase_intimacy(hd, 75);
emotion = E_HO;
} else if ( hd->homunculus.hunger >= 11 ) {
merc_hom_increase_intimacy(hd, 100);
emotion = E_HO;
} else {
merc_hom_increase_intimacy(hd, 50);
emotion = E_HO;
}
hd->homunculus.hunger += 10; //dunno increase value for each food
if(hd->homunculus.hunger > 100)
hd->homunculus.hunger = 100;
clif_emotion(&hd->bl,emotion);
snprintf(mes, sizeof mes,msg_txt(908),hd->homunculus.name);
clif_message(&hd->bl,mes);
clif_send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger);
clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
clif_hom_food(sd,foodID,1);
// Too much food :/
if(hd->homunculus.intimacy == 0)
return merc_hom_delete(sd->hd, E_OMG);
return 0;
}
开发者ID:ranfs,项目名称:fa6d4ae1781f9a68f1a4d5,代码行数:51,代码来源:homunculus.c
示例16: merc_hom_food
int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
{
int i, foodID, emotion;
if(hd->homunculus.vaporize)
return 1 ;
foodID = hd->homunculusDB->foodID;
i = pc_search_inventory(sd,foodID);
if(i < 0) {
clif_hom_food(sd,foodID,0);
return 1;
}
pc_delitem(sd,i,1,0);
if ( hd->homunculus.hunger >= 91 ) {
merc_hom_decrease_intimacy(hd, 50);
emotion = 16;
} else if ( hd->homunculus.hunger >= 76 ) {
merc_hom_decrease_intimacy(hd, 5);
emotion = 19;
} else if ( hd->homunculus.hunger >= 26 ) {
merc_hom_increase_intimacy(hd, 75);
emotion = 2;
} else if ( hd->homunculus.hunger >= 11 ) {
merc_hom_increase_intimacy(hd, 100);
emotion = 2;
} else {
merc_hom_increase_intimacy(hd, 50);
emotion = 2;
}
hd->homunculus.hunger += 10; //dunno increase value for each food
if(hd->homunculus.hunger > 100)
hd->homunculus.hunger = 100;
clif_emotion(&hd->bl,emotion) ;
clif_send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger);
clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
clif_hom_food(sd,foodID,1);
// Too much food :/
if(hd->homunculus.intimacy == 0)
return merc_hom_delete(sd->hd, 23); //omg
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:47,代码来源:mercenary.c
示例17: party_member_withdraw
/// Invoked (from char-server) when a party member leaves the party.
int party_member_withdraw(int party_id, uint32 account_id, uint32 char_id)
{
struct map_session_data* sd = map_id2sd(account_id);
struct party_data* p = party_search(party_id);
if( p ) {
int i;
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,0x0);
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);
}
}
if( sd && sd->status.party_id == party_id && sd->status.char_id == char_id ) {
#ifdef BOUND_ITEMS
int idxlist[MAX_INVENTORY]; //or malloc to reduce consumtion
int j,i;
party_trade_bound_cancel(sd);
j = pc_bound_chk(sd,BOUND_PARTY,idxlist);
for(i = 0; i < j; i++)
pc_delitem(sd,idxlist[i],sd->status.inventory[idxlist[i]].amount,0,1,LOG_TYPE_BOUND_REMOVAL);
#endif
sd->status.party_id = 0;
clif_charnameupdate(sd); //Update name display [Skotlex]
//TODO: hp bars should be cleared too
if( p->instance_id ) {
int16 m = sd->bl.m;
if( map[m].instance_id ) { // User was on the instance map
if( map[m].save.map )
pc_setpos(sd, map[m].save.map, map[m].save.x, map[m].save.y, CLR_TELEPORT);
else
pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT);
}
}
}
return 0;
}
开发者ID:julius5,项目名称:rathena,代码行数:48,代码来源:party.c
示例18: mail_removeitem
int mail_removeitem(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
if( sd->mail.amount )
{
if (flag) // Item send
pc_delitem(sd, sd->mail.index, sd->mail.amount, 1, 0, LOG_TYPE_MAIL);
else
clif_additem(sd, sd->mail.index, sd->mail.amount, 0);
}
sd->mail.nameid = 0;
sd->mail.index = 0;
sd->mail.amount = 0;
return 1;
}
开发者ID:Chocolate31,项目名称:eamod,代码行数:17,代码来源:mail.c
示例19: guild_created
// 作成可否
int guild_created(int account_id,int guild_id)
{
struct map_session_data *sd=map_id2sd(account_id);
if(sd==NULL)
return 0;
if(!guild_id) {
clif_guild_created(sd,2); // 作成失敗(同名ギルド存在)
return 0;
}
//struct guild *g;
sd->status.guild_id=guild_id;
clif_guild_created(sd,0);
if(battle_config.guild_emperium_check)
pc_delitem(sd,pc_search_inventory(sd,714),1,0,0); // エンペリウム消耗
return 0;
}
开发者ID:casioza,项目名称:server000,代码行数:18,代码来源:guild.c
示例20: chrif_divorce
/*==========================================
* 離婚情報同期要求
*------------------------------------------*/
int chrif_divorce(int char_id, int partner_id)
{
struct map_session_data* sd;
int i;
if (!char_id || !partner_id || (sd = map_charid2sd(partner_id)) == NULL || sd->status.partner_id != char_id)
return 0;
//離婚(相方は既にキャラが消えている筈なので)
sd->status.partner_id = 0;
//相方の結婚指輪を剥奪
for(i = 0; i < MAX_INVENTORY; i++)
if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F)
pc_delitem(sd, i, 1, 0);
return 0;
}
开发者ID:AxlSckay,项目名称:Ragnarok-OldTimes,代码行数:21,代码来源:chrif.c
注:本文中的pc_delitem函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论