void ServerPackets::UserInfo(CUserSocket *s, va_list pck) { // C4: cdddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddffffddddSdddddcccdd [h][b] cdcbhhdhddd dccdcccdddd // C6: cdddddSddddQdddddddddddddddddddddddddddddddddddddddddddddddddhhhhhhhhhhhhhhdhhhhhhhhhhhhdhhhhddddddddddddddddddddffffddddSdddddcccdd [h][h] cdcdhhdhddd dccdcccddddcdddd PacketReaderV pki(pck); PacketWriter pko(pki.ReadC(), 2048); // opcode 0x04 pki.Read(); pki.Read(); pki.Read(); pko.WriteD(0); // x pko.WriteD(0); // y pko.WriteD(0); // z pko.WriteD(pki.Read()); // heading pko.WriteD(pki.Read()); // object id pko.WriteS(pki.Read()); // name pko.WriteD(pki.Read()); // race (base?) (?) pko.WriteD(pki.Read()); // sex pko.WriteD(pki.Read()); // class id pko.WriteD(pki.Read()); // lvl pko.WriteQ(pki.Read()); // exp pko.WriteD(pki.Read()); // str pko.WriteD(pki.Read()); // dex pko.WriteD(pki.Read()); // con pko.WriteD(pki.Read()); // int pko.WriteD(pki.Read()); // wit pko.WriteD(pki.Read()); // men pko.WriteD(pki.Read()); // max hp pko.WriteD(pki.Read()); // curr hp pko.WriteD(pki.Read()); // max mp pko.WriteD(pki.Read()); // curr mp pko.WriteD(pki.Read()); // sp pko.WriteD(pki.Read()); // load pko.WriteD(pki.Read()); // max load pko.WriteD(pki.Read()); // unknown pko.WriteD(pki.Read()); // DHAIR obj id pko.WriteD(pki.Read()); // REAR obj id pko.WriteD(pki.Read()); // LEAR obj id pko.WriteD(pki.Read()); // NECK obj id pko.WriteD(pki.Read()); // RFINGER obj id pko.WriteD(pki.Read()); // LFINGER obj id pko.WriteD(pki.Read()); // HEAD obj id pko.WriteD(pki.Read()); // RHAND obj id pko.WriteD(pki.Read()); // LHAND obj id pko.WriteD(pki.Read()); // GLOVES obj id pko.WriteD(pki.Read()); // CHEST obj id pko.WriteD(pki.Read()); // LEGS obj id pko.WriteD(pki.Read()); // FEET obj id pko.WriteD(pki.Read()); // BACK obj id pko.WriteD(pki.Read()); // LRHAND obj id pko.WriteD(pki.Read()); // HAIR obj id pko.WriteD(0x00); // FACE obj id pko.WriteD(pki.Read()); // DHAIR item id pko.WriteD(pki.Read()); // REAR item id pko.WriteD(pki.Read()); // LEAR item id pko.WriteD(pki.Read()); // NECK item id pko.WriteD(pki.Read()); // RFINGER item id pko.WriteD(pki.Read()); // LFINGER item id pko.WriteD(pki.Read()); // HEAD item id pko.WriteD(pki.Read()); // RHAND item id pko.WriteD(pki.Read()); // LHAND item id pko.WriteD(pki.Read()); // GLOVES item id pko.WriteD(pki.Read()); // CHEST item id pko.WriteD(pki.Read()); // LEGS item id pko.WriteD(pki.Read()); // FEET item id pko.WriteD(pki.Read()); // BACK item id pko.WriteD(pki.Read()); // LRHAND item id pko.WriteD(pki.Read()); // HAIR item id pko.WriteD(0x00); // FACE item id // c6 new h's pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteD(0x00); // augment id pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteD(0x00); // augment id pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk pko.WriteH(0x00); // unk // end of c6 new h's pko.WriteD(pki.Read()); // p.atk pko.WriteD(pki.Read()); // p.atk spd pko.WriteD(pki.Read()); // p.def pko.WriteD(pki.Read()); // evasion pko.WriteD(pki.Read()); // accuracy pko.WriteD(pki.Read()); // crit hit pko.WriteD(pki.Read()); // m.atk pko.WriteD(pki.Read()); // m.atk spd pko.WriteD(pki.Read()); // p.atk spd pko.WriteD(pki.Read()); // m.def pko.WriteD(pki.Read()); // 0-non-pvp 1-pvp = violett name pko.WriteD(pki.Read()); // karma pko.WriteD(pki.Read()); // run spd pko.WriteD(pki.Read()); // walk spd pko.WriteD(pki.Read()); // run swimspeed pko.WriteD(pki.Read()); // walk swimspeed pko.WriteD(pki.Read()); // _flRunSpd pko.WriteD(pki.Read()); // _flWalkSpd pko.WriteD(pki.Read()); // _flyRunSpd pko.WriteD(pki.Read()); // _flyWalkSpd pko.WriteF(pki.Read()); // _moveMultiplier pko.WriteF(pki.Read()); // atk spd multiplier pko.WriteF(pki.Read()); // collision radius pko.WriteF(pki.Read()); // collision height pko.WriteD(pki.Read()); // hair style pko.WriteD(pki.Read()); // hair color pko.WriteD(pki.Read()); // face pko.WriteD(pki.Read()); // builder level pko.WriteS(pki.Read()); // title pko.WriteD(pki.Read()); // clan id pko.WriteD(pki.Read()); // clan crest id pko.WriteD(pki.Read()); // ally id pko.WriteD(pki.Read()); // ally crest id // 0x40 leader rights // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader) pko.WriteD(pki.Read()); // _relation, is clan leader pko.WriteC(pki.Read()); // mount type pko.WriteC(pki.Read()); // private store type pko.WriteC(pki.Read()); // has dwarven craft pko.WriteD(pki.Read()); // pk kills pko.WriteD(pki.Read()); // pvp kills // C4: cdddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccdd[h][b]cdc[b]hhdhddddccdcccdddd u16 cubsCnt = pki.Read(); pko.WriteH(cubsCnt); // cubics count u16 *cubsBuff; if(cubsCnt > 0) cubsBuff = pki.Read(); for(u16 i = 0; i < cubsCnt; i++) pko.WriteH(cubsBuff[i]);// cubic id (buffer) pko.WriteC(pki.Read()); // 1-find party members pko.WriteD(*pki.Read()); // abnormal effect (ptr) pko.WriteC(pki.Read()); // unk pko.WriteD(pki.Read()); // clan privileges (buffer) pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pki.ReadD(); // junk data, adjusting _pos pko.WriteH(pki.Read()); // c2 recommendations remaining pko.WriteH(pki.Read()); // c2 recommendations received pko.WriteD(pki.Read()); // unk pko.WriteH(pki.Read()); // inv limit pko.WriteD(pki.Read()); // class id pko.WriteD(pki.Read()); // special effects? circles around player... pko.WriteD(pki.Read()); // max cp pko.WriteD(pki.Read()); // current cp pko.WriteC(pki.Read()); // enchant effect pko.WriteC(pki.Read()); //team circle around feet 1= Blue, 2 = red, 0 = none pko.WriteD(pki.Read()); // large crest id (insignia?) pko.WriteC(pki.Read()); // 0x01: symbol on char menu ctrl+I, is nobless pko.WriteC(pki.Read()); // 0x01: Hero Aura, is hero pko.WriteC(pki.Read()); // Fishing Mode pko.WriteD(pki.Read()); // fishing x pko.WriteD(pki.Read()); // fishing y pko.WriteD(pki.Read()); // fishing z pko.WriteD(pki.Read()); // name color //new c5 pko.WriteC(s->GetUser()->GetSharedData()->nIsRunning); // changes the Speed display on Status Window (1 = is running, 2 = isnt running) pko.WriteD(0x00); // pledge class, changes the text above CP on Status Window pko.WriteD(0x00); // unk pko.WriteD(0x00); // title color pko.WriteD(0x00); // cursed wpn id, 0 if none s->Send(&pko); }