viewing paste Unknown #6733 | Diff

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
diff --git a/src/map/clif.c b/src/map/clif.c
index 5110ca76be9d2e9eb5706c0ff01e96aa30698ef4..448d1454c3cdb55901787262480ed95ad634d0a4 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -17481,8 +17481,7 @@ void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
 /* */
 unsigned short clif_decrypt_cmd( int cmd, struct map_session_data *sd ) {
    if( sd ) {
-       sd->cryptKey = (( sd->cryptKey * clif->cryptKey[1] ) + clif->cryptKey[2]) & 0xFFFFFFFF;
-       return (cmd ^ ((sd->cryptKey >> 16) & 0x7FFF));
+       return (cmd ^ (((( sd->cryptKey * clif->cryptKey[1] ) + clif->cryptKey[2]) >> 16) & 0x7FFF));
    }
    return (cmd ^ (((( clif->cryptKey[0] * clif->cryptKey[1] ) + clif->cryptKey[2]) >> 16) & 0x7FFF));
 }
@@ -17502,7 +17501,6 @@ unsigned short clif_parse_cmd_optional ( int fd, struct map_session_data *sd ) {
        cmd = clif->decrypt_cmd( cmd, sd );
        if( cmd > MAX_PACKET_DB || packet_db[cmd].len == 0 )
            return 0;
-       RFIFOW(fd, 0) = cmd;
    }
 
    return cmd;
@@ -17516,11 +17514,8 @@ unsigned short clif_parse_cmd_decrypt ( int fd, struct map_session_data *sd ) {
    if (cmd > MAX_PACKET_DB || packet_db[cmd].len == 0 )
        return 0;
    
-   RFIFOW(fd, 0) = cmd;
-
    return cmd;
 }
-
 /*==========================================
  * Main client packet processing function
  *------------------------------------------*/
@@ -17589,10 +17584,15 @@ int clif_parse(int fd) {
                return 0;
            }
        }
-
+       
        if ((int)RFIFOREST(fd) < packet_len)
            return 0; // not enough data received to form the packet
 
+       if( cmd != RFIFOW(fd, 0) ) {
+           RFIFOW(fd, 0) = cmd;
+           sd->cryptKey = (( sd->cryptKey * clif->cryptKey[1] ) + clif->cryptKey[2]) & 0xFFFFFFFF;
+       }
+       
        if( packet_db[cmd].func == clif->pDebug )
            packet_db[cmd].func(fd, sd);
        else if( packet_db[cmd].func != NULL ) {
 
Viewed 764 times, submitted by Guest.