summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/atcommand_athena.conf3
-rw-r--r--src/char_sql/int_auction.c32
-rw-r--r--src/char_sql/int_auction.h8
-rw-r--r--src/common/mmo.h16
-rw-r--r--src/map/atcommand.c12
-rw-r--r--src/map/clif.c18
-rw-r--r--src/map/clif.h3
7 files changed, 92 insertions, 0 deletions
diff --git a/conf/atcommand_athena.conf b/conf/atcommand_athena.conf
index 933ac35bd..17b58159b 100644
--- a/conf/atcommand_athena.conf
+++ b/conf/atcommand_athena.conf
@@ -104,6 +104,9 @@ storage: 1
// Opens your mailbox.
mail: 1
+// Opens auctions window.
+auctions: 1
+
// Locate someone on a map, returns your coordinates if the person isn't on.
where: 1
diff --git a/src/char_sql/int_auction.c b/src/char_sql/int_auction.c
new file mode 100644
index 000000000..a3213d647
--- /dev/null
+++ b/src/char_sql/int_auction.c
@@ -0,0 +1,32 @@
+// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
+// For more information, see LICENCE in the main folder
+
+#include "../common/mmo.h"
+#include "../common/malloc.h"
+#include "../common/db.h"
+#include "../common/showmsg.h"
+#include "../common/socket.h"
+#include "../common/strlib.h"
+#include "../common/sql.h"
+#include "char.h"
+#include "inter.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+static DBMap* auction_db = NULL; // int auction_id -> struct auction*
+
+int inter_auction_sql_init(void)
+{
+ auction_db = idb_alloc(DB_OPT_RELEASE_DATA);
+
+ return 0;
+}
+
+void inter_auction_sql_final(void)
+{
+ auction_db->destroy(auction_db,NULL);
+
+ return;
+}
diff --git a/src/char_sql/int_auction.h b/src/char_sql/int_auction.h
new file mode 100644
index 000000000..061f0855d
--- /dev/null
+++ b/src/char_sql/int_auction.h
@@ -0,0 +1,8 @@
+// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
+// For more information, see LICENCE in the main folder
+
+#ifndef _INT_AUCTION_SQL_H_
+#define _INT_AUCTION_SQL_H_
+
+
+#endif /* _INT_AUCTION_SQL_H_ */
diff --git a/src/common/mmo.h b/src/common/mmo.h
index ead8c8379..dc5931166 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -272,6 +272,22 @@ struct mail_data {
struct mail_message msg[MAIL_MAX_INBOX];
};
+struct auction_data {
+ unsigned int auction_id;
+ int seller_id;
+ char seller_name[NAME_LENGTH];
+ int buyer_id;
+ char buyer_name[NAME_LENGTH];
+
+ struct item item;
+
+ unsigned short hours;
+ unsigned int price, buynow;
+ unsigned int timestamp;
+
+ bool changed; // To know if data have been changed for save
+};
+
struct registry {
int global_num;
struct global_reg global[GLOBAL_REG_NUM];
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index f2947372b..e32f288ce 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -8170,6 +8170,17 @@ int atcommand_feelreset(const int fd, struct map_session_data* sd, const char* c
}
/*==========================================
+ * AUCTION SYSTEM
+ *------------------------------------------*/
+int atcommand_auction(const int fd, struct map_session_data *sd, const char *command, const char *message)
+{
+ nullpo_retr(0,sd);
+
+ clif_Auction_openwindow(sd);
+ return 0;
+}
+
+/*==========================================
* Kill Steal Protection
*------------------------------------------*/
int atcommand_ksprotection(const int fd, struct map_session_data *sd, const char *command, const char *message)
@@ -8509,6 +8520,7 @@ AtCommandInfo atcommand_info[] = {
{ "homshuffle", 60, atcommand_homshuffle },
{ "showmobs", 10, atcommand_showmobs },
{ "feelreset", 10, atcommand_feelreset },
+ { "auction", 60, atcommand_auction },
{ "mail", 1, atcommand_mail },
{ "noks", 0, atcommand_ksprotection },
{ "allowks", 6, atcommand_allowks },
diff --git a/src/map/clif.c b/src/map/clif.c
index 4ce9ff3c4..3378d785c 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -11753,6 +11753,24 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
}
/*==========================================
+ * AUCTIONS SYSTEM
+ *==========================================*/
+void clif_Auction_openwindow(struct map_session_data *sd)
+{
+ int fd = sd->fd;
+
+ WFIFOHEAD(fd,12);
+ WFIFOW(fd,0) = 0x25f;
+ WFIFOL(fd,2) = 0;
+ WFIFOB(fd,6) = 0xb6;
+ WFIFOB(fd,7) = 0x00;
+ WFIFOB(fd,8) = 0xa6;
+ WFIFOB(fd,9) = 0xde;
+ WFIFOW(fd,10) = 0;
+ WFIFOSET(fd,12);
+}
+
+/*==========================================
* Requesting equip of a player
*------------------------------------------*/
void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd)
diff --git a/src/map/clif.h b/src/map/clif.h
index 1aa5edcf6..51dc0c417 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -413,4 +413,7 @@ void clif_Mail_getattachment(int fd, uint8 flag);
void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd);
+// AUCTION SYSTEM
+void clif_Auction_openwindow(struct map_session_data *sd);
+
#endif /* _CLIF_H_ */