📄 vampire_backup.cpp
字号:
}//----------------------------------------------------------------------// getSkillInfo//----------------------------------------------------------------------void Vampire::sendVampireSkillInfo() throw(){ __BEGIN_TRY __BEGIN_DEBUG VampireSkillInfo* pVampireSkillInfo = new VampireSkillInfo(); BYTE SkillCount = 0; hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.begin(); for (; itr != m_SkillSlot.end(); itr++) { VampireSkillSlot* pVampireSkillSlot = itr->second; Assert(pVampireSkillSlot != NULL); // AttackMelee 殿狼 扁夯 傍拜 扁贱 沥焊绰 焊郴林瘤 臼酒具 茄促. if (pVampireSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT) { SubVampireSkillInfo* pSubVampireSkillInfo = new SubVampireSkillInfo(); pSubVampireSkillInfo->setSkillType(pVampireSkillSlot->getSkillType()); pSubVampireSkillInfo->setSkillTurn(pVampireSkillSlot->getInterval()); pSubVampireSkillInfo->setCastingTime(pVampireSkillSlot->getCastingTime()); pVampireSkillInfo->addListElement(pSubVampireSkillInfo); SkillCount++; } } GCSkillInfo gcSkillInfo; gcSkillInfo.setPCType(PC_VAMPIRE); SkillType_t LearnSkillType = g_pSkillInfoManager->getSkillTypeByLevel(SKILL_DOMAIN_VAMPIRE , m_Level); // 泅犁 饭骇俊辑 硅匡 荐 乐绰 扁贱捞 乐绰瘤 夯促. if (LearnSkillType != 0) { // 硅匡 荐 乐绰 扁贱捞 乐绊 硅快瘤 臼篮 惑怕扼搁 硅快扼绊 舅妨霖促. if (hasSkill(LearnSkillType) == NULL) { pVampireSkillInfo->setLearnNewSkill(true); } } pVampireSkillInfo->setListNum(SkillCount); gcSkillInfo.addListElement(pVampireSkillInfo); m_pPlayer->sendPacket(&gcSkillInfo); __END_DEBUG __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 扁鸥 窃荐////////////////////////////////////////////////////////////////////////////////////void Vampire::setGoldEx(Gold_t gold) throw(){ __BEGIN_TRY setGold(gold); /* StringStream sql; sql << "Gold = " << (int)m_Gold; tinysave(sql.toString()); */ // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "Gold=%ld", m_Gold); tinysave(pField); __END_CATCH}void Vampire::saveSilverDamage(Silver_t damage) throw(){ __BEGIN_TRY setSilverDamage(damage); /* StringStream sql; sql << "SilverDamage = " << (int)m_SilverDamage; tinysave(sql.toString()); */ // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "SilverDamage=%d", m_SilverDamage); tinysave(pField); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 家蜡 酒捞袍 hearbeat//////////////////////////////////////////////////////////////////////////////void Vampire::heartbeat(const Timeval& currentTime) throw(){ __BEGIN_TRY __BEGIN_DEBUG // 林扁利栏肺 HP甫 雀汗矫难霖促. if (m_HPRegenTime < currentTime) { Timeval diffTime = timediff(currentTime, m_HPRegenTime); if (diffTime.tv_sec > 0) { // 1. 混酒乐绰 惑怕捞绊 (泅犁 HP啊 0 檬苞) // 2. 内付 捞棋飘啊 嘿绢乐瘤 臼促搁. // 3. Mephisto 捞棋飘啊 嘿绢乐瘤 臼促搁. if (isAlive() && !isFlag(Effect::EFFECT_CLASS_COMA) && !isFlag(Effect::EFFECT_CLASS_MEPHISTO)) { // by sigi. 2002.6.19 bool bInCasket = isFlag(Effect::EFFECT_CLASS_CASKET); HP_t CurHP = m_HP[ATTR_CURRENT]; HP_t NewHP = 0; // 包 加俊 乐绰 版快绰 // SilverDamage甫 刚历 摹丰茄促. if (bInCasket && m_SilverDamage > 0) { NewHP = 4 * diffTime.tv_sec; int remainSilver = (int)m_SilverDamage - (int)NewHP; // SilverDamage甫 促 摹丰窍绊 HP档 摹丰窍绰 版快 if (remainSilver < 0) { m_SilverDamage = 0; NewHP = -remainSilver; HP_t MaxHP = m_HP[ATTR_MAX]; m_HP[ATTR_CURRENT] = min((int)MaxHP, (int)(CurHP + NewHP)); } // SilverDamage父 皑家矫虐绰 版快 else { m_SilverDamage = remainSilver; } } else { HP_t MaxHP = m_HP[ATTR_MAX] - getSilverDamage(); // Normal : 2 // Burrow(Hide) : 4 // Casket : 6 // Wolf : 2 (老馆 惑怕肺 埃林) // Bat : 0 if (isFlag(Effect::EFFECT_CLASS_HIDE)) { NewHP = 4 * diffTime.tv_sec; } else if (isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT)) { NewHP = 0; } // by sigi. 2002.6.19 else if (isFlag(Effect::EFFECT_CLASS_CASKET)) { NewHP = 4 * diffTime.tv_sec; } else { NewHP = 2 * diffTime.tv_sec; } m_HP[ATTR_CURRENT] = min((int)MaxHP, (int)(CurHP + NewHP)); } } m_HPRegenTime.tv_sec = m_HPRegenTime.tv_sec + diffTime.tv_sec; m_HPRegenTime.tv_usec = m_HPRegenTime.tv_usec; } } /* list<Item*> ItemList; VolumeHeight_t Height = m_pInventory->getHeight(); VolumeWidth_t Width = m_pInventory->getWidth(); for (int j = 0; j < Height; j++) { for (int i = 0 ; i < Width ; i ++) { if (m_pInventory->hasItem(i, j)) { Item* pItem = m_pInventory->getItem(i , j); VolumeWidth_t ItemWidth = pItem->getVolumeWidth(); list<Item*>::iterator itr = find(ItemList.begin() , ItemList.end() , pItem); if (itr == ItemList.end()) { ItemList.push_back(pItem); //酒捞袍 农扁狼 促澜 困摹 何磐 八祸窍扁 困窃. i = i + ItemWidth - 1; } } } } for (int i = 0; i < VAMPIRE_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) ItemList.push_back(pItem); } Item* pSlotItem = m_pExtraInventorySlot->getItem(); if (pSlotItem != NULL) { ItemList.push_back(pSlotItem); } for (list<Item*>::iterator itr = ItemList.begin(); itr != ItemList.end(); itr++) { Item* pItem = *itr; pItem->getEffectManager()->heartbeat(); } */ __END_DEBUG __END_CATCH}void Vampire::getVampireRecord(VAMPIRE_RECORD& record) const throw(){ __BEGIN_TRY record.pSTR[0] = m_STR[0]; record.pSTR[1] = m_STR[1]; record.pSTR[2] = m_STR[2]; record.pDEX[0] = m_DEX[0]; record.pDEX[1] = m_DEX[1]; record.pDEX[2] = m_DEX[2]; record.pINT[0] = m_INT[0]; record.pINT[1] = m_INT[1]; record.pINT[2] = m_INT[2]; record.pHP[0] = m_HP[0]; record.pHP[1] = m_HP[1]; record.pDamage[0] = m_Damage[0]; record.pDamage[1] = m_Damage[1]; record.Defense = m_Defense[0]; record.ToHit = m_ToHit[0]; record.Protection = m_Protection[0]; record.AttackSpeed = m_AttackSpeed[0]; __END_CATCH}void Vampire::setResurrectZoneIDEx(ZoneID_t id) throw(){ __BEGIN_TRY setResurrectZoneID(id); /* StringStream sql; sql << "ResurrectZone = " << (int)id; tinysave(sql.toString()); */ // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "ResurrectZone=%d", id); tinysave(pField); __END_CATCH}void Vampire::saveAlignment(Alignment_t alignment) throw(){ __BEGIN_TRY setAlignment(alignment); /* StringStream sql; sql << "Alignment = " << (int)alignment; tinysave(sql.toString()); */ // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "Alignment=%d", alignment); tinysave(pField); __END_CATCH}//----------------------------------------------------------------------// get debug string//----------------------------------------------------------------------string Vampire::toString () const throw (){ __BEGIN_TRY StringStream msg; msg << "Vampire(" //<< "ObjectID:" << (int)getObjectID() << ",Name:" << m_Name << ",HairColor:" << (int)m_HairColor << ",SkinColor:" << (int)m_SkinColor << ",STR:" << (int)m_STR[ATTR_CURRENT] << "/" << (int)m_STR[ATTR_MAX] << ",DEX:" << (int)m_DEX[ATTR_CURRENT] << "/" << (int)m_DEX[ATTR_MAX] << ",INT:" << (int)m_INT[ATTR_CURRENT] << "/" << (int)m_INT[ATTR_MAX] << ",HP:" << (int)m_HP[ATTR_CURRENT] << "/" << (int)m_HP[ATTR_MAX] << ",Fame:" << (int)m_Fame << ",Exp:" << (int)m_Exp << ",ExpOffset:" << (int)m_ExpOffset << ",Level:" << (int)m_Level << ",Bonus:" << (int)m_Bonus //<< ",InMagics:'" << ??? << "'" << ",Gold:" << (int)m_Gold << ",ZoneID:" << (int)getZoneID() << ",XCoord:" << (int)m_X << ",YCoord:" << (int)m_Y << ",Sight:" << (int)m_Sight << ")"; return msg.toString(); __END_CATCH}void Vampire::saveSkills(void) const throw (Error){ __BEGIN_TRY hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.begin(); for (; itr != m_SkillSlot.end(); itr++) { VampireSkillSlot* pVampireSkillSlot = itr->second; Assert(pVampireSkillSlot != NULL); // 扁夯 傍拜 胶懦捞 酒聪扼搁... if (pVampireSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT) { pVampireSkillSlot->save(m_Name); } } __END_CATCH}IP_t Vampire::getIP(void) const{ Assert(m_pPlayer != NULL); Socket* pSocket = m_pPlayer->getSocket(); Assert(pSocket != NULL); return pSocket->getHostIP();}void Vampire::saveGears(void) const throw (Error){ __BEGIN_TRY // 厘馒窍绊 乐绰 酒捞袍甸阑 历厘茄促. char pField[80]; for (int i=0; i < Vampire::VAMPIRE_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { Durability_t maxDurability = computeMaxDurability(pItem); if (pItem->getDurability() < maxDurability) { //pItem->save(m_Name, STORAGE_GEAR, 0, i, 0); // item历厘 弥利拳. by sigi. 2002.5.13 sprintf(pField, "Durability=%d", pItem->getDurability()); pItem->tinysave(pField); } } } __END_CATCH}void Vampire::saveExps(void) const throw (Error){ __BEGIN_TRY // 胶懦 勤甸矾俊辑 孽府 箭磊甫 临捞扁 困秦辑 10栏肺 唱穿绰 何盒甸篮, // 辑滚 促款捞 登瘤 臼绊, 沥惑利栏肺 肺弊酒眶窍绰 版快俊 // 技捞宏甫 疙矫利栏肺 秦林瘤 臼栏搁 10 捞窍 棵扼埃 何盒篮 朝酒啊 滚府霸 等促. // 弊矾骨肺 咯扁辑 技捞宏甫 秦 霖促. StringStream sql; sql << "UPDATE Vampire SET " << "Alignment = " << m_Alignment << ",Fame = " << m_Fame << ",Exp = " << m_Exp << ",GoalExp = " << m_GoalExp; if (m_SilverDamage != 0) { sql << ",SilverDamage = " << m_SilverDamage; } sql << " WHERE Name = '" << m_Name << "'"; Statement* pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery(sql.toString()); SAFE_DELETE(pStmt); } END_DB(pStmt) __END_CATCH}//----------------------------------------------------------------------// getShapeInfo//----------------------------------------------------------------------// login且锭 贸府甫 弧府窍扁 困秦辑促.//----------------------------------------------------------------------// 老窜 32bit肺 32啊瘤甫 钎泅窍绰吧肺档 面盒窍促绊 夯促.// 攫哩啊? over登搁 bitset阑 结具摆瘤..//// (!) 祸彬篮 index祸蔼捞 酒聪绊 optionType阑 持绢辑 荤侩茄促.// 努扼捞攫飘俊辑 可记栏肺 祸蔼阑 茫酒辑 敬促.//// colors[1]篮 coatColor父 乐扁 锭巩捞促.//----------------------------------------------------------------------void Vampire::getShapeInfo (DWORD& flag, Color_t colors[PCVampireInfo::VAMPIRE_COLOR_MAX]) const// throw (){ __BEGIN_DEBUG Item* pItem; OptionInfo* pOptionInfo; int vampireBit; int vampireColor; // 檬扁拳 flag = 0; //----------------------------------------------------------------- // 汗厘 //----------------------------------------------------------------- pItem = m_pWearItem[WEAR_BODY]; vampireBit = 0; vampireColor = 0; if (pItem!=NULL) { ItemType_t IType = pItem->getItemType(); if (pItem->getOptionType() != 0) { pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType()); colors[vampireColor] = (pOptionInfo==NULL? 377 : pOptionInfo->getColor()); } //colors[vampireColor] = pItem->getOptionType(); //flag |= (getVampireCoatType(IType) << vampireBit); // itemType阑 持绢霖促. flag = IType; } else { colors[vampireColor] = 377; //flag |= (VAMPIRE_COAT_BASIC << vampireBit); // 扁夯 渴 : 巢磊绰 0, 咯磊绰 1 flag = (m_Sex? 0 : 1); } __END_DEBUG}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -