void CAutomateGraphingApp::WriteScriptParameters(PIActionDescriptor descriptor) { // files with system parameters (input) and results (output) PutString(descriptor, keyParameters, m_sData->sParameters); PutString(descriptor, keyResults, m_sData->sResults); // system options if(m_sData->bJpeg) PutBoolean(descriptor, keyJpeg, m_sData->bJpeg); if(m_sData->bPresetStrength) PutBoolean(descriptor, keyPresetStrength, m_sData->bPresetStrength); // range of embedding strengths PutFloat(descriptor, keyStrengthMin, m_sData->dStrengthMin); PutFloat(descriptor, keyStrengthMax, m_sData->dStrengthMax); PutFloat(descriptor, keyStrengthStep, m_sData->dStrengthStep); // range of JPEG compression quality (if requested) if(m_sData->bJpeg) { PutInteger(descriptor, keyJpegMin, m_sData->nJpegMin); PutInteger(descriptor, keyJpegMax, m_sData->nJpegMax); PutInteger(descriptor, keyJpegStep, m_sData->nJpegStep); } // requested outputs PutBoolean(descriptor, keyPrintBER, m_sData->bPrintBER); PutBoolean(descriptor, keyPrintSNR, m_sData->bPrintSNR); PutBoolean(descriptor, keyPrintEstimate, m_sData->bPrintEstimate); PutBoolean(descriptor, keyPrintChiSquare, m_sData->bPrintChiSquare); }
void CopySingles(Everything &ev) { for (unsigned i=0;i<brInt.size();i++) PutInt(brInt[i],ev.GetInt(brInt[i])); for (unsigned i=0;i<brFloat.size();i++) PutFloat(brFloat[i],ev.GetFloat(brFloat[i])); }
void CAutomateEmbeddingApp::WriteScriptParameters(PIActionDescriptor descriptor) { // path for output files PutString(descriptor, keyOutput, m_sData->sOutput); // system options if(m_sData->bJpeg) PutBoolean(descriptor, keyJpeg, m_sData->bJpeg); // range of embedding strengths PutFloat(descriptor, keyStrengthMin, m_sData->dStrengthMin); PutFloat(descriptor, keyStrengthMax, m_sData->dStrengthMax); PutFloat(descriptor, keyStrengthStep, m_sData->dStrengthStep); // range of JPEG compression quality (if requested) if(m_sData->bJpeg) { PutInteger(descriptor, keyJpegMin, m_sData->nJpegMin); PutInteger(descriptor, keyJpegMax, m_sData->nJpegMax); PutInteger(descriptor, keyJpegStep, m_sData->nJpegStep); } }
int PrepExt_CancelUseEvent(char *buffer, int CreatureID) { int wpos = 0; wpos += PutByte(&buffer[wpos], 4); //_handleCreatureEventMsg wpos += PutShort(&buffer[wpos], 0); //size wpos += PutInteger(&buffer[wpos], CreatureID); wpos += PutByte(&buffer[wpos], 11); //creature "used" event wpos += PutStringUTF(&buffer[wpos], ""); wpos += PutFloat(&buffer[wpos], -1.0F); //A delay of -1 will interrupt the action PutShort(&buffer[1], wpos - 3); //size return wpos; }
int PrepExt_SendAdvancedEmote(char *buffer, int creatureID, const char *emoteName, float emoteSpeed, int loop) { int wpos = 0; wpos += PutByte(&buffer[wpos], 100); //_handleModMessage REQUIRES MODDED CLIENT wpos += PutShort(&buffer[wpos], 0); //Reserve for size wpos += PutByte(&buffer[wpos], MODMESSAGE_EVENT_EMOTE); //event for advanced emote wpos += PutInteger(&buffer[wpos], creatureID); wpos += PutStringUTF(&buffer[wpos], emoteName); wpos += PutFloat(&buffer[wpos], emoteSpeed); wpos += PutByte(&buffer[wpos], (loop != 0)); PutShort(&buffer[1], wpos - 3); //Set message size return wpos; }
void WriteCode(int fd) { Word i,j; Word size=LK_VECTOR_Size(&Code); char* code=(char *)LK_VECTOR_GetPtr(&Code,0); Byte opcode=-1; INSTR_InstrCategory instrCat=INSTR_CAT_X; INSTR_OperandType* opType=NULL; int argid=0; debug("Writing 0x%lx bytes of instructions at %lx.\n",size,lseek(fd,0,SEEK_CUR)); for(i=0;i<size;) { j=i; opcode=code[j++]; instrCat=INSTR_instrType(opcode); opType=INSTR_operandTypes(instrCat); argid=-1; LK_FILE_PUT1(fd,opcode); debug("\t%lx:%lx:[%x]%s ",lseek(fd,0,SEEK_CUR)-1,i,opcode,INSTR_instrName(opcode)); do{ argid++; switch(opType[argid]) { case INSTR_P: j++; break; case INSTR_WP: j+=sizeof(Word); break; case INSTR_SEG: debug("SEG %d ",*(Byte*)(code+j)); case INSTR_R: case INSTR_E: case INSTR_N: case INSTR_I1: case INSTR_CE: LK_FILE_PUT1(fd,*(Byte*)(code+j)); j+=sizeof(Byte); break; // case INSTR_I2: // PUT2(*(TwoBytes*)(code+j)); // j+=sizeof(TwoBytes); // break; case INSTR_C: PutConstInd(fd,UnPackConstInd(*(TwoBytes*)(code+j))); j+=sizeof(TwoBytes); break; case INSTR_K: PutKindInd(fd,UnPackKindInd(*(TwoBytes*)(code+j))); j+=sizeof(TwoBytes); break; case INSTR_MT: PutImportTabInd(fd,*(ImportTabInd*)(code+j)); j+=sizeof(ImportTabInd); break; case INSTR_IT: PutImplGoalInd(fd,*(ImplGoalInd*)(code+j)); j+=sizeof(ImplGoalInd); break; case INSTR_HT: PutHashTabInd(fd,*(HashTabInd*)(code+j)); j+=sizeof(HashTabInd); break; case INSTR_BVT: PutBvrTabInd(fd,*(BvrTabInd*)(code+j)); j+=sizeof(BvrTabInd); break; case INSTR_S: PutStringInd(fd,*(StringInd*)(code+j)); j+=sizeof(StringInd); break; case INSTR_L: debug("L(%lx) ",*(CodeInd*)(code+j)); PutCodeInd(fd,*(CodeInd*)(code+j)); j+=sizeof(CodeInd); break; case INSTR_I: LK_FILE_PUT4(fd,*(INT4*)(code+j)); j+=sizeof(INT4); break; case INSTR_F: PutFloat(fd,*(INT4*)(code+j)); j+=sizeof(INT4); break; case INSTR_X: break; default: bad("\nUnknown Operand Type %d\n",opType[argid]); EM_THROW(LK_LinkError); break; /* null instruction */ } } while(opType[argid]!=INSTR_X); debug("\n"); i+=INSTR_instrSize(opcode); } }
int PrepExt_ItemDef(char *SendBuf, ItemDef *item, int ProtocolState) { int WritePos = 0; //_handleItemDefUpdateMsg is [4] for lobby, [71] for play (most common) protocol char message = 71; if(ProtocolState == 0) message = 4; WritePos += PutByte(&SendBuf[WritePos], message); WritePos += PutShort(&SendBuf[WritePos], 0); //Message size WritePos += PutInteger(&SendBuf[WritePos], item->mID); //Fill the item properties WritePos += PutByte(&SendBuf[WritePos], item->mType); WritePos += PutStringUTF(&SendBuf[WritePos], item->mDisplayName.c_str()); WritePos += PutStringUTF(&SendBuf[WritePos], item->mAppearance.c_str()); WritePos += PutStringUTF(&SendBuf[WritePos], item->mIcon.c_str()); WritePos += PutByte(&SendBuf[WritePos], item->mIvType1); WritePos += PutShort(&SendBuf[WritePos], item->mIvMax1); WritePos += PutByte(&SendBuf[WritePos], item->mIvType2); WritePos += PutShort(&SendBuf[WritePos], item->mIvMax2); WritePos += PutStringUTF(&SendBuf[WritePos], item->mSv1.c_str()); if(g_ProtocolVersion < 5) WritePos += PutInteger(&SendBuf[WritePos], item->_mCopper); WritePos += PutShort(&SendBuf[WritePos], item->mContainerSlots); WritePos += PutByte(&SendBuf[WritePos], item->mAutoTitleType); WritePos += PutShort(&SendBuf[WritePos], item->mLevel); WritePos += PutByte(&SendBuf[WritePos], item->mBindingType); WritePos += PutByte(&SendBuf[WritePos], item->mEquipType); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponType); if(item->mWeaponType != 0) { if(g_ProtocolVersion == 7) { WritePos += PutByte(&SendBuf[WritePos], item->mWeaponDamageMin); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponDamageMax); WritePos += PutByte(&SendBuf[WritePos], item->_mSpeed); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponExtraDamangeRating); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponExtraDamageType); } else { WritePos += PutInteger(&SendBuf[WritePos], item->mWeaponDamageMin); WritePos += PutInteger(&SendBuf[WritePos], item->mWeaponDamageMax); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponExtraDamangeRating); WritePos += PutByte(&SendBuf[WritePos], item->mWeaponExtraDamageType); } } WritePos += PutInteger(&SendBuf[WritePos], item->mEquipEffectId); WritePos += PutInteger(&SendBuf[WritePos], item->mUseAbilityId); WritePos += PutInteger(&SendBuf[WritePos], item->mActionAbilityId); WritePos += PutByte(&SendBuf[WritePos], item->mArmorType); if(item->mArmorType != 0) { if(g_ProtocolVersion == 7) { WritePos += PutByte(&SendBuf[WritePos], item->mArmorResistMelee); WritePos += PutByte(&SendBuf[WritePos], item->mArmorResistFire); WritePos += PutByte(&SendBuf[WritePos], item->mArmorResistFrost); WritePos += PutByte(&SendBuf[WritePos], item->mArmorResistMystic); WritePos += PutByte(&SendBuf[WritePos], item->mArmorResistDeath); } else { WritePos += PutInteger(&SendBuf[WritePos], item->mArmorResistMelee); WritePos += PutInteger(&SendBuf[WritePos], item->mArmorResistFire); WritePos += PutInteger(&SendBuf[WritePos], item->mArmorResistFrost); WritePos += PutInteger(&SendBuf[WritePos], item->mArmorResistMystic); WritePos += PutInteger(&SendBuf[WritePos], item->mArmorResistDeath); } } if(g_ProtocolVersion == 7) { WritePos += PutByte(&SendBuf[WritePos], item->mBonusStrength); WritePos += PutByte(&SendBuf[WritePos], item->mBonusDexterity); WritePos += PutByte(&SendBuf[WritePos], item->mBonusConstitution); WritePos += PutByte(&SendBuf[WritePos], item->mBonusPsyche); WritePos += PutByte(&SendBuf[WritePos], item->mBonusSpirit); WritePos += PutByte(&SendBuf[WritePos], item->_mBonusHealth); WritePos += PutByte(&SendBuf[WritePos], item->mBonusWill); } else { WritePos += PutInteger(&SendBuf[WritePos], item->mBonusStrength); WritePos += PutInteger(&SendBuf[WritePos], item->mBonusDexterity); WritePos += PutInteger(&SendBuf[WritePos], item->mBonusConstitution); WritePos += PutInteger(&SendBuf[WritePos], item->mBonusPsyche); WritePos += PutInteger(&SendBuf[WritePos], item->mBonusSpirit); if(g_ProtocolVersion < 32) WritePos += PutInteger(&SendBuf[WritePos], item->_mBonusHealth); WritePos += PutInteger(&SendBuf[WritePos], item->mBonusWill); } if(g_ProtocolVersion >= 4) { WritePos += PutByte(&SendBuf[WritePos], item->isCharm); if(item->isCharm != 0) { WritePos += PutFloat(&SendBuf[WritePos], item->mMeleeHitMod); WritePos += PutFloat(&SendBuf[WritePos], item->mMeleeCritMod); WritePos += PutFloat(&SendBuf[WritePos], item->mMagicHitMod); WritePos += PutFloat(&SendBuf[WritePos], item->mMagicCritMod); WritePos += PutFloat(&SendBuf[WritePos], item->mParryMod); WritePos += PutFloat(&SendBuf[WritePos], item->mBlockMod); WritePos += PutFloat(&SendBuf[WritePos], item->mRunSpeedMod); WritePos += PutFloat(&SendBuf[WritePos], item->mRegenHealthMod); WritePos += PutFloat(&SendBuf[WritePos], item->mAttackSpeedMod); WritePos += PutFloat(&SendBuf[WritePos], item->mCastSpeedMod); WritePos += PutFloat(&SendBuf[WritePos], item->mHealingMod); } } if(g_ProtocolVersion >= 5) { WritePos += PutInteger(&SendBuf[WritePos], item->mValue); WritePos += PutByte(&SendBuf[WritePos], item->mValueType); } bool ItemUpdateDefMsgCraft = false; if(g_ProtocolVersion >= 7) ItemUpdateDefMsgCraft = true; if(ItemUpdateDefMsgCraft == true) { WritePos += PutInteger(&SendBuf[WritePos], item->resultItemId); WritePos += PutInteger(&SendBuf[WritePos], item->keyComponentId); WritePos += PutInteger(&SendBuf[WritePos], item->numberOfItems); for(size_t i = 0; i < item->craftItemDefId.size(); i++) WritePos += PutInteger(&SendBuf[WritePos], item->craftItemDefId[i]); if(item->numberOfItems != item->craftItemDefId.size()) g_Logs.server->error("Crafting material item count mismatch for ID: %v", item->mID); } if(g_ProtocolVersion >= 9) WritePos += PutStringUTF(&SendBuf[WritePos], item->mFlavorText.c_str()); if(g_ProtocolVersion >= 18) WritePos += PutByte(&SendBuf[WritePos], item->mSpecialItemType); if(g_ProtocolVersion >= 30) WritePos += PutByte(&SendBuf[WritePos], item->mOwnershipRestriction); if(g_ProtocolVersion >= 31) { WritePos += PutByte(&SendBuf[WritePos], item->mQualityLevel); WritePos += PutShort(&SendBuf[WritePos], item->mMinUseLevel); } PutShort(&SendBuf[1], WritePos - 3); return WritePos; }
void PutKeysAction::PutPercent(DescriptorKeyID key, float f) { PutFloat(key, f * 100.0f, unitPercent); }