summaryrefslogtreecommitdiff
path: root/src/map/chrif.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-28 16:42:34 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-02-28 16:42:34 +0000
commitf4e33de65bca782f34061cd9610792dbffad8b08 (patch)
tree94488ff4b586e6b878da347b82f4f7dac1328219 /src/map/chrif.c
parentb31f1a4805c6119e7463f1cb8dd5933b7d68e101 (diff)
downloadhercules-f4e33de65bca782f34061cd9610792dbffad8b08.tar.gz
hercules-f4e33de65bca782f34061cd9610792dbffad8b08.tar.bz2
hercules-f4e33de65bca782f34061cd9610792dbffad8b08.tar.xz
hercules-f4e33de65bca782f34061cd9610792dbffad8b08.zip
- Made it possible to modify the server packet version from the Makefile.
- Merged packet 2b22 (from my server) to handle quick fame updates whenever someone's fame in the ranking changes, but no position swaps take place (prevents having to resend the whole fame list in such events, you lazy Draco <.<) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9936 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/chrif.c')
-rw-r--r--src/map/chrif.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 68b97e5b2..f3cf7b7b2 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -38,7 +38,7 @@ static const int packet_len_table[0x3d] = {
6,30,-1,10,86, 7,44,34, // 2b08-2b0f: U->2b08, U->2b09, U->2b0a, U->2b0b, U->2b0c, U->2b0d, U->2b0e, U->2b0f
0,-1,10, 6,11,-1, 0, 0, // 2b10-2b17: U->2b10, U->2b11, U->2b12, U->2b13, U->2b14, U->2b15, U->2b16, U->2b17
-1,-1,-1,-1,-1,-1, 2, 7, // 2b18-2b1f: U->2b18, U->2b19, U->2b1a, U->2b1b, U->2b1c, U->2b1d, U->2b1e, U->2b1f
- -1,10,-1,-1,-1,-1,-1,-1, // 2b20-2b27: U->2b20, U->2b21, F->2b22, F->2b23, F->2b24, F->2b25, F->2b26, F->2b27
+ -1,10, 8,-1,-1,-1,-1,-1, // 2b20-2b27: U->2b20, U->2b21, U->2b22, U->2b23, F->2b24, F->2b25, F->2b26, F->2b27
};
//Used Packets:
@@ -84,7 +84,8 @@ static const int packet_len_table[0x3d] = {
//2b1f: Incomming, chrif_disconnectplayer -> 'disconnects a player (aid X) with the message XY ... 0x81 ..' [Sirius]
//2b20: Incomming, chrif_removemap -> 'remove maps of a server (sample: its going offline)' [Sirius]
//2b21: Incomming, chrif_save_ack. Returned after a character has been "final saved" on the char-server. [Skotlex]
-//2b22-2b27: FREE
+//2b22: Incomming, chrif_updatefamelist_ack. Updated one position in the fame list.
+//2b24-2b27: FREE
int chrif_connected = 0;
int char_fd = 0; //Using 0 instead of -1 is safer against crashes. [Skotlex]
@@ -1192,6 +1193,32 @@ int chrif_recvfamelist(int fd)
return 0;
}
+int chrif_updatefamelist_ack(int fd)
+{
+ struct fame_list *list;
+ char index;
+ RFIFOHEAD(fd);
+ switch (RFIFOB(fd, 2))
+ {
+ case 1:
+ list = smith_fame_list;
+ break;
+ case 2:
+ list = chemist_fame_list;
+ break;
+ case 3:
+ list = taekwon_fame_list;
+ break;
+ default:
+ return 0;
+ }
+ index = RFIFOB(fd, 3);
+ if (index < 0 || index >= MAX_FAME_LIST)
+ return 0;
+ list[(int)index].fame = RFIFOL(fd, 4);
+ return 1;
+}
+
int chrif_save_scdata(struct map_session_data *sd)
{ //parses the sc_data of the player and sends it to the char-server for saving. [Skotlex]
#ifdef ENABLE_SC_SAVING
@@ -1480,6 +1507,7 @@ int chrif_parse(int fd)
case 0x2b1f: chrif_disconnectplayer(fd); break;
case 0x2b20: chrif_removemap(fd); break;
case 0x2b21: chrif_save_ack(fd); break;
+ case 0x2b22: chrif_updatefamelist_ack(fd); break;
default:
if (battle_config.error_log)