예제 #1
0
/*==========================================
 * ギルド倉庫削除
 *------------------------------------------
 */
bool gstoragedb_sql_delete(int guild_id)
{
	const struct guild_storage *s = gstoragedb_sql_load(guild_id);
	bool result = false;

	if( sqldbs_transaction_start(&mysql_handle) == false )
		return result;

	// try
	do
	{
		if(s) {
			int i;
			for(i = 0; i < s->storage_amount; i++) {
				// ペット削除
				if( s->store_item[i].card[0] == (short)0xff00) {
					if( petdb_delete(*((int *)(&s->store_item[i].card[1]))) == false )
						break;
				}
			}
			if(i != s->storage_amount)
				break;
		}

		// delete
		if( sqldbs_query(&mysql_handle, "DELETE FROM `" GUILD_STORAGE_TABLE "` WHERE `guild_id`='%d'", guild_id) == false )
			break;

		// success
		result = true;

		{
			// cache delete
			struct guild_storage *s2 = (struct guild_storage *)numdb_erase(gstorage_db, guild_id);
			if(s2) {
				aFree(s2);
			}
		}
	} while(0);

	sqldbs_transaction_end(&mysql_handle, result);

	return result;
}
예제 #2
0
/*==========================================
 * 倉庫データ削除
 *------------------------------------------
 */
bool storagedb_txt_delete(int account_id)
{
	struct storage *s = (struct storage *)numdb_search(storage_db, account_id);

	if(s) {
		int i;
		for(i = 0; i < s->storage_amount; i++) {
			// ペット削除
			if(s->store_item[i].card[0] == (short)0xff00)
				petdb_delete(*((int *)(&s->store_item[i].card[1])));
		}
		numdb_erase(storage_db, account_id);
		aFree(s);
#ifdef TXT_JOURNAL
		if( storage_journal_enable )
			journal_write( &storage_journal, account_id, NULL );
#endif
	}
	return true;
}