From 51d259c7e63098fc5d21acfe7dcc730c6d85206a Mon Sep 17 00:00:00 2001 From: stpohle Date: Tue, 13 May 2003 22:28:39 +0000 Subject: [PATCH] added pkg_special packet for special things... like triggered bombs.. and and and.. --- src/packets.c | 29 +++++++++++++++++++++++++++++ src/packets.h | 11 ++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/packets.c b/src/packets.c index d0e3a9e..e84caf6 100644 --- a/src/packets.c +++ b/src/packets.c @@ -899,6 +899,35 @@ do_pkgack (struct pkg_pkgack *p_ack, _net_addr * addr) rscache_del (); }; +/* Player Special + * moves/bombs... whatever will be send as we use it */ +void do_special (struct pkg_special *sp_pkg, _net_addr *addr) { + if (addr->pl_nr == -1) + return; + + if (sp_pkg->pl_nr == -1) + return; + + /* check if the right player is sending the information */ + if (addr->pl_nr != 0 && addr->pl_nr != sp_pkg->pl_nr) + return; + + bman.players[sp_pkg->pl_nr].special = sp_pkg->typ; + special_use (sp_pkg->pl_nr); +}; + + +void send_special (_net_addr *addr, int p_nr, int typ) { + struct pkg_special sp_dat; + + sp_dat.h.typ = PKG_special; + sp_dat.h.len = sizeof (struct pkg_special); + sp_dat.pl_nr = p_nr; + sp_dat.h.flags = PKGF_ackreq; + + send_pkg ((struct pkg *) &sp_dat, addr); +}; + void do_bcmservchat (struct pkg_bcmservchat *packet, _net_addr * addr) diff --git a/src/packets.h b/src/packets.h index 241ba23..2d3913a 100644 --- a/src/packets.h +++ b/src/packets.h @@ -19,6 +19,7 @@ enum _network_data { PKG_playermove, PKG_chat, PKG_ill, + PKG_special, PKG_bcmservchat = 90 }; @@ -223,6 +224,13 @@ struct _inpkg_index { }; +struct pkg_special { + struct pkgheader h; + signed char pl_nr; + unsigned char typ; +}; + + extern int do_error (struct pkg_error *data, _net_addr *addr); extern void do_playerid (struct pkg_playerid *p_id, _net_addr *addr); extern void do_servermode (struct pkg_servermode *s_mod, _net_addr *addr); @@ -241,7 +249,7 @@ extern void do_chat (struct pkg_chat *chat_pkg, _net_addr *addr); extern int do_pkg (struct pkg *packet, _net_addr *addr); extern void do_bcmservchat (struct pkg_bcmservchat *packet, _net_addr *addr); extern void do_ill (struct pkg_ill *ill_pkg, _net_addr *addr); - +extern void do_special (struct pkg_special *sp_pkg, _net_addr *addr); extern void send_pkg (struct pkg *packet, _net_addr *addr); extern void send_playerid (_net_addr *addr, char *name, char *pladdr, char *plport, int p_nr, int gfx_nr); @@ -260,6 +268,7 @@ extern void send_playerstatus (_net_addr *addr, int pl_nr, int net_istep, int st extern void send_pkgack (_net_addr *addr, unsigned char typ, short int id); extern void send_chat (_net_addr *addr, char *text); extern void send_ill (_net_addr *addr, int p_nr, _player *pl); +extern void send_special (_net_addr *addr, int p_nr, int typ); extern int get_player_nr (char *host, char *port); extern int inpkg_check (unsigned char typ, short int id, _net_addr *addr);