void MyServer::makeUserInfo(qint64 id) { QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(respondType::registeOk); in<<qint64(id+N)<<qint8(1)<<QString("编辑个性签名")<<QString("head1.png"); in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
// 用于返回好友列表 封装用户基本信息>>bufBlock void MyServer::makeUserInfo(userInfo *info, qint8 state, qint8 type) { bufBlock.resize(0); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<type; in<<info->account<<info->nick<<qint8(info->level) <<info->signatrue<<qint8(state); QPixmap pix(QString(":/image/") + info->headImage); in<<pix; in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
QDataStream &operator<<(QDataStream &out, const GameState::State &data) { out << qint8(data.eastPosition) << qint8(data.winnerPosition); for (int i = 0; i < 4; ++i) { out << data.playersSet[i] << qint32(data.scores [i]) << qint32(data.overall [i]); } return out; }
void MyServer::makeTextChat(QMap<QString, QVariant> map) { bufBlock.resize(0); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(respondType::chat)<<qint8(respondType::textChat); in<<map["fromAccount"].toString()<<map["content"].toString(); in<<map["time"].toDateTime(); in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
void MyServer::makeUserRecommd(userInfo *info,int limit, int type) { bufBlock.resize(0); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(type) <<qint8(limit) ; for (int i=0;i<limit;i++ ) { in<<qint32(info[i].id)<<info[i].nick; qDebug()<<" for "<<info[i].id<<" "<<info[i].nick<<" "<<info[i].headImage; QPixmap pix(QString(":/image/") + info[i].headImage); in<<pix; } in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
void MyServer::makeUserInfo(userInfo *info,qint8 state) { bufBlock.resize(0); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(respondType::loginOk); in<<info->nick<<qint8(info->level) <<info->signatrue<<qint8(state); QByteArray data = getHeadImage( QString(":/image/") + info->headImage); in<<qint32(data.size()); bufBlock.append( data ); in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
void MyServer::sendGroupSize(const QVector<groupInfo> &groups, socketClients *client) { int size = groups.count(); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); // 好友分组个数上限 : qint8 in<<qint32(0)<<qint8(respondType::friendGroupSize)<<qint8(size); for (int i=0;i<size;i++) { // qDebug()<<size<<" , "<<groups[i].name<<" , "<<groups[i].total; in<<qint32(groups[i].total)<<groups[i].name; } bufferHead(in); client->getSocket()->write(bufBlock); bufBlock.resize(0); }
QDataStream &operator << ( QDataStream &out, const TestNode &node ) { out << qint32 ( node.getType() ) << node.getTask() << node.getQuestion() << node.getQuestions() << node.getAnswers() << qint8 ( node.getRealsInt() ) << node.getReals(); return out; }
void MyServer::sendFriendGroup(const QVector<groupInfo>& groups,socketClients* client) { int size = groups.count(); QTcpSocket* socket = client->getSocket(); QByteArray data; QDataStream in(&data,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(respondType::friendGroup); QVector<int> friendsID; for (int i=0;i<size;i++) { in<<groups[i].name; // 将每一个分组下的所有好友信息封装在一起,再发送出去 if (groups[i].total<=0) continue; model.getFriendsID(friendsID, groups[i].id); for (int j=0;j<friendsID.count();j++) { userInfo* info = model.getFriendsInfo(friendsID[j]); if ( hx.contains(info->account) ) { makeFriendInfo(in,info,clients.at( hx[ info->account ] )->getUserState() ); } else { makeFriendInfo(in,info,userStateType::offline ); } delete info; } } in.device()->seek(0); in<<qint32(data.size()-sizeof(qint32)); socket->write(data); }
void CSVImportDialog::readSettings() { QSettings settings(GenericHelper::getCompanyName(), GenericHelper::getAppName()); settings.beginGroup("CSVImportDialog"); ui->amountCheck->setChecked(settings.value("amountChecked", true).toBool()); ui->dateCheck->setChecked(settings.value("dateChecked", true).toBool()); ui->descriptionCheck->setChecked(settings.value("descriptionChecked", true).toBool()); ui->whatCheck->setChecked(settings.value("whatChecked", true).toBool()); ui->categoryCheck->setChecked(settings.value("categoryChecked", true).toBool()); ui->paymentCheck->setChecked(settings.value("paymentChecked", true).toBool()); ui->amountEdit->setText(settings.value("amountValue", qint8(1)).toString()); ui->dateEdit->setText(settings.value("dateValue", qint8(2)).toString()); ui->descriptionEdit->setText(settings.value("descriptionValue", qint8(3)).toString()); ui->whatEdit->setText(settings.value("whatValue", qint8(4)).toString()); ui->categoryEdit->setText(settings.value("categoryValue", qint8(5)).toString()); ui->paymentEdit->setText(settings.value("paymentValue", qint8(6)).toString()); ui->lineskipSpinBox->setValue(settings.value("lineskip", qint8(4)).toInt()); ui->invertCheck->setChecked(settings.value("invertChecked", false).toBool()); ui->dateFormatEdit->setText(settings.value("dateformat","M/d/yyyy").toString()); ui->separatorEdit->setText(settings.value("separator",",").toString()); ui->localeEdit->setText(settings.value("locale","C").toString()); settings.endGroup(); }
void MyServer::makeFriendInfo(QDataStream& in, userInfo *info, qint8 state) { bufBlock.resize(0); in<<info->account<<info->nick<<qint8(info->level)<<info->signatrue<<state; //QByteArray data = getHeadImage( QString(":/image/") + info->headImage); //in<<qint32(data.size()); //bufBlock.append( data ); QPixmap pix(QString(":/image/") + info->headImage); in<<pix; }
QByteArray *sql::getErrorData(QString str, int type) { QByteArray *data = new QByteArray; QDataStream in(data,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(type)<<str; in.device()->seek(0); in<<qint32(data->size() - sizeof(qint32)); return data; }
QByteArray *sql::sendDescriptor(int descrip) { QByteArray *data=new QByteArray; QDataStream in(data,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<qint8(respondType::descriptor)<<qint32(descrip); in.device()->seek(0); in<<qint32(data->size() - sizeof(qint32)); return data; }
qint8 U2Bits::readInt8(const uchar* bits, int pos) { int res = 0; for (int i = 0; i < 8; i++) { res = res << 1; if (U2Bits::getBit(bits, pos + i)) { res += 1; } } return qint8(res); }
qint8 KisColorSelector::getLightIndex(const QPointF& pt) const { if (m_lightStripArea.contains(pt.toPoint(), true)) { qreal t = (pt.x() - m_lightStripArea.x()) / qreal(m_lightStripArea.width()); t = (pt.y() - m_lightStripArea.y()) / qreal(m_lightStripArea.height()); return qint8(t * getNumLightPieces()); } return -1; }
qint8 KisColorSelector::getSaturationIndex(const QPointF& pt) const { qreal length = std::sqrt(pt.x()*pt.x() + pt.y()*pt.y()); for(int i=0; i<m_colorRings.size(); ++i) { if (length >= m_colorRings[i].innerRadius && length < m_colorRings[i].outerRadius) return qint8(i); } return -1; }
//------------------------------------------------------------------------------------------------- bool ToG3DataID( tG3DataID& g3DataID, const tDataId& dataID ) { g3DataID.engine = qint8( dataID.DataEngine() ); g3DataID.length = dataID.DataSource().Length(); memcpy( g3DataID.source, dataID.DataSource().Data(), g3DataID.length ); if (g3DataID.length < MAX_DATA_SOURCE_SIZE) memset( g3DataID.source + g3DataID.length, 0, MAX_DATA_SOURCE_SIZE - g3DataID.length ); Assert( g3DataID.engine == dataID.DataEngine() ); return true; }
void QPicturePaintEngine::updateClipRegion(const QRegion ®ion, Qt::ClipOperation op) { Q_D(QPicturePaintEngine); #ifdef QT_PICTURE_DEBUG qDebug() << " -> updateClipRegion(): op:" << op << "bounding rect:" << region.boundingRect(); #endif int pos; SERIALIZE_CMD(QPicturePrivate::PdcSetClipRegion); d->s << region << qint8(op); writeCmdLength(pos, QRectF(), false); }
QDataStream &operator<<(QDataStream &stream, const QAmqpFrame &frame) { // write header stream << frame.type_; stream << frame.channel_; stream << frame.size(); frame.writePayload(stream); // write end stream << qint8(QAmqpFrame::FRAME_END); stream.device()->waitForBytesWritten(QAmqpFrame::writeTimeout()); return stream; }
void BattleCommunicator::showResult(int battleid, int result, int loser) { QByteArray command; DataStream stream(&command, QIODevice::WriteOnly); stream << uchar(BattleCommands::BattleEnd) << qint8(mybattles[battleid]->opponent(mybattles[battleid]->spot(loser))) << uchar(result); emit battleInfo(battleid, mybattles[battleid]->id(0), command); emit battleInfo(battleid, mybattles[battleid]->id(1), command); foreach(int spectator, mybattles[battleid]->spectators) { emit battleInfo(battleid, spectator, command); } }
// Отправка сообщения в сеть void MainWindow::send(QString str, qint8 type) { // Полный пакет данных будет в массиве data QByteArray data; // Массив данных для отправки // Последовательно выводим в него байты QDataStream out(&data, QIODevice::WriteOnly); out << qint8(type); // Тип сообщения out << str; // Само сообщение // Отправляем полученный массив данных всем в локальный сети // на порт указанный в интерфейсе socket->writeDatagram(data, QHostAddress::Broadcast, ui->portNumEdit->text().toInt() ); }
void TestNode::shuffleClose() { quint32 num = answers.count(); quint32 a = 0, b = 0, c = 0, j = 0, i = 0; quint32 *d = new quint32[num]; QStringList tmp1, tmp2; QString sep = "&$"; for(i = 0; i < num; i++) { qint8 ans = qint8(std::pow(2, i)) & reals; if(ans > 0) ans = 1; tmp1.append(answers.at(i) + sep + QString().setNum(ans)); } for(i = 0; i < num; i ++) d[i] = i; while(j < (num * 2)) { a = qrand() % num; b = qrand() % num; c = d[a]; d[a] = d[b]; d[b] = c; j++; } for(i = 0; i < num; i++) { tmp2.append(tmp1.at(d[i])); } answers.clear(); reals = 0; for(i = 0; i < num; i++) { QStringList tmp3 = tmp2.at(i).split(sep); answers.append(tmp3.at(0)); reals += tmp3.at(1).toUInt() * std::pow(2, i); } delete[] d; }
void QAmqpChannel::qos(qint16 prefetchCount, qint32 prefetchSize) { Q_D(QAmqpChannel); QAmqpMethodFrame frame(QAmqpFrame::Basic, QAmqpChannelPrivate::bmQos); frame.setChannel(d->channelNumber); QByteArray arguments; QDataStream stream(&arguments, QIODevice::WriteOnly); d->requestedPrefetchSize = prefetchSize; d->requestedPrefetchCount = prefetchCount; stream << qint32(prefetchSize); stream << qint16(prefetchCount); stream << qint8(0x0); // global frame.setArguments(arguments); d->sendFrame(frame); }
void Widget::startTransferMsg(){ if(msgSendReady){ // localFile = new QFile(fileName); // if(!localFile->open(QFile::ReadOnly)) // { // qDebug() << "open file error!"; // return; // } msg = this->msgLineEdit->text(); totalBytes = msg.size(); //文件总大小 QDataStream sendOut(&outBlock,QIODevice::WriteOnly); sendOut.setVersion(QDataStream::Qt_4_6); //QString currentFileName = fileName.right(fileName.size() - fileName.lastIndexOf('/')-1); //fileName.lastIndexOf('/')返回的是从首字符开始 到最后一个 / 的位数 //fileName.right(8) 意思就是 从路径右面开始 到第八位数的字符串 sendOut << qint64(0)<<qint8(0)<<qint64(0)<<msg; //依次写入总大小信息空间,发送类型信息空间 totalBytes += outBlock.size(); //这里的总大小是消息大小消息+类型信息的总和 sendOut.device()->seek(0); //回到字节流起始位置 msgtype = 2; sendOut<<totalBytes<<msgtype<<qint64((outBlock.size() - sizeof(qint64)*2-sizeof(qint8))); //totalBytes是文件总大小,即两个quint64的大小+文件名+文件实际内容的大小 //qint64((outBlock.size() - sizeof(qint64)*2))得到的是文件名大小 //为了保证在客户端能接收到完整的文件,我们都在数据流的最开始写入完整文件的大小信息, //这样客户端就可以根据大小信息来判断是否接受到了完整的文件。而在服务器端,我们在发送数据时就要首先发送实际文件的大小信息, //但是,文件的大小一开始是无法预知的,所以我们先使用了out<<(quint16) 0;在block的开始添加了一个quint16大小的空间, //也就是两字节的空间,它用于后面放置文件的大小信息。然后out<<tr(“hello Tcp!!!”);输入实际的文件,这里是字符串。 //当文件输入完成后我们在使用out.device()->seek(0);返回到block的开始,加入实际的文件大小信息,也就是后面的代码, //它是实际文件的大小:out<<(quint16) (block.size() – sizeof(quint16)); tcpClient->write(outBlock); //发送完头数据后剩余数据的大小,即文件实际内容的大小 // this->stateLabel->setText(QString::fromLocal8Bit("已连接")); outBlock.resize(0); qDebug()<<"#####totalBytes"<<totalBytes; this->stateLabel->setText(this->msgLineEdit->text()+" is Send"); tcpClient->close(); } }
void MyServer::makeSomeChats(QVector<chatMes> chatVec,qint8 onetype, qint8 type) { bufBlock.resize(0); QDataStream in(&bufBlock,QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_5_0); in<<qint32(0)<<onetype<<type; if (type == respondType::chat) { in<<qint8(chatVec.count()); for (int i=0;i<chatVec.count();i++) { in<<chatVec[i].fromAccount <<chatVec[i].type; if (chatVec[i].type == queryType::textChat ) { in<<chatVec[i].content; } in<<chatVec[i].time; } } in.device()->seek(0); in<<qint32(bufBlock.size() - sizeof(qint32)); }
static QString formatRegister(quint64 v, int size, RegisterFormat format, bool forEdit) { QString result; if (format == HexadecimalFormat) { result = QString::number(v, 16); result.prepend(QString(2*size - result.size(), '0')); } else if (format == DecimalFormat) { result = QString::number(v, 10); result.prepend(QString(2*size - result.size(), ' ')); } else if (format == SignedDecimalFormat) { qint64 sv; if (size >= 8) sv = qint64(v); else if (size >= 4) sv = qint32(v); else if (size >= 2) sv = qint16(v); else sv = qint8(v); result = QString::number(sv, 10); result.prepend(QString(2*size - result.size(), ' ')); } else if (format == CharacterFormat) { bool spacesOnly = true; if (v >= 32 && v < 127) { spacesOnly = false; if (!forEdit) result += '\''; result += char(v); if (!forEdit) result += '\''; } else { result += " "; } if (spacesOnly && forEdit) result.clear(); else result.prepend(QString(2*size - result.size(), ' ')); } return result; }
void WorldSession::SendUpdateObject() { Character* character = GetCharacter(); if (!character) return; WorldPacket data(SMSG_UPDATE_OBJECT); data << quint8(0); data << quint8(1); data << quint8(0); data << character->GetGuid(); data.StartBlock<quint16>(); { data << quint8(7); data << character->GetGuid(); data << quint8(0); data << GetAccountInfos().id; data.WriteString(character->GetName(), true); data << character->GetBreed(); data << character->GetPositionX(); data << character->GetPositionY(); data << character->GetPositionZ(); data << character->GetInstanceId(); data << character->GetDirection(); // *** Skin data << character->GetGender(); data << character->GetSkinColor(); data << character->GetHairColor(); data << character->GetPupilColor(); data << character->GetSkinColorFactor(); data << character->GetHairColorFactor(); data << character->GetClothIndex(); data << character->GetFaceIndex(); data << qint16(-1); // Titles // PUBLIC_CHARACTERISTICS data << quint16(0); // size // FIGHT_PROPERTIES data << quint8(0); // hasProperties // FIGHT data << qint32(-1); // currentFightId data << quint8(0); // isKo data << quint8(0); // isDead data << quint8(0); // isSummonned data << quint8(0); // isFleeing data << qint8(-1); // obstacleId data << quint8(0); // hasSummon // EQUIPMENT_APPEARANCE data << quint16(0); // Views size // RUNNING_EFFECTS data << quint8(0); // hasInFightData data << quint8(0); // hasOutFightData // CURRENT_MOVEMENT_PATH data << quint8(0); // hasCurrentPath // WORLD_PROPERTIES data << quint8(0); // hasProperties // GROUP data << quint64(0); // partyId // TEMPLATE data << quint16(0); // sightRadius data << quint16(0); // aggroRadius // COLLECT data << quint16(0); // unavailableActions size // OCCUPATION data << quint8(0); // hasOccupation // XP data << character->GetXP(); // XP_CHARACTERISTICS data << character->GetXPFreePoints(); data << quint16(0); // xpBonusPoints size data << quint16(0); // characteristicBonusPoints size data << character->GetXPGauge(); // Should be named WakfuGauge... // CITIZEN_POINT data << quint16(0); // nationCitizenScores data << quint16(0); // offendedNations // GUILD_REMOTE_INFO data << character->GetGuildId(); data << quint64(0); // Blazon data << quint16(0); // Level data << quint16(0); // GuildName // NATION_ID data << quint32(0); // NationId // NATION_SYNCHRO data << quint64(0); // rank data << quint64(0); // jobs data << quint64(0); // vote data << quint8(0); // governmentOpinion data << quint8(0); // isCandidate // SOCIAL_STATES data << quint8(0); // afkState data << quint8(0); // dndState // PET data << quint8(0); // hasPet // ACCOUNT_INFORMATION_REMOTE data << quint32(0); // subscriptionLevel data << quint16(0); // additionalRights size // COMPANION_CONTROLLER_ID data << quint64(0); // controllerId data << quint64(0); // companionId } data.EndBlock<quint16>(); SendPacket(data); }
void U2Bits::writeInt32(uchar* bits, int pos, qint32 val) { writeInt8(bits, pos + 24, qint8(val)); writeInt8(bits, pos + 16, qint8(val >> 8)); writeInt8(bits, pos + 8, qint8(val >> 16)); writeInt8(bits, pos, qint8(val >> 24)); }
void Base::writeEnd(QDataStream &stream) const { stream << qint8(FRAME_END); stream.device()->waitForBytesWritten(1000); }
void OnActive(Character* character, InteractiveElementType /*type*/) { // Seuelement une instance du script ou bien ? Du coup va poser des problèmes // si plusieurs joueurs en même temps ? Du coup gérer la création de nouvelles instances de scripts ? m_char = character; // Envoie comme quoi l'élémentId n'est plus "usable" (différence avec le paquet de spawn 200) WorldPacket data(SMSG_INTERACTIVE_ELEMENT_UPDATE); data << quint64(20114); // Instance ElementId data.StartBlock<quint16>(); { data << quint8(1); // BlockCount data << quint8(2); // blockId data << quint32(6); // offset data << quint8(2); // BlockId data << quint16(1); // ? data << quint8(1); // isVisible data << quint8(0); // isUsable data << quint8(0); // ? data << quint8(0); // ? data << quint8(0); // ? data << quint32(0); // ? } data.EndBlock<quint16>(); character->GetSession()->SendPacket(data); // Spawn Wapin WorldPacket data2(SMSG_UPDATE_OBJECT); data2 << quint8(0); data2 << quint8(1); data2 << quint8(1); data2 << qint64(-1706442045669898); data2.StartBlock<quint16>(); { data2 << quint8(7); // GUID data2 << qint64(-1706442045669898); // IDENTITY data2 << quint8(1); data2 << qint64(-1); // NAME data2 << quint16(0); // BREED data2 << quint16(2644); // POSITION data2 << qint32(0); // X data2 << qint32(-17); // Y data2 << qint16(0); // Z data2 << quint16(-1); // InstanceId data2 << quint8(3); // Direction // APPEARANCE data2 << quint8(1); // Show // PUBLIC_CHARACTERISTICS data2 << quint16(1); // Level data2 << quint16(0); // States size // FIGHT_PROPERTIES data2 << quint8(0); // hasProperties // FIGHT data2 << qint32(-1); // currentFightId data2 << quint8(0); // isKo data2 << quint8(0); // isDead data2 << quint8(0); // isSummoned data2 << quint8(0); // isFleeing data2 << qint8(-1); // obstacleId data2 << quint8(0); // hasSummon // EQUIPMENT_APPEARANCE data2 << quint8(0); // size // RUNNING_EFFECTS data2 << quint8(1); // hasInFightData data2 << quint16(1); // data size data2 << quint8(13); // data data2 << quint8(1); // hasOutFightData data2 << quint16(0); // size // CURRENT_MOVEMENT_PATH data2 << quint8(0); // hasCurrentPath // WORLD_PROPERTIES data2 << quint8(0); // hasProperties // GROUP data2 << quint64(79645873605204); // PartyId data2 << quint16(1); // Members size data2 << qint16(-1); // breedId data2 << qint16(-1); // Level // TEMPLATE data2 << quint16(0); // sightRadius data2 << quint16(0); // aggroRadius // COLLECT data2 << quint16(0); // OCCUPATION data2 << quint8(0); // XP data2 << quint64(0); // XP_CHARACTERISTICS data2 << quint16(0); data2 << quint16(0); //data2 << quint16(0); //data2 << quint32(0); // Pourquoi sniff size 110 et la on est déjà à 117 ?? } data2.EndBlock<quint16>(); character->GetSession()->SendPacket(data2); // Activation du script (mouvement de la fenêtre entre autre) // Root aussi le joueur ? WorldPacket data3(SMSG_SCENARIO_SCRIPT); data3 << quint8(0); // Event data3 << quint32(12603); // Function data3 << quint32(1611); // ScenarioId data3 << quint8(1); // Long size? data3 << qint64(-1706442045669898); // Param character->GetSession()->SendPacket(data3); // Spawn Kano WorldPacket data4(SMSG_UPDATE_OBJECT); data4 << quint8(0); data4 << quint8(1); data4 << quint8(1); data4 << qint64(-1706442045669878); data4.StartBlock<quint16>(); { data4 << quint8(7); // GUID data4 << qint64(-1706442045669878); // IDENTITY data4 << quint8(1); data4 << qint64(-1); // NAME data4 << quint16(0); // BREED data4 << quint16(2694); // POSITION data4 << qint32(0); // X data4 << qint32(-21); // Y data4 << qint16(3); // Z data4 << quint16(-1); // InstanceId data4 << quint8(3); // Direction // APPEARANCE data4 << quint8(1); // Show // PUBLIC_CHARACTERISTICS data4 << quint16(100); // Level data4 << quint16(0); // States size // FIGHT_PROPERTIES data4 << quint8(0); // hasProperties // FIGHT data4 << qint32(-1); // currentFightId data4 << quint8(0); // isKo data4 << quint8(0); // isDead data4 << quint8(0); // isSummoned data4 << quint8(0); // isFleeing data4 << qint8(-1); // obstacleId data4 << quint8(0); // hasSummon // EQUIPMENT_APPEARANCE data4 << quint8(0); // size // RUNNING_EFFECTS should be wrong data4 << quint8(1); // hasInFightData data4 << quint16(1); // data size data4 << quint8(13); // data data4 << quint8(1); // hasOutFightData data4 << quint16(0); // size // CURRENT_MOVEMENT_PATH data4 << quint8(0); // hasCurrentPath // WORLD_PROPERTIES data4 << quint8(0); // hasProperties // GROUP data4 << quint64(79645873605204); // PartyId data4 << quint16(1); // Members size data4 << qint16(-1); // breedId data4 << qint16(-1); // Level // TEMPLATE data4 << quint16(0); // sightRadius data4 << quint16(0); // aggroRadius // COLLECT data4 << quint16(0); // OCCUPATION data4 << quint8(0); // XP data4 << quint64(0); // XP_CHARACTERISTICS data4 << quint16(0); data4 << quint16(0); //data4 << quint16(0); //data4 << quint32(0); // Pourquoi sniff size 110 et la on est déjà à 117 ?? } data4.EndBlock<quint16>(); character->GetSession()->SendPacket(data4); // Texte : "Hé toi le nouveau" etc. WorldPacket data5(SMSG_SCENARIO_SCRIPT); data5 << quint8(0); // Event data5 << quint32(12687); // Function data5 << quint32(1611); // ScenarioId data5 << quint8(1); // Params size? data5 << qint64(-1706442045669878); // Param character->GetSession()->SendPacket(data5); // Flèche sur le wapin WorldPacket data6(SMSG_SCENARIO_SCRIPT); data6 << quint8(0); // Event data6 << quint32(12691); // Function data6 << quint32(1611); // ScenarioId data6 << quint8(1); // Long size? data6 << qint64(-1706442045669898); // Param character->GetSession()->SendPacket(data6); m_spawned = true; }