public void ChangeNewFashion(PShopItem item, Creature creature) { PItem newItem = moduleEquip.GetNewPItem(item.itemTypeId, item.itemTypeId); PropItemInfo info = ConfigManager.Get <PropItemInfo>(newItem.itemTypeId); PItem containItem = m_changeFashion.Find((p) => { var _info = p.GetPropItem(); if (!_info) { return(false); } return(_info.itemType == PropType.FashionCloth && info.subType == _info.subType); }); if (containItem != null) { m_changeFashion.Remove(containItem); m_changeFashion.Add(newItem); } else { m_changeFashion.Add(newItem); } CharacterEquip.ChangeCloth(creature, m_changeFashion); changedCloth = true; }
protected override void OnCreateCreatures() { base.OnCreateCreatures(); // Create default player m_player.regenRagePercent = 0.3f; // Regen 30% rage every second moduleAI.AddCreatureToCampDic(m_player); var info = modulePlayer.BuildPlayerInfo(modulePlayer.proto); info.name = Util.GetString(9208); m_enermy = Creature.Create(info, new Vector3_(CombatConfig.spvpStart.y, 0, 0), new Vector3(0, 90, 0), false, "enermy", info.name); m_enermy.FaceTo(player); var es = Module_Equip.SelectRandomEquipments(m_player.gender, m_player.roleProto); m_enermy.avatar = es[0] + "_" + es[1] + "_" + es[2]; m_enermy.avatarBox = m_player.avatarBox; m_enermy.roleProto = m_player.roleProto; moduleAI.AddCreatureToCampDic(m_enermy); CharacterEquip.ChangeCloth(m_enermy, es); m_enermy.maxHealth = (int)(player.attack + player.elementAttack) * 20; m_enermy.health = m_enermy.maxHealth; m_enermy.regenHealthPercent = 0.3; player.AddEventListener(CreatureEvents.DEAD, OnCreatureDead); m_enermy.AddEventListener(CreatureEvents.DEAD, OnCreatureDead); EventManager.AddEventListener(CreatureEvents.Dying, OnCreatureDying); }
/// <summary> /// Create a player creature at position pos and set direction to direction. /// </summary> /// <returns></returns> public Creature CreatePlayer(Vector3 pos, CreatureDirection direction, bool buff = false, bool skill = false) { var node = Level.current.startPos; var info = modulePlayer.BuildPlayerInfo(-1, buff, skill); var player = Creature.Create(info, pos, true, PLAYER_OBJECT_NAME, modulePlayer.name_); player.roleId = modulePlayer.id_; player.roleProto = modulePlayer.proto; player.direction = direction; Util.AddChild(node, player.transform, true); CharacterEquip.ChangeCloth(player, moduleEquip.currentDressClothes); m_playerPosition = player.position; m_playerRotation = player.eulerAngles; m_playerScale = player.localScale; var visible = ChildIsVisible(player.name); player.gameObject.SetActive(visible); if (visible) { Level.SetDOFFocusTarget(player.transform); } return(player); }
protected virtual void OnCreateCreatures() { var info = modulePlayer.BuildPlayerInfo(); m_player = Creature.Create(info, playerStart, new Vector3(0, 90, 0), true, "player", modulePlayer.name_); m_player.roleId = modulePlayer.id_; m_player.roleProto = modulePlayer.proto; CharacterEquip.ChangeCloth(m_player, moduleEquip.currentDressClothes); _SetDOFFocusTarget(m_player.transform); //创建宠物 if (modulePet.FightingPetID <= 0) { return; } var pet = modulePet.FightingPet; if (pet != null) { var show = ConfigManager.Get <ShowCreatureInfo>(pet.ID); if (show == null) { Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", pet.ID); return; } var showData = show.GetDataByIndex(0); var data = showData.data.GetValue <ShowCreatureInfo.SizeAndPos>(0); m_player.pet = PetCreature.Create(m_player, pet, playerStart + data.pos, data.rotation, false, Module_Home.PET_OBJECT_NAME); m_player.pet.localScale *= data.size; m_player.pet.localEulerAngles = data.rotation; } }
private void CreateTeamPlayer() { var members = moduleTeam.members; if (members != null) { for (var i = 0; i < members.Length; ++i) { var pi = members[i]; var info = modulePlayer.BuildPlayerInfo(pi); var isPlayer = pi.roleId == LoadParamTeam.MasterId; var pos = new Vector3_(playerStart.x - i, 0, 0); var p = Creature.Create(info, pos, new Vector3(0, 90, 0), isPlayer, i + ":" + pi.roleId, pi.roleName); p.roleId = pi.roleId; p.roleProto = pi.roleProto; p.teamIndex = i; p.avatar = pi.avatar; p.enableUpdate = false; p.SetCreatureCamp(CreatureCamp.PlayerCamp); if (isPlayer) { m_player = p; moduleBattle.SetPlayerTeamIndex(p.teamIndex); } if (pi.teamLeader > 0) { m_teamLeader = p; } else { m_normalMember = p; } m_teamMembers.Add(p); CharacterEquip.ChangeCloth(p, pi.fashion); if (pi.pet != null && pi.pet.itemTypeId != 0) { var show = ConfigManager.Get <ShowCreatureInfo>(pi.pet.itemTypeId); if (show == null) { Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", pi.pet.itemTypeId); continue; } var showData = show.GetDataByIndex(0); var data = showData.data.GetValue <ShowCreatureInfo.SizeAndPos>(0); p.pet = PetCreature.Create(p, PetInfo.Create(pi.pet), p.position_ + data.pos, p.eulerAngles, false, Module_Home.PET_OBJECT_NAME); p.pet.enableUpdate = false; } } } }
public Creature CreatePlayer(PMatchProcessInfo pi, Vector3 pos, CreatureDirection direction, bool buff = false, bool skill = false) { var node = Level.current.startPos; var info = modulePlayer.BuildPlayerInfo(pi, buff, skill); var creature = Creature.Create(info, pos, false, pi.roleId + ":" + pi.roleName); creature.roleId = pi.roleId; creature.roleProto = pi.roleProto; creature.direction = direction; Util.AddChild(node, creature.transform, true); CharacterEquip.ChangeCloth(creature, pi.fashion); return(creature); }
protected Creature CreateTeamPlayer(PTeamMemberInfo rInfo, Vector3 pos, int index = 0) { if (rInfo == null) { return(null); } var info = modulePlayer.BuildPlayerInfo(rInfo); var isPlayer = rInfo.roleId == LoadParamTeam.MasterId; var p = Creature.Create(info, pos, new Vector3(0, 90, 0), isPlayer, index + ":" + rInfo.roleId, rInfo.roleName); p.roleId = rInfo.roleId; p.roleProto = rInfo.roleProto; p.teamIndex = index; p.avatar = rInfo.avatar; p.enableUpdate = false; if (isPlayer) { m_player = p; moduleBattle.SetPlayerTeamIndex(p.teamIndex); } CharacterEquip.ChangeCloth(p, rInfo.fashion); if (rInfo.pet == null || rInfo.pet.itemTypeId == 0) { return(p); } var show = ConfigManager.Get <ShowCreatureInfo>(rInfo.pet.itemTypeId); if (show == null) { Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", rInfo.pet.itemTypeId); return(p); } var showData = show.GetDataByIndex(0); var data = showData.data.GetValue <ShowCreatureInfo.SizeAndPos>(0); p.pet = PetCreature.Create(p, PetInfo.Create(rInfo.pet), p.position_ + data.pos, p.eulerAngles, false, Module_Home.PET_OBJECT_NAME); p.pet.enableUpdate = false; return(p); }
public void HandlePlayer(Creature player, PNmlPlayer info, bool isPlayer = false) { Util.SetLayer(player.gameObject, Layers.MODEL); player.isPlayer = isPlayer; player.enableUpdate = false; player.behaviour.enabled = false; player.gameObject.SetActive(m_playerVisible || isPlayer); player.gameObject.name = isPlayer ? "self" : info.roleName; CharacterEquip.ChangeCloth(player, info.fashion); BordlandsCreature bc = player.activeRootNode.GetComponentDefault <BordlandsCreature>(); PropItemInfo weaponInfo = ConfigManager.Get <PropItemInfo>(info.fashion.weapon); if (weaponInfo) { bc.LoadPlayerRuntimeAnimator(Creature.GetAnimatorName(weaponInfo.subType, info.gender), weaponInfo.subType, (byte)info.gender); } bc.playerType = isPlayer ? BordlandsCreature.BordLandCreatureType.Self : BordlandsCreature.BordLandCreatureType.Player; bc.roleInfo = info; bc.creature = player; bc.InitPVECreatureBehaviour(); bc.creaturePos = info.pos.ToVector3(); if (player.pet) { player.pet.gameObject.SetActive(m_playerVisible || isPlayer); player.pet.position_ = bc.creaturePos - new Vector3(0.45f, 0, 0); } if (!isPlayer) { if (!m_otherPlayerCreatures.ContainsKey(info.roleId)) { m_otherPlayerCreatures.Add(info.roleId, null); } m_otherPlayerCreatures[info.roleId] = bc; } }
public void HandlePlayer(Creature player, PMazePlayer info, bool isPlayer = false) { Util.SetLayer(player.gameObject, Layers.MODEL); player.isPlayer = isPlayer; player.enableUpdate = false; player.behaviour.enabled = false; player.visible = moduleLabyrinth.playerVisible || isPlayer; if (player.pet) { player.pet.visible = player.visible; } player.gameObject.name = isPlayer ? "self" : info.roleName; CharacterEquip.ChangeCloth(player, info.fashion); LabyrinthCreature lc = player.activeRootNode.GetComponentDefault <LabyrinthCreature>(); lc.InitCreatureData(player, info); if (!isPlayer) { m_players.Add(lc); } }
private void CreateRole(PRoleSummary rRole, RoleEntry rEntry) { if (rEntry?.root == null || rRole == null) { return; } rEntry.materialList.Clear(); //没有时装数据的角色不创建模型。避免报错 if (rRole.fashion.weapon == 0) { return; } Vector3 pos = Vector3.zero, rot = Vector3.zero; var info = ConfigManager.Get <ShowCreatureInfo>(20001 + rEntry.index); var d = info?.GetDataByIndex(rRole.proto); if (d != null && d.data?.Length > 0) { pos = d.data[0].pos; rot = d.data[0].rotation; } var assets = new List <string>(); Level.PrepareAssets(Module_Battle.BuildPlayerSimplePreloadAssets(rRole, assets), b => { rEntry.creature = Creature.Create(modulePlayer.BuildPlayerInfo(rRole), rEntry.root.position + pos, rot, true, rRole.name, rRole.name, false); rEntry.creature.transform.SetParent(rEntry.root); rEntry.creature.localRotation = Quaternion.Euler(rot); rEntry.creature.roleId = rRole.roleId; CharacterEquip.ChangeCloth(rEntry.creature, rRole.fashion); var renderers = rEntry.creature.gameObject.GetComponentsInChildren <Renderer>(); foreach (var r in renderers) { rEntry.materialList.AddRange(r.materials); } //暂时不显示宠物了 /*if (rRole.pet == null || rRole.pet.itemId == 0) * return; * * var rPet = PetInfo.Create(rRole.pet); * var rGradeInfo = rPet.UpGradeInfo; * var show = ConfigManager.Get<ShowCreatureInfo>(rPet.ID); * if (show == null) * { * Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", rPet.ID); * return; * } * var showData = show.GetDataByIndex(0); * var data = showData.data.GetValue<ShowCreatureInfo.SizeAndPos>(0); * rEntry.pet = moduleHome.CreatePet(rGradeInfo, data.pos + rEntry.creature.position, data.rotation, rEntry.root, true, * Module_Home.TEAM_PET_OBJECT_NAME); * rEntry.pet.transform.localScale *= data.size; * rEntry.pet.transform.localEulerAngles = data.rotation; * * renderers = rEntry.pet.gameObject.GetComponentsInChildren<Renderer>(); * foreach (var r in renderers) * rEntry.materialList.AddRange(r.materials);*/ }); }
public void ChangeDefaultCloth(Creature creature) { CharacterEquip.ChangeCloth(creature, moduleEquip.currentDressClothes); OnAddDefaultData(); changedCloth = false; }
protected override void OnCreateCreatures() { m_isEnding = false; EventManager.AddEventListener(CreatureEvents.DEAD, OnCreatureDead); if (!moduleAI.IsStartAI) { moduleAI.StartAI(); } var players = LoadParam.players; for (var i = 0; i < players.Length; ++i) { var pi = players[i]; var info = modulePlayer.BuildPlayerInfo(pi); var isPlayer = pi.roleId == LoadParam.MasterId; var pos = new Vector3_(i == 0 ? CombatConfig.spvpStart.x : CombatConfig.spvpStart.y, 0, 0); var p = isPlayer || !LoadParam.IsMatchRobot ? Creature.Create(info, pos, new Vector3(0, 90, 0), isPlayer, i + ":" + pi.roleId, pi.roleName) : RobotCreature.Create(info, pos, new Vector3(0, 90, 0), i + ":" + pi.roleId, pi.roleName); if (i != 0) { p.direction = CreatureDirection.BACK; } p.roleId = pi.roleId; p.roleProto = pi.roleProto; p.teamIndex = i; p.avatar = pi.avatar; p.enableUpdate = false; if (isPlayer) { m_player = p; } m_players.Add(p); if (LoadParam.IsMatchRobot) { if (!isPlayer) { moduleAI.AddPlayerAI(p); } moduleAI.AddCreatureToCampDic(p); } CharacterEquip.ChangeCloth(p, pi.fashion); if (pi.pet != null && pi.pet.itemTypeId != 0) { var show = ConfigManager.Get <ShowCreatureInfo>(pi.pet.itemTypeId); if (show == null) { Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", pi.pet.itemTypeId); continue; } var showData = show.GetDataByIndex(0); var data = showData.data.GetValue <ShowCreatureInfo.SizeAndPos>(0); p.pet = PetCreature.Create(p, PetInfo.Create(pi.pet), p.position_ + data.pos, p.eulerAngles, false, Module_Home.PET_OBJECT_NAME); p.pet.enableUpdate = false; if (!moduleAI.IsStartAI) { moduleAI.StartAI(); } moduleAI.AddPetAI(p.pet); } } combatCamera.enabled = false; combatCamera.LookTo(new Vector3((float)((CombatConfig.spvpStart.x + CombatConfig.spvpStart.y) * 0.5), 0, 0)); }
protected override void OnCreateCreatures() { base.OnCreateCreatures(); EventManager.AddEventListener(CreatureEvents.DEAD, OnCreatureDead); //进入迷宫的时候要还原血量 if (modulePVE.reopenPanelType == PVEReOpenPanel.Labyrinth) { int damage = (int)(player.maxHealth * (1.0f - moduleLabyrinth.labyrinthSelfInfo.healthRate / 100f)); player.TakeDamage(null, DamageInfo.CreatePreCalculate(damage)); player.rage = moduleLabyrinth.labyrinthSelfInfo.angerRate; //Logger.LogDetail("进入关卡赋值血量和怒气health = {0},anger = {1}", player.healthRate, player.rageRate); } moduleAI.StartAI(); if (m_player.pet != null) { moduleAI.AddPetAI(m_player.pet); } //创建机器人 int enermyCreatureId = moduleLabyrinth.lastSneakPlayer.GetProto(); PFashion enermyFashion = moduleLabyrinth.sneakPlayerDetail.fashion; m_enermy = RobotCreature.CreateRobot(enermyCreatureId, Vector3.zero + Vector3.right * 5, new Vector3(0f, 90f, 0f), enermyFashion.weapon, enermyFashion.gun, "hero2", moduleLabyrinth.lastSneakPlayer.roleName); m_enermy.gameObject.name = "enermy_robot"; m_enermy.direction = CreatureDirection.BACK; m_enermy.avatar = moduleLabyrinth.lastSneakPlayer.avatar; m_enermy.roleProto = enermyCreatureId; CharacterEquip.ChangeCloth(m_enermy, moduleLabyrinth.sneakPlayerDetail.fashion); //重置属性 ((RobotCreature)m_enermy).ResetRobotAttribute(moduleLabyrinth.sneakPlayerDetail.roleAttrs, enermyFashion); //创建宠物 PItem pet = moduleLabyrinth.lastSneakPlayer.pet; if (pet != null && pet.itemTypeId != 0) { var show = ConfigManager.Get <ShowCreatureInfo>(pet.itemTypeId); if (show == null) { Logger.LogError("没有配置config_showCreatureInfo表。宠物ID = {0}, 没有出生位置信息。宠物模型创建失败", pet.itemTypeId); } var showData = show.GetDataByIndex(0); var data = showData.data.GetValue <ShowCreatureInfo.SizeAndPos>(0); m_enermy.pet = PetCreature.Create(m_enermy, PetInfo.Create(pet), m_enermy.position_ + data.pos, m_enermy.eulerAngles, false, Module_Home.PET_OBJECT_NAME); moduleAI.AddPetAI(m_enermy.pet); } //设置被偷袭玩家BUFF if (moduleLabyrinth.sneakPlayerDetail.buffs != null) { ushort[] buffIds = moduleLabyrinth.sneakPlayerDetail.buffs; for (int i = 0, length = buffIds.Length; i < length; i++) { Buff.Create(buffIds[i], m_enermy); } } moduleAI.AddCreatureToCampDic(m_enermy); moduleAI.AddCreatureToCampDic(player); moduleAI.AddPlayerAI(m_enermy); combatCamera.enabled = false; combatCamera.LookTo(new Vector3((float)((CombatConfig.spvpStart.x + CombatConfig.spvpStart.y) * 0.5), 0, 0)); //set initial health and rage modulePVE.SetPveGameData(EnumPVEDataType.Health, m_player.healthRate); modulePVE.SetPveGameData(EnumPVEDataType.Rage, m_player.rageRate); }
private void OnPostGmLockClass(Event_ e) { var mm = (bool)e.param1; moduleGlobal.LockUI("拼命加载中...", 0.3f, 35.0f); PrepareAssets(Module_Battle.BuildPlayerPreloadAssets(), f => { moduleGlobal.UnLockUI(); if (!f || !this) { return; } if (!mm || !m_player) { var info = modulePlayer.BuildPlayerInfo(); var old = m_player; var pet = m_player?.pet; var pos = m_player ? m_player.position_ : playerStart; var dir = m_player ? m_player.direction : CreatureDirection.FORWARD; m_player = Creature.Create(info, pos, new Vector3(0, 90, 0), true, "player", modulePlayer.name_); m_player.roleId = modulePlayer.id_; m_player.roleProto = modulePlayer.proto; m_player.position = pos; m_player.direction = dir; m_player.teamIndex = old ? old.teamIndex : 0; m_player.roleId = old ? old.roleId : modulePlayer.id_; if (old) { m_player.regenRage = old.regenRage; m_player.regenRagePercent = old.regenRagePercent; m_player.regenHealth = old.regenHealth; m_player.regenHealthPercent = old.regenHealthPercent; m_player.attack = old.attack; } m_player.pet = pet; if (pet) { pet.ParentCreature = m_player; } if (old) { old.Destroy(); } CharacterEquip.ChangeCloth(m_player, moduleEquip.currentDressClothes); _SetDOFFocusTarget(m_player.transform); CreatePlayerAudioListener(); } else { m_player.elementType = (int)modulePlayer.elementType; m_player.UpdateWeapon(moduleEquip.weaponID, moduleEquip.weaponItemID); } }); }