mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
More load and delete changes for corpses
This commit is contained in:
parent
12ceac4c02
commit
3b51aebb51
@ -2582,38 +2582,6 @@ void Client::LogMerchant(Client* player, Mob* merchant, uint32 quantity, uint32
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::LogLoot(Client* player, Corpse* corpse, const Item_Struct* item){
|
|
||||||
char* logtext;
|
|
||||||
char itemid[100];
|
|
||||||
char itemname[100];
|
|
||||||
char coinloot[100];
|
|
||||||
if (item!=0){
|
|
||||||
memset(itemid,0,sizeof(itemid));
|
|
||||||
memset(itemname,0,sizeof(itemid));
|
|
||||||
itoa(item->ID,itemid,10);
|
|
||||||
sprintf(itemname,"%s",item->Name);
|
|
||||||
logtext=itemname;
|
|
||||||
|
|
||||||
strcat(logtext,"(");
|
|
||||||
strcat(logtext,itemid);
|
|
||||||
strcat(logtext,") Looted");
|
|
||||||
database.logevents(player->AccountName(),player->AccountID(),player->admin,player->GetName(),corpse->orgname,"Looting Item",logtext,4);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if ((corpse->GetPlatinum() + corpse->GetGold() + corpse->GetSilver() + corpse->GetCopper())>0) {
|
|
||||||
memset(coinloot,0,sizeof(coinloot));
|
|
||||||
sprintf(coinloot,"%i PP %i GP %i SP %i CP",corpse->GetPlatinum(),corpse->GetGold(),corpse->GetSilver(),corpse->GetCopper());
|
|
||||||
logtext=coinloot;
|
|
||||||
strcat(logtext," Looted");
|
|
||||||
if (corpse->GetPlatinum()>10000)
|
|
||||||
database.logevents(player->AccountName(),player->AccountID(),player->admin,player->GetName(),corpse->orgname,"Excessive Loot!",logtext,9);
|
|
||||||
else
|
|
||||||
database.logevents(player->AccountName(),player->AccountID(),player->admin,player->GetName(),corpse->orgname,"Looting Money",logtext,5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool Client::BindWound(Mob* bindmob, bool start, bool fail){
|
bool Client::BindWound(Mob* bindmob, bool start, bool fail){
|
||||||
EQApplicationPacket* outapp = 0;
|
EQApplicationPacket* outapp = 0;
|
||||||
if(!fail) {
|
if(!fail) {
|
||||||
|
|||||||
@ -335,7 +335,6 @@ public:
|
|||||||
bool CheckAccess(int16 iDBLevel, int16 iDefaultLevel);
|
bool CheckAccess(int16 iDBLevel, int16 iDefaultLevel);
|
||||||
|
|
||||||
void CheckQuests(const char* zonename, const char* message, uint32 npc_id, uint32 item_id, Mob* other);
|
void CheckQuests(const char* zonename, const char* message, uint32 npc_id, uint32 item_id, Mob* other);
|
||||||
void LogLoot(Client* player,Corpse* corpse,const Item_Struct* item);
|
|
||||||
bool AutoAttackEnabled() const { return auto_attack; }
|
bool AutoAttackEnabled() const { return auto_attack; }
|
||||||
bool AutoFireEnabled() const { return auto_fire; }
|
bool AutoFireEnabled() const { return auto_fire; }
|
||||||
void MakeCorpse(uint32 exploss);
|
void MakeCorpse(uint32 exploss);
|
||||||
|
|||||||
165
zone/corpse.cpp
165
zone/corpse.cpp
@ -636,6 +636,8 @@ ServerLootItem_Struct* Corpse::GetItem(uint16 lootslot, ServerLootItem_Struct**
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cout << "sitem EQUIPSLOT: " << sitem->equip_slot << std::endl;
|
||||||
|
|
||||||
return sitem;
|
return sitem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -865,28 +867,6 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a
|
|||||||
d->unknown1 = 0x42;
|
d->unknown1 = 0x42;
|
||||||
d->unknown2 = 0xef;
|
d->unknown2 = 0xef;
|
||||||
if(tCanLoot == 2 || (tCanLoot >= 3 && lootcoin)) { // dont take the coin off if it's a gm peeking at the corpse
|
if(tCanLoot == 2 || (tCanLoot >= 3 && lootcoin)) { // dont take the coin off if it's a gm peeking at the corpse
|
||||||
if(zone->lootvar != 0) {
|
|
||||||
int admin = client->Admin();
|
|
||||||
if(zone->lootvar == 7) { client->LogLoot(client, this, 0); }
|
|
||||||
else if((admin >= 10) && (admin < 20)) {
|
|
||||||
if((zone->lootvar < 8) && (zone->lootvar > 5)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
else if(admin <= 20) {
|
|
||||||
if((zone->lootvar < 8) && (zone->lootvar > 4)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
else if(admin <= 80) {
|
|
||||||
if((zone->lootvar < 8) && (zone->lootvar > 3)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
else if(admin <= 100) {
|
|
||||||
if((zone->lootvar < 9) && (zone->lootvar > 2)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
else if(admin <= 150) {
|
|
||||||
if(((zone->lootvar < 8) && (zone->lootvar > 1)) || (zone->lootvar == 9)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
else if (admin <= 255) {
|
|
||||||
if((zone->lootvar < 8) && (zone->lootvar > 0)) { client->LogLoot(client, this, 0); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!IsPlayerCorpse() && client->IsGrouped() && client->AutoSplitEnabled() && client->GetGroup()) {
|
if(!IsPlayerCorpse() && client->IsGrouped() && client->AutoSplitEnabled() && client->GetGroup()) {
|
||||||
d->copper = 0;
|
d->copper = 0;
|
||||||
@ -994,13 +974,11 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a
|
|||||||
if(client->GetClientVersion() >= EQClientSoD) { SendLootReqErrorPacket(client, 6); }
|
if(client->GetClientVersion() >= EQClientSoD) { SendLootReqErrorPacket(client, 6); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
void Corpse::LootItem(Client* client, const EQApplicationPacket* app) {
|
||||||
{
|
/* This gets sent no matter what as a sort of ACK */
|
||||||
//this gets sent out no matter what as a sort of 'ack', so send it here.
|
|
||||||
client->QueuePacket(app);
|
client->QueuePacket(app);
|
||||||
|
|
||||||
if(!loot_cooldown_timer.Check())
|
if (!loot_cooldown_timer.Check()) {
|
||||||
{
|
|
||||||
SendEndLootErrorPacket(client);
|
SendEndLootErrorPacket(client);
|
||||||
//unlock corpse for others
|
//unlock corpse for others
|
||||||
if (this->BeingLootedBy = client->GetID()) {
|
if (this->BeingLootedBy = client->GetID()) {
|
||||||
@ -1009,9 +987,8 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// To prevent item loss for a player using 'Loot All' who doesn't have inventory space for all their items.
|
/* To prevent item loss for a player using 'Loot All' who doesn't have inventory space for all their items. */
|
||||||
if(RuleB(Character, CheckCursorEmptyWhenLooting) && !client->GetInv().CursorEmpty())
|
if (RuleB(Character, CheckCursorEmptyWhenLooting) && !client->GetInv().CursorEmpty()) {
|
||||||
{
|
|
||||||
client->Message(13, "You may not loot an item while you have an item on your cursor.");
|
client->Message(13, "You may not loot an item while you have an item on your cursor.");
|
||||||
SendEndLootErrorPacket(client);
|
SendEndLootErrorPacket(client);
|
||||||
//unlock corpse for others
|
//unlock corpse for others
|
||||||
@ -1049,31 +1026,33 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
|||||||
ServerLootItem_Struct* item_data = nullptr, *bag_item_data[10];
|
ServerLootItem_Struct* item_data = nullptr, *bag_item_data[10];
|
||||||
|
|
||||||
memset(bag_item_data, 0, sizeof(bag_item_data));
|
memset(bag_item_data, 0, sizeof(bag_item_data));
|
||||||
if(GetPKItem()>1)
|
if (GetPKItem() > 1){
|
||||||
item = database.GetItem(GetPKItem());
|
item = database.GetItem(GetPKItem());
|
||||||
else if(GetPKItem()==-1 || GetPKItem()==1)
|
}
|
||||||
|
else if (GetPKItem() == -1 || GetPKItem() == 1){
|
||||||
item_data = GetItem(lootitem->slot_id - EmuConstants::CORPSE_BEGIN); //dont allow them to loot entire bags of items as pvp reward
|
item_data = GetItem(lootitem->slot_id - EmuConstants::CORPSE_BEGIN); //dont allow them to loot entire bags of items as pvp reward
|
||||||
else
|
}
|
||||||
|
else{
|
||||||
item_data = GetItem(lootitem->slot_id - EmuConstants::CORPSE_BEGIN, bag_item_data);
|
item_data = GetItem(lootitem->slot_id - EmuConstants::CORPSE_BEGIN, bag_item_data);
|
||||||
|
}
|
||||||
|
|
||||||
if (GetPKItem()<=1 && item_data != 0)
|
std::cout << "ITEM_DATA EQUIP SLOT: " << item_data->equip_slot << std::endl;
|
||||||
{
|
|
||||||
|
if (GetPKItem()<=1 && item_data != 0) {
|
||||||
item = database.GetItem(item_data->item_id);
|
item = database.GetItem(item_data->item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item != 0)
|
if (item != 0) {
|
||||||
{
|
if (item_data){
|
||||||
if(item_data)
|
|
||||||
inst = database.CreateItem(item, item_data ? item_data->charges : 0, item_data->aug_1, item_data->aug_2, item_data->aug_3, item_data->aug_4, item_data->aug_5);
|
inst = database.CreateItem(item, item_data ? item_data->charges : 0, item_data->aug_1, item_data->aug_2, item_data->aug_3, item_data->aug_4, item_data->aug_5);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
inst = database.CreateItem(item);
|
inst = database.CreateItem(item);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (client && inst)
|
if (client && inst) {
|
||||||
{
|
if (client->CheckLoreConflict(item)) {
|
||||||
|
|
||||||
if (client->CheckLoreConflict(item))
|
|
||||||
{
|
|
||||||
client->Message_StringID(0, LOOT_LORE_ERROR);
|
client->Message_StringID(0, LOOT_LORE_ERROR);
|
||||||
SendEndLootErrorPacket(client);
|
SendEndLootErrorPacket(client);
|
||||||
BeingLootedBy = 0;
|
BeingLootedBy = 0;
|
||||||
@ -1081,15 +1060,11 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(inst->IsAugmented())
|
if (inst->IsAugmented()) {
|
||||||
{
|
for (int i = AUG_BEGIN; i < EmuConstants::ITEM_COMMON_SIZE; i++) {
|
||||||
for (int i = AUG_BEGIN; i<EmuConstants::ITEM_COMMON_SIZE; i++)
|
|
||||||
{
|
|
||||||
ItemInst *itm = inst->GetAugment(i);
|
ItemInst *itm = inst->GetAugment(i);
|
||||||
if(itm)
|
if (itm) {
|
||||||
{
|
if (client->CheckLoreConflict(itm->GetItem())) {
|
||||||
if(client->CheckLoreConflict(itm->GetItem()))
|
|
||||||
{
|
|
||||||
client->Message_StringID(0, LOOT_LORE_ERROR);
|
client->Message_StringID(0, LOOT_LORE_ERROR);
|
||||||
SendEndLootErrorPacket(client);
|
SendEndLootErrorPacket(client);
|
||||||
BeingLootedBy = 0;
|
BeingLootedBy = 0;
|
||||||
@ -1111,86 +1086,57 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
|||||||
parse->EventPlayer(EVENT_LOOT, client, buf, 0, &args);
|
parse->EventPlayer(EVENT_LOOT, client, buf, 0, &args);
|
||||||
parse->EventItem(EVENT_LOOT, client, inst, this, buf, 0);
|
parse->EventItem(EVENT_LOOT, client, inst, this, buf, 0);
|
||||||
|
|
||||||
if ((RuleB(Character, EnableDiscoveredItems)))
|
if ((RuleB(Character, EnableDiscoveredItems))) {
|
||||||
{
|
|
||||||
if (client && !client->GetGM() && !client->IsDiscovered(inst->GetItem()->ID))
|
if (client && !client->GetGM() && !client->IsDiscovered(inst->GetItem()->ID))
|
||||||
client->DiscoverItem(inst->GetItem()->ID);
|
client->DiscoverItem(inst->GetItem()->ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zone->lootvar != 0)
|
if (zone->adv_data) {
|
||||||
{
|
|
||||||
int admin=client->Admin();
|
|
||||||
if (zone->lootvar==7){
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if ((admin>=10) && (admin<20)){
|
|
||||||
if ((zone->lootvar<8) && (zone->lootvar>5))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if (admin<=20){
|
|
||||||
if ((zone->lootvar<8) && (zone->lootvar>4))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if (admin<=80){
|
|
||||||
if ((zone->lootvar<8) && (zone->lootvar>3))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if (admin<=100){
|
|
||||||
if ((zone->lootvar<9) && (zone->lootvar>2))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if (admin<=150){
|
|
||||||
if (((zone->lootvar<8) && (zone->lootvar>1)) || (zone->lootvar==9))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
else if (admin<=255){
|
|
||||||
if ((zone->lootvar<8) && (zone->lootvar>0))
|
|
||||||
client->LogLoot(client,this,item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(zone->adv_data)
|
|
||||||
{
|
|
||||||
ServerZoneAdventureDataReply_Struct *ad = (ServerZoneAdventureDataReply_Struct*)zone->adv_data;
|
ServerZoneAdventureDataReply_Struct *ad = (ServerZoneAdventureDataReply_Struct*)zone->adv_data;
|
||||||
if(ad->type == Adventure_Collect && !IsPlayerCorpse())
|
if (ad->type == Adventure_Collect && !IsPlayerCorpse()) {
|
||||||
{
|
if (ad->data_id == inst->GetItem()->ID) {
|
||||||
if(ad->data_id == inst->GetItem()->ID)
|
|
||||||
{
|
|
||||||
zone->DoAdventureCountIncrease();
|
zone->DoAdventureCountIncrease();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// first add it to the looter - this will do the bag contents too
|
/* First add it to the looter - this will do the bag contents too */
|
||||||
if(lootitem->auto_loot)
|
if (lootitem->auto_loot) {
|
||||||
{
|
|
||||||
if (!client->AutoPutLootInInventory(*inst, true, true, bag_item_data))
|
if (!client->AutoPutLootInInventory(*inst, true, true, bag_item_data))
|
||||||
client->PutLootInInventory(MainCursor, *inst, bag_item_data);
|
client->PutLootInInventory(MainCursor, *inst, bag_item_data);
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
client->PutLootInInventory(MainCursor, *inst, bag_item_data);
|
client->PutLootInInventory(MainCursor, *inst, bag_item_data);
|
||||||
}
|
}
|
||||||
// Update any tasks that have an activity to loot this item.
|
|
||||||
|
/* Update any tasks that have an activity to loot this item */
|
||||||
if (RuleB(TaskSystem, EnableTaskSystem))
|
if (RuleB(TaskSystem, EnableTaskSystem))
|
||||||
client->UpdateTasksForItem(ActivityLoot, item->ID);
|
client->UpdateTasksForItem(ActivityLoot, item->ID);
|
||||||
// now remove it from the corpse
|
|
||||||
if(item_data)
|
/* Remove it from Corpse */
|
||||||
|
if (item_data){
|
||||||
RemoveItem(item_data->lootslot);
|
RemoveItem(item_data->lootslot);
|
||||||
// remove bag contents too
|
std::cout << "CORPSE DB ID: " << this->corpse_db_id << std::endl;
|
||||||
if (item->ItemClass == ItemClassContainer && (GetPKItem()!=-1 || GetPKItem()!=1))
|
std::cout << "CORPSE EQUIP SLOT: " << item_data->equip_slot << std::endl;
|
||||||
{
|
std::cout << "ITEM SLOT: " << item->Slots << std::endl;
|
||||||
for (int i = SUB_BEGIN; i < EmuConstants::ITEM_CONTAINER_SIZE; i++)
|
database.DeleteItemOffCharacterCorpse(this->corpse_db_id, item_data->equip_slot, item->ID);
|
||||||
{
|
}
|
||||||
if (bag_item_data[i])
|
|
||||||
{
|
/* Remove Bag Contents */
|
||||||
|
if (item->ItemClass == ItemClassContainer && (GetPKItem() != -1 || GetPKItem() != 1)) {
|
||||||
|
for (int i = SUB_BEGIN; i < EmuConstants::ITEM_CONTAINER_SIZE; i++) {
|
||||||
|
if (bag_item_data[i]) {
|
||||||
RemoveItem(bag_item_data[i]);
|
RemoveItem(bag_item_data[i]);
|
||||||
|
std::cout << "CORPSE BAG DB ID: " << this->corpse_db_id << std::endl;
|
||||||
|
std::cout << "CORPSE BAG EQUIP SLOT: " << item_data->equip_slot << std::endl;
|
||||||
|
database.DeleteItemOffCharacterCorpse(this->corpse_db_id, item_data->equip_slot, item->ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetPKItem()!=-1)
|
if (GetPKItem() != -1){
|
||||||
SetPKItem(0);
|
SetPKItem(0);
|
||||||
|
}
|
||||||
|
|
||||||
//now send messages to all interested parties
|
//now send messages to all interested parties
|
||||||
|
|
||||||
@ -1218,8 +1164,7 @@ void Corpse::LootItem(Client* client, const EQApplicationPacket* app)
|
|||||||
}
|
}
|
||||||
safe_delete_array(link);
|
safe_delete_array(link);
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
SendEndLootErrorPacket(client);
|
SendEndLootErrorPacket(client);
|
||||||
safe_delete(inst);
|
safe_delete(inst);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -3530,44 +3530,6 @@ uint32 ZoneDatabase::UpdateCharacterCorpse(uint32 db_id, uint32 char_id, const c
|
|||||||
);
|
);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
query = StringFormat("DELETE FROM `character_corpse_items` WHERE `corpse_id` = %u", db_id);
|
|
||||||
results = QueryDatabase(query);
|
|
||||||
|
|
||||||
/* Dump Items from Inventory */
|
|
||||||
uint8 first_entry = 0;
|
|
||||||
for (unsigned int i = 0; i < dbpc->itemcount; i++) {
|
|
||||||
if (first_entry != 1){
|
|
||||||
query = StringFormat("REPLACE INTO `character_corpse_items` \n"
|
|
||||||
" (corpse_id, equip_slot, item_id, charges, aug_1, aug_2, aug_3, aug_4, aug_5, attuned) \n"
|
|
||||||
" VALUES (%u, %u, %u, %u, %u, %u, %u, %u, %u, 0) \n",
|
|
||||||
db_id,
|
|
||||||
dbpc->items[i].equip_slot,
|
|
||||||
dbpc->items[i].item_id,
|
|
||||||
dbpc->items[i].charges,
|
|
||||||
dbpc->items[i].aug_1,
|
|
||||||
dbpc->items[i].aug_2,
|
|
||||||
dbpc->items[i].aug_3,
|
|
||||||
dbpc->items[i].aug_4,
|
|
||||||
dbpc->items[i].aug_5
|
|
||||||
);
|
|
||||||
first_entry = 1;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
query = query + StringFormat(", (%u, %u, %u, %u, %u, %u, %u, %u, %u, 0) \n",
|
|
||||||
db_id,
|
|
||||||
dbpc->items[i].equip_slot,
|
|
||||||
dbpc->items[i].item_id,
|
|
||||||
dbpc->items[i].charges,
|
|
||||||
dbpc->items[i].aug_1,
|
|
||||||
dbpc->items[i].aug_2,
|
|
||||||
dbpc->items[i].aug_3,
|
|
||||||
dbpc->items[i].aug_4,
|
|
||||||
dbpc->items[i].aug_5
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
results = QueryDatabase(query);
|
|
||||||
|
|
||||||
return db_id;
|
return db_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4044,6 +4006,17 @@ bool ZoneDatabase::ClearCorpseItems(uint32 db_id){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ZoneDatabase::DeleteItemOffCharacterCorpse(uint32 db_id, uint32 equip_slot, uint32 item_id){
|
||||||
|
std::string query = StringFormat("DELETE FROM `character_corpse_items` WHERE `corpse_id` = %u AND equip_slot = %u AND item_id = %u", db_id, equip_slot, item_id);
|
||||||
|
auto results = QueryDatabase(query);
|
||||||
|
std::cout << "QUERY: " << query << std::endl;
|
||||||
|
if (results.Success() && results.RowsAffected() != 0){
|
||||||
|
std::cout << "Item Delete Successfully" << std::endl;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool ZoneDatabase::BuryCharacterCorpse(uint32 db_id) {
|
bool ZoneDatabase::BuryCharacterCorpse(uint32 db_id) {
|
||||||
std::string query = StringFormat("UPDATE `character_corpses` SET `is_buried` = 1 WHERE `id` = %u", db_id);
|
std::string query = StringFormat("UPDATE `character_corpses` SET `is_buried` = 1 WHERE `id` = %u", db_id);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
|
|||||||
@ -296,6 +296,7 @@ public:
|
|||||||
|
|
||||||
/* Corpses */
|
/* Corpses */
|
||||||
bool ClearCorpseItems(uint32 db_id);
|
bool ClearCorpseItems(uint32 db_id);
|
||||||
|
bool DeleteItemOffCharacterCorpse(uint32 db_id, uint32 equip_slot, uint32 item_id);
|
||||||
uint32 GetCharacterCorpseItemCount(uint32 corpse_id);
|
uint32 GetCharacterCorpseItemCount(uint32 corpse_id);
|
||||||
bool LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct* pcs);
|
bool LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct* pcs);
|
||||||
Corpse* LoadCharacterCorpse(uint32 player_corpse_id);
|
Corpse* LoadCharacterCorpse(uint32 player_corpse_id);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user