viewing paste Unknown #7251 | C

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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
struct PACKET_ZC_NOTIFY_STANDENTRY {
  /* this+0x0 */ short PacketType
  /* this+0x2 */ unsigned char objecttype
  /* this+0x3 */ unsigned long GID
  /* this+0x7 */ short speed
  /* this+0x9 */ short bodyState
  /* this+0xb */ short healthState
  /* this+0xd */ short effectState
  /* this+0xf */ short job
  /* this+0x11 */ short head
  /* this+0x13 */ short weapon
  /* this+0x15 */ short accessory
  /* this+0x17 */ short shield
  /* this+0x19 */ short accessory2
  /* this+0x1b */ short accessory3
  /* this+0x1d */ short headpalette
  /* this+0x1f */ short bodypalette
  /* this+0x21 */ short headDir
  /* this+0x23 */ unsigned long GUID
  /* this+0x27 */ short GEmblemVer
  /* this+0x29 */ short honor
  /* this+0x2b */ short virtue
  /* this+0x2d */ bool isPKModeON
  /* this+0x2e */ unsigned char sex
  /* this+0x2f */ unsigned char[0x3] PosDir
  /* this+0x32 */ unsigned char xSize
  /* this+0x33 */ unsigned char ySize
  /* this+0x34 */ unsigned char state
  /* this+0x35 */ short clevel
}
--- ours
    p.PacketType = idle_unit2Type;
    p.objecttype = clif_bl_type(bl);
    p.GID = bl->id;
    p.speed = iStatus->get_speed(bl);
    p.bodyState = (sc) ? sc->opt1 : 0;
    p.healthState = (sc) ? sc->opt2 : 0;
    p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0;
    p.job = vd->class_;
    p.head = vd->hair_style;
    p.weapon = vd->weapon;
    p.accessory = vd->head_bottom;
    p.shield = vd->shield;
    p.accessory2 = vd->head_top;
    p.accessory3 = vd->head_mid;
    if( bl->type == BL_NPC && vd->class_ == FLAG_CLASS ) { //The hell, why flags work like this?
        p.shield = iStatus->get_emblem_id(bl);
        p.accessory2 = GetWord(g_id, 1);
        p.accessory3 = GetWord(g_id, 0);
    }
    p.headpalette = vd->hair_color;
    p.bodypalette = vd->cloth_color;
    p.headDir = (sd)? sd->head_dir : 0;
    p.GUID = g_id;
    p.GEmblemVer = iStatus->get_emblem_id(bl);
    p.honor = (sd) ? sd->status.manner : 0;
    p.virtue = (sc) ? sc->opt3 : 0;
    p.isPKModeON = (sd) ? sd->status.karma : 0;
    p.sex = vd->sex;
    WBUFPOS(&p.PosDir[0],0,bl->x,bl->y,unit_getdir(bl));
    p.xSize = p.ySize = (sd) ? 5 : 0;
    p.state = vd->dead_sit;
    p.clevel = clif_setlevel(bl);
 
--- ceres
        memset(buf,0,packet_len(0x78));
 
        WBUFW(buf,0)=0x78;
        WBUFL(buf,2)=bl->id;
        WBUFW(buf,6)=status_get_speed(bl);
        if (sc) {
            WBUFW(buf,8)=sc->opt1;
            WBUFW(buf,10)=sc->opt2;
            WBUFW(buf,12)=sc->option;
            WBUFW(buf,42)=sc->opt3;
        }
        WBUFW(buf,14)=vd->class_;
        WBUFW(buf,16)=vd->hair_style;
        WBUFW(buf,18)=vd->weapon;
        WBUFW(buf,20)=vd->head_bottom;
        WBUFW(buf,22)=vd->shield;
        WBUFW(buf,24)=vd->head_top;
        WBUFW(buf,26)=vd->head_mid;
        WBUFW(buf,28)=vd->hair_color;
        WBUFW(buf,30)=vd->cloth_color;
        WBUFW(buf,32)=sd?sd->head_dir:0;
        WBUFL(buf,34)=guild_id;
        WBUFW(buf,38)=emblem_id;
        if (sd) {
            WBUFW(buf,40)=sd->status.manner;
            WBUFB(buf,44)=sd->status.karma;
        }
        WBUFB(buf,45)=vd->sex;
        WBUFPOS(buf,46,bl->x,bl->y,dir);
        WBUFB(buf,49)=5;
        WBUFB(buf,50)=5;
        WBUFB(buf,51)=vd->dead_sit;
        WBUFW(buf,52)=clif_setlevel(lv);
        return packet_len(0x78);
 
 
Viewed 760 times, submitted by Guest.