public void createMonsterRange(String mapId, String monsterId, int x, int y, int amount, int range) { CMonsterObject data = Program.objectsData[monsterId] as CMonsterObject; for (int i = 0; i < amount; i++) { CMonsterObject monster = new CMonsterObject(); monster.ObjectType = CObjectType.MONSTER; monster.ObjectId = System.Guid.NewGuid().ToString(); monster.Level = data.Level; monster.CharacterName = data.CharacterName; monster.ResourceId = data.ResourceId; monster.Action = CAction.STOP; monster.Direction = CDirection.RandomDirection(); Point pos = randomPointInCircle(x, y, range); monster.PosX = pos.x; monster.PosY = pos.y; monster.Speed = data.Speed; monster.HealthMax = data.HealthMax; monster.Health = data.Health; monster.ManaMax = data.ManaMax; monster.Mana = data.Mana; monster.AttackRange = data.AttackRange; monster.AttackSpeed = data.AttackSpeed; Program.objectList.Add(monster); Console.WriteLine("创建角色 " + monsterId + ",Guid:" + monster.ObjectId + ",X:" + monster.PosX + ",Y:" + monster.PosY); } }
public void registerMonsterData(String monsterId, String name, int level, String resourceId, int speed, int health, int mana, int attackRange, float attackSpeed, Boolean passitiveMonster = false) { CMonsterObject monster = new CMonsterObject(); monster.ObjectType = CObjectType.MONSTER; monster.Level = level; monster.CharacterName = name; monster.ResourceId = resourceId; monster.Speed = speed; monster.HealthMax = health; monster.Health = health; monster.ManaMax = mana; monster.Mana = mana; monster.AttackRange = attackRange; monster.AttackSpeed = attackSpeed; monster.PassitiveMonster = passitiveMonster; Program.objectsData.Add(monsterId, monster); }
public static void CallAddObject(string strIdent) { try { Game game = Game.Instance; if (game == null || game.mGameClient == null) { return; } IGameSceneObj sceneObj = game.mGameClient.GetSceneObj(strIdent); if (sceneObj == null) { return; } IObject cObj = null; int type = 0; if (!sceneObj.QueryPropInt("ObjectType", ref type)) { LogSystem.Log("could not find type : ", strIdent); return; } string strModel = string.Empty; if (!sceneObj.QueryPropString("ResourcePath", ref strModel)) { LogSystem.Log("could not find ResourcePath : ", strIdent); return; } ObjectType ObjType = (ObjectType)type; switch (ObjType) { case ObjectType.ObjectType_Player: if (game.mGameClient.IsPlayer(strIdent)) { cObj = new CRoleObject(); ObjectManager.mRole = cObj as CRoleObject; } else { cObj = new CPlayerObject(); } break; case ObjectType.ObjectType_Npc: cObj = new CNpcObject(); break; case ObjectType.ObjectType_Monster: cObj = new CMonsterObject(); break; case ObjectType.ObjectType_Soldier: case ObjectType.ObjectType_Creeps: break; case ObjectType.ObjectType_Born: break; } if (cObj != null) { cObj.mObjectType = ObjType; cObj.mGameSceneObj = sceneObj; cObj.mObjectRes = strModel; cObj.mStrIdent = strIdent; cObj.OnAddObject(); ObjectManager.AddObject(strIdent, cObj); if (cObj is CRoleObject) { //GUIManager.CacheView<CharacterPanel>(); //GUIManager.CacheView<PlayerMainViewPanel>(); //GUIManager.CacheView<PlayerControlPanel>(); //GUIManager.CacheView<PlayerStatePanel>(); //GUIManager.CacheView<PlayerMapControlPanel>(); //GUIManager.CacheView<MainChatPanel>(); // 添加到主角的AOI中 } else { RangeTools.MotifyObjectAoi(mRole, cObj); } } } catch (System.Exception ex) { LogSystem.LogError("on_add_object catch error", ex.ToString()); } }
static void requestObjectList(byte[] data, int recv, Socket socket) { String objectId = ""; int startX = int.MaxValue; int startY = int.MaxValue; int width = int.MaxValue; int height = int.MaxValue; for (int i = 1; i < recv;) { int length = BitConverter.ToInt32(new byte[] { data[i + 3], data[i + 2], data[i + 1], data[i] }, 0); int type = data[i + 4]; switch (type) { case TYPE_INT: byte[] intNumber = new byte[] { data[i + 8], data[i + 7], data[i + 6], data[i + 5] }; if (startX == int.MaxValue) { startX = BitConverter.ToInt32(intNumber, 0); } else if (startY == int.MaxValue) { startY = BitConverter.ToInt32(intNumber, 0); } else if (width == int.MaxValue) { width = BitConverter.ToInt32(intNumber, 0); } else if (height == int.MaxValue) { height = BitConverter.ToInt32(intNumber, 0); } break; case TYPE_STRING: objectId = Encoding.UTF8.GetString(data, i + 5, length); break; } i += (length + 5); } foreach (CGameObject o in objectList) { if (o.PosX > startX && o.PosX < startX + width && o.PosY > startY && o.PosY < startY + height && o.ObjectId != objectId) { CServerPackage package = new CServerPackage(); package.success = ACK_CONFIRM; package.controller = CONTROLLER_INFO; package.action = ACTION_CAMERAVIEW_OBJECT_LIST; if (o.ObjectType == CObjectType.PLAYER && o is CCharacterObject) { CCharacterObject player = o as CCharacterObject; package.param.Add(new object[] { player.ObjectId.Length, player.ObjectId }); package.param.Add(new object[] { 4, player.Level }); package.param.Add(new object[] { Encoding.UTF8.GetBytes(player.CharacterName).Length, player.CharacterName }); package.param.Add(new object[] { player.ResourceId.Length, player.ResourceId }); package.param.Add(new object[] { 4, player.Direction }); package.param.Add(new object[] { 4, player.PosX }); package.param.Add(new object[] { 4, player.PosY }); package.param.Add(new object[] { 4, player.Speed }); package.param.Add(new object[] { 4, player.HealthMax }); package.param.Add(new object[] { 4, player.Health }); package.param.Add(new object[] { 4, player.ManaMax }); package.param.Add(new object[] { 4, player.Mana }); package.param.Add(new object[] { 4, player.EnergyMax }); package.param.Add(new object[] { 4, player.Energy }); package.param.Add(new object[] { 4, player.AttackRange }); package.param.Add(new object[] { 4, player.AttackSpeed }); package.param.Add(new object[] { 4, player.Action }); package.param.Add(new object[] { 4, player.TargetX }); package.param.Add(new object[] { 4, player.TargetY }); } else if (o.ObjectType == CObjectType.MONSTER && o is CMonsterObject) { CMonsterObject monster = o as CMonsterObject; package.param.Add(new object[] { monster.ObjectId.Length, monster.ObjectId }); package.param.Add(new object[] { 4, monster.Level }); package.param.Add(new object[] { Encoding.UTF8.GetBytes(monster.CharacterName).Length, monster.CharacterName }); package.param.Add(new object[] { monster.ResourceId.Length, monster.ResourceId }); package.param.Add(new object[] { 4, monster.Direction }); package.param.Add(new object[] { 4, monster.PosX }); package.param.Add(new object[] { 4, monster.PosY }); package.param.Add(new object[] { 4, monster.Speed }); package.param.Add(new object[] { 4, monster.HealthMax }); package.param.Add(new object[] { 4, monster.Health }); package.param.Add(new object[] { 4, monster.ManaMax }); package.param.Add(new object[] { 4, monster.Mana }); package.param.Add(new object[] { 4, 0 }); package.param.Add(new object[] { 4, 0 }); package.param.Add(new object[] { 4, monster.AttackRange }); package.param.Add(new object[] { 4, monster.AttackSpeed }); package.param.Add(new object[] { 4, monster.PassitiveMonster }); package.param.Add(new object[] { 4, monster.Action }); package.param.Add(new object[] { 4, monster.TargetX }); package.param.Add(new object[] { 4, monster.TargetY }); } sendPackage(socket, package); } } /* * if (other_posX > startX && other_posX < startX + width && other_posY > startY && other_posY < startY + height) * { * CServerPackage package = new CServerPackage(); * package.success = ACK_CONFIRM; * package.controller = CONTROLLER_INFO; * package.action = ACTION_CAMERAVIEW_OBJECT_LIST; * * package.param.Add(new object[] { otherObjectId.Length, otherObjectId }); * package.param.Add(new object[] { otherResourceId.Length, otherResourceId }); * package.param.Add(new object[] { Encoding.UTF8.GetBytes(otherPlayerName).Length, otherPlayerName }); * package.param.Add(new object[] { 4, other_posX }); * package.param.Add(new object[] { 4, other_posY }); * package.param.Add(new object[] { 4, other_speed }); * package.param.Add(new object[] { 4, action1 }); * package.param.Add(new object[] { 4, other_targetX }); * package.param.Add(new object[] { 4, other_targetY }); * * sendPackage(socket, package); * //Console.WriteLine("Found a player!"); * * CServerPackage package1 = new CServerPackage(); * package1.success = ACK_CONFIRM; * package1.controller = CONTROLLER_INFO; * package1.action = ACTION_CAMERAVIEW_OBJECT_LIST; * * package1.param.Add(new object[] { other1ObjectId.Length, other1ObjectId }); * package1.param.Add(new object[] { other1ResourceId.Length, other1ResourceId }); * package1.param.Add(new object[] { Encoding.UTF8.GetBytes(other1PlayerName).Length, other1PlayerName }); * package1.param.Add(new object[] { 4, other1_posX }); * package1.param.Add(new object[] { 4, other1_posY }); * package1.param.Add(new object[] { 4, other1_speed }); * package1.param.Add(new object[] { 4, action2 }); * package1.param.Add(new object[] { 4, other1_targetX }); * package1.param.Add(new object[] { 4, other1_targetY }); * * sendPackage(socket, package1); * //Console.WriteLine("Found a player!"); * } */ //Console.WriteLine("Request Rectangle: x = " + startX.ToString() + ", y = " + startY.ToString() + ", width = " + width.ToString() + ", height = " + height.ToString()); }
public void InitMonster(List <CloneSceneProperty.CloneSceneMonsterInfo> list) { if (list == null) { return; } int count = list.Count; if (count < 1) { return; } //GameObject monsterParent = NGUITools.AddChild(gameObject); //monsterParent.transform.localPosition = Vector3.zero; //monsterParent.name = "Monsters"; for (int i = 0; i < count; ++i) { CloneSceneProperty.CloneSceneMonsterInfo csm = list[i]; if (csm == null) { continue; } int monsterId = csm.mMonsterId; Vector3 postion = csm.mMonsterPosition; float rotation = csm.mMonsterRotationY; float scale = csm.mMonsterScale; if (scale.Equals(0.0f)) { scale = 1.0f; } CMonsterObject cObj = new CMonsterObject(); GameObject go = ResourceManager.Instance.GetMonsterPrefab(monsterId.ToString()); if (go == null) { LogSystem.LogError("GetMonsterPrefab Failed, monsterId = " + monsterId); continue; } ++mIndex; cObj.mObjId = monsterId; cObj.mIndex = mIndex; go.name = monsterId.ToString(); //go.transform.parent = monsterParent.transform; go.transform.position = postion; go.transform.rotation = Quaternion.Euler(0.0f, rotation, 0.0f); go.transform.localScale = new Vector3(scale, scale, scale); //ui GameObject uiPrefab = ResourceManager.Instance.GetUIPrefab("UMonsterBloodUI"); Vector2 position2 = Camera.main.WorldToScreenPoint(postion); uiPrefab.transform.position = position2; cObj.mGameObject = go; cObj.mTransform = go.transform; cObj.mPosition = postion; cObj.AddComponent <AnimatorComponent>(); cObj.AddComponent <RestoreComponent>(); cObj.AddComponent <InjuredComponent>(); cObj.AddComponent <FindingPathComponent>(); cObj.AddComponent <MoveComponent>(); cObj.AddComponent <AttackComponent>(); cObj.AddComponent <HatredComponent>(); cObj.AddComponent <PursuitComponent>(); cObj.AddComponent <SkillComponent>(); cObj.AddComponent <EffectComponent>(); RangeTools.MotifyObjectAoi(ObjectManager.mRole, cObj); ObjectManager.mObjectsList.Add(cObj); } }