summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/clif.c25
-rw-r--r--src/map/clif.h1
-rw-r--r--src/map/intif.c58
-rw-r--r--src/map/intif.h2
4 files changed, 86 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index a71c19f44..2e0591c99 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -11834,6 +11834,17 @@ void clif_Auction_message(int fd, unsigned char flag)
WFIFOSET(fd,3);
}
+// 0 = You have ended the auction
+// 1 = You cannot end the auction
+// 2 = Bid number is incorrect
+void clif_Auction_close(int fd, unsigned char flag)
+{
+ WFIFOHEAD(fd,6);
+ WFIFOW(fd,0) = 0x25d;
+ WFIFOL(fd,2) = flag;
+ WFIFOSET(fd,6);
+}
+
void clif_parse_Auction_register(int fd, struct map_session_data *sd)
{
struct auction_data auction;
@@ -11910,6 +11921,20 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
}
}
+void clif_parse_Auction_cancel(int fd, struct map_session_data *sd)
+{
+ unsigned int auction_id = RFIFOL(fd,2);
+
+ intif_Auction_cancel(sd->status.char_id, auction_id);
+}
+
+void clif_parse_Auction_close(int fd, struct map_session_data *sd)
+{
+ unsigned int auction_id = RFIFOL(fd,2);
+
+ intif_Auction_close(sd->status.char_id, auction_id);
+}
+
/*------------------------------------------
* Auction Search
* S 0251 <search type>.w <search price>.l <search text>.24B <01>.w
diff --git a/src/map/clif.h b/src/map/clif.h
index 6e136a302..9be840d72 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -411,6 +411,7 @@ void clif_Mail_getattachment(int fd, uint8 flag);
// AUCTION SYSTEM
void clif_Auction_results(struct map_session_data *sd, short count, unsigned char *buf);
void clif_Auction_message(int fd, unsigned char flag);
+void clif_Auction_close(int fd, unsigned char flag);
#endif
void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd);
diff --git a/src/map/intif.c b/src/map/intif.c
index a9fba59e9..ff18aecba 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -1746,6 +1746,62 @@ static void intif_parse_Auction_register(int fd)
}
}
+int intif_Auction_cancel(int char_id, unsigned int auction_id)
+{
+ if( CheckForCharServer() )
+ return 0;
+
+ WFIFOHEAD(inter_fd,10);
+ WFIFOW(inter_fd,0) = 0x3052;
+ WFIFOL(inter_fd,2) = char_id;
+ WFIFOL(inter_fd,6) = auction_id;
+ WFIFOSET(inter_fd,10);
+
+ return 0;
+}
+
+static void intif_parse_Auction_cancel(int fd)
+{
+ struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2));
+ int result = RFIFOB(fd,6);
+
+ if( sd == NULL )
+ return;
+
+ switch( result )
+ {
+ case 0: clif_Auction_message(sd->fd, 2); break;
+ case 1: clif_Auction_close(sd->fd, 2); break;
+ case 2: clif_Auction_close(sd->fd, 1); break;
+ case 3: clif_Auction_message(sd->fd, 3); break;
+ }
+}
+
+int intif_Auction_close(int char_id, unsigned int auction_id)
+{
+ if( CheckForCharServer() )
+ return 0;
+
+ WFIFOHEAD(inter_fd,10);
+ WFIFOW(inter_fd,0) = 0x3053;
+ WFIFOL(inter_fd,2) = char_id;
+ WFIFOL(inter_fd,6) = auction_id;
+ WFIFOSET(inter_fd,10);
+
+ return 0;
+}
+
+static void intif_parse_Auction_close(int fd)
+{
+ struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2));
+ unsigned char result = RFIFOB(fd,6);
+
+ if( sd == NULL )
+ return;
+
+ clif_Auction_close(sd->fd, result);
+}
+
#endif
//-----------------------------------------------------------------
@@ -1827,6 +1883,8 @@ int intif_parse(int fd)
// Auction System
case 0x3850: intif_parse_Auction_results(fd); break;
case 0x3851: intif_parse_Auction_register(fd); break;
+ case 0x3852: intif_parse_Auction_cancel(fd); break;
+ case 0x3853: intif_parse_Auction_close(fd); break;
#endif
case 0x3880: intif_parse_CreatePet(fd); break;
case 0x3881: intif_parse_RecvPetData(fd); break;
diff --git a/src/map/intif.h b/src/map/intif.h
index 8f3cd1d9a..743057fb4 100644
--- a/src/map/intif.h
+++ b/src/map/intif.h
@@ -86,6 +86,8 @@ int intif_Mail_send(int account_id, struct mail_message *msg);
// AUCTION SYSTEM
int intif_Auction_requestlist(int char_id, short type, int price, const char* searchtext);
int intif_Auction_register(struct auction_data *auction);
+int intif_Auction_cancel(int char_id, unsigned int auction_id);
+int intif_Auction_close(int char_id, unsigned int auction_id);
#endif
int CheckForCharServer(void);