//@brief 组建 S_S pk请求包: for 怪物 //@lrpki 返回的组建结果 //@return 0 成功 非0 失败 int PKSvc::MakeSSPkgForMonster( const ArchvPosition &posPKOrigin, Monster &monster, List<ArchvRolePKInfo> &lrpki,Byte num) { ArchvRolePKInfo pkInfo; ArchvAvatarDescBrief adb; //List<ArchvAvatarDescBrief> ladb; List<UInt32> lrid; ArchvSkill skill; int iRet = 0; //赋值 pkInfo.controlID = monster.ID(); pkInfo.roleID = monster.ID(); pkInfo.level = monster.Level();//没有 pkInfo.opposition = 4; pkInfo.creatureFlag = 2; pkInfo.creatureType = monster.Type(); pkInfo.maxHP = monster.MaxHp(); pkInfo.maxMP = monster.MaxMp(); pkInfo.hp = monster.Hp(); pkInfo.mp = monster.Mp(); pkInfo.moveSpeed = monster.MoveSpeed(); //pk坐标处理 // 对超出pk地图范围的坐标进行调整 if(num%2==0) pkInfo.currPosY = posPKOrigin.Y+1; else pkInfo.currPosY = posPKOrigin.Y; pkInfo.currPosX = posPKOrigin.X; LOG(LOG_DEBUG,__FILE__,__LINE__,"----------->>>>roleID [%d], currPosX x[%d],y[%d] ", monster.ID(), pkInfo.currPosX, pkInfo.currPosY ); pkInfo.direct = monster.Direct(); pkInfo.attackPowerHigh = monster.AttackPowerHigh(); pkInfo.attackPowerLow = monster.AttackPowerLow(); pkInfo.attackArea = monster.AttackScope(); pkInfo.attackSpeed = monster.AttackSpeed(); pkInfo.attackDisplayTime = 2; pkInfo.attackBulletSpeed = monster.BulletSpeed(); pkInfo.hitRate = monster.HitRate(); pkInfo.dodgeRate = monster.DodgeRate(); pkInfo.defense = monster.Defence(); pkInfo.CritRate=monster.CritRate(); pkInfo.mDefense = monster.MDefence(); // LOG(LOG_ERROR,__FILE__,__LINE__,"PKRoleID:::: %d contronID :::%d ---------" , pkInfo.roleID,pkInfo.controlID); lrpki.push_back(pkInfo); if(num>1) { int pp=-1; for(int i=1;i<num;i++) { pp=-1*pp; pkInfo.controlID=monster.ID()+i; pkInfo.roleID=monster.ID()+i; pkInfo.currPosX = posPKOrigin.X; // LOG(LOG_ERROR,__FILE__,__LINE__,"PKRoleID:::: %d contronID :::%d ---------" , pkInfo.roleID,pkInfo.controlID); pkInfo.currPosY = ((pkInfo.currPosY)+2*pp*i); lrpki.push_back(pkInfo); } } return 0; }