protected override void DieAward(uint killerid) { if (mRes == null) { return; } // 掉货币 if (mRes.dropMoney > 0 && mRes.dropMoneyWeight > 0) { int rand = Random.Range(0, DropManager.MAX_WEIGHT); if (mRes.dropMoneyWeight > rand) { if (mRes.dropMoneyPickId < 0 || !DataManager.PickTable.ContainsKey(mRes.dropMoneyPickId)) { if (killerid != uint.MaxValue) { ObjectBase obj = PlayerController.Instance.GetControlObj(); if (obj != null && obj.InstanceID == killerid) { PlayerDataModule pdm = ModuleManager.Instance.FindModule <PlayerDataModule>(); if (pdm != null) { // pdm.ChangeProceeds(ProceedsType.Money_Game, mRes.dropMoney); } } } } else {// 掉进场景 List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.MONEY, mRes.dropMoneyPickId, mRes.dropMoney, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, false)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } } } // 掉buff if (mRes.buffDropBoxId >= 0) { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.BUFF, -1, mRes.buffDropBoxId, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, true)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } // 掉道具 if (mRes.itemDropBoxId >= 0) { if (mRes.isDropOnGround > 0) {// 掉地上 List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, mRes.itemDropBoxId, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, true)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } // else // { // ArrayList itemList = new ArrayList(); // if (DropManager.Instance.GenerateDropBox(mRes.itemDropBoxId, out itemList)) // { // foreach (DropBoxItem item in itemList) // { // ItemTableItem itemres = ItemManager.GetItemRes(item.itemid); // if (itemres == null) // continue; // // if (killerid != uint.MaxValue) // { // ObjectBase obj = PlayerController.Instance.GetControlObj(); // if (obj != null && obj.InstanceID == killerid) // { // PlayerDataModule pdm = ModuleManager.Instance.FindModule<PlayerDataModule>(); // if (pdm != null) // { // //pdm.CreateItemUnreal(item.itemid, PackageType.Pack_Bag); // } // } // } // } // } // } } }
private bool doSlowCreate(bool killAll) { if (slowCreateIds.Count < 1) { return(false); } GrowthTriggerInfo info = slowCreateIds[0] as GrowthTriggerInfo; if (info.type == "NPC") { NpcInitParam npcParam = new NpcInitParam(); npcParam.npc_res_id = info.resId; float y = mScene.GetHeight(info.x, info.z); npcParam.init_pos = new Vector3(info.x, y, info.z); npcParam.init_dir = info.dir; npcParam.alias = info.alias; npcParam.talk_id = info.talkID; ObjectBase obj = mScene.CreateSprite(npcParam); if (obj == null) { GameDebug.LogError("创建Npc失败。npcId:" + info.resId); return(false); } if ("ghost" == info.alias) { mScene.GhostObjects().Add(info); } if (obj != null) { if (killAll) { cacheIdKillAll.Add(obj.InstanceID); } else { cacheId.Add(obj.InstanceID); } } } else if (info.type == "PICK") { PickGrowthTriggerInfo pickinfo = info as PickGrowthTriggerInfo; List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam((Pick.PickType)(System.Enum.Parse(typeof(Pick.PickType), pickinfo.picktype.ToString())), pickinfo.resId, pickinfo.content, new Vector3(info.x, mScene.GetHeight(info.x, info.z), info.z), info.dir, out paramList, false, Pick.FlyType.FLY_OUT, pickinfo.picktype != (int)Pick.PickType.SUPER_WEAPON)) { foreach (PickInitParam param in paramList) { param.init_pos.y = mScene.GetHeight(param.init_pos.x, param.init_pos.z); param.alias = info.alias; ObjectBase obj = mScene.CreateSprite(param); if (obj == null) { GameDebug.LogError("创建Pick失败。pickId:" + info.resId); return(false); } if (obj != null) { if (killAll) { cacheIdKillAll.Add(obj.InstanceID); } else { cacheId.Add(obj.InstanceID); } } } } } else if (info.type == "BUILD") { BuildGrowthTriggerInfo buildinfo = info as BuildGrowthTriggerInfo; BuildInitParam buildParam = new BuildInitParam(); buildParam.build_res_id = info.resId; float y = mScene.GetHeight(info.x, info.z); buildParam.init_pos = new Vector3(info.x, y, info.z); buildParam.init_dir = info.dir; buildParam.build_barrier = buildinfo.barrier > 0; buildParam.alias = info.alias; ObjectBase obj = mScene.CreateSprite(buildParam); if (obj == null) { GameDebug.LogError("创建Building失败。buildId:" + info.resId); return(false); } if (obj != null) { if (killAll) { cacheIdKillAll.Add(obj.InstanceID); } else { cacheId.Add(obj.InstanceID); } } } else if (info.type == "PARTICLE") { Vector3 pos = new Vector3(info.x, mScene.GetHeight(info.x, info.z), info.z); mScene.CreateEffect(info.resId, Vector3.one, pos, info.dir, info.alias); } slowCreateIds.RemoveAt(0); if (slowCreateIds.Count < 1) { return(false); } return(true); }
public override void HpDamageAward(uint objtarget, int time) { if (mRes == null) { return; } if (uint.MaxValue == objtarget) { return; } if (0 == cdTime) { cdTime = time * 1000; } else { return; } // 掉货币 if (mRes.dropMoney > 0 && mRes.dropMoneyWeight > 0) { int rand = Random.Range(0, DropManager.MAX_WEIGHT); if (mRes.dropMoneyWeight > rand) { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.MONEY, mRes.dropMoneyPickId, mRes.dropMoney, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, false)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } } // 掉buff if (mRes.buffDropBoxId >= 0) { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.BUFF, -1, mRes.buffDropBoxId, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, true)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } // 掉道具 if (mRes.itemDropBoxId >= 0) { if (mRes.isDropOnGround > 0) { // 掉地上 List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, mRes.itemDropBoxId, GetPosition(), GetDirection(), out paramList, true, Pick.FlyType.FLY_OUT, true)) { foreach (PickInitParam param in paramList) { mScene.CreateSprite(param); } } } else { ArrayList itemList = new ArrayList(); if (DropManager.Instance.GenerateDropBox(mRes.itemDropBoxId, out itemList)) { foreach (DropBoxItem item in itemList) { ItemTableItem itemres = ItemManager.GetItemRes(item.itemid); if (itemres == null) { continue; } ObjectBase obj = PlayerController.Instance.GetControlObj(); if (obj != null) { PlayerDataModule pdm = ModuleManager.Instance.FindModule <PlayerDataModule>(); if (pdm != null) { //pdm.CreateItemUnreal(item.itemid, PackageType.Pack_Bag); } } } } } } }
// 掉落首次&&通关&&Boss奖励 public void DropPassAward() { ObjectBase obj = PlayerController.Instance.GetControlObj(); if (obj == null) { return; } // 首次通关掉落 PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>(); if (!module.IsStageHasPassed(mSubRes.resID)) { List <role_dropaward> fpList = StageDataManager.Instance.GetFirstPassAwards(); if (fpList != null) { for (int i = 0; i < fpList.Count; ++i) { role_dropaward fpAward = fpList[i]; if (fpAward != null) { if (fpAward.drop_id_type == 0) { GameDebug.LogWarning("掉落物的Dropbox表不使用ConditionId了."); } else { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, fpAward.drop_id, obj.GetPosition(), 0, out paramList, true, Pick.FlyType.DROP_DOWN, false)) { foreach (PickInitParam param in paramList) { CreateSprite(param); } } } } } } } Vector3 pos = BossDeadPos != Vector3.zero ? BossDeadPos : obj.GetPosition(); if (pos == null) { return; } // 通关随机掉落 List <role_dropaward> dropList = StageDataManager.Instance.GetBossKillAwards(); if (dropList != null && dropList.Count > 0) { for (int i = 0; i < dropList.Count; ++i) { role_dropaward dropAward = dropList[i]; if (dropAward != null) { if (dropAward.drop_id_type == 0) { GameDebug.LogWarning("掉落物的Dropbox表不使用ConditionId了."); } else { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, dropAward.drop_id, obj.GetPosition(), 0, out paramList, true, Pick.FlyType.FLY_OUT, false)) { foreach (PickInitParam param in paramList) { CreateSprite(param); } } } } } } // 金币随机掉落 uint gold = StageDataManager.Instance.GetGoldAwards(); if (gold != 0 && gold != uint.MaxValue) { List <PickInitParam> paramList = new List <PickInitParam>(); if (SceneObjManager.CreatePickInitParam(Pick.PickType.MONEY, 3, (int)gold, pos, 0, out paramList, true, Pick.FlyType.FLY_OUT, false)) { foreach (PickInitParam param in paramList) { CreateSprite(param); } } } }