private void OnItemPickUp(GameEvent ge, EventParameter parameter) { MsgData_sPickUpItem data = parameter.msgParameter as MsgData_sPickUpItem; if (null == data) { return; } for (int i = 0; i < data.Data.Count; i++) { PickUpItem_Result result = data.Data[i]; if (0 == result.Result)//0:成功 { hasAddedItems.Remove(result.ID); PickDropItem(result.ID); } else if (-1 == result.Result)//-1:物品不存在 { hasAddedItems.Remove(result.ID); //LogMgr.UnityError("物品不存在 " + result.ID); } else if (-2 == result.Result)//-2:不属于该玩家 { UITips.ShowTips("该物品不属于您"); } else if (-3 == result.Result)//-3:背包已满 { UITips.ShowTips("背包已满,拾取失败"); } } }
/// <summary> /// 显示系统公告。 /// </summary> /// <param name="id">公告编号。</param> /// <param name="param">公告参数。</param> public void ShowSystemNotice(int id, string param) { LuaTable cfg = ConfigManager.Instance.Common.GetSystemNoticeConfig(id); if (cfg == null) { LogMgr.LogWarning("Unknow system notice id:{0}", id); return; } //解析消息内容 string text = ParseNotice(cfg, param); int channel = cfg.Get <int>("channel"); //是否信息漂浮额外提示 if (cfg.Get <int>("type") == 4) { UITips.ShowTips(text); } //系统提示信息0号频道不在聊天信息 if (channel != 0) { ChatMessage chat = new ChatMessage(1, channel, text); AddMessage(chat); TriggerEventSystemNotice(chat); } }
/// <summary> /// 发送改变乘骑状态的请求。 /// </summary> public void SendChangeRideStateRequest(int state) { if (PlayerData.Instance.BaseAttr.GetUnitBit((int)UnitBit.UNIT_BIT_IN_PK) && state != 0) { UITips.ShowTips("PK状态中,无法上坐骑"); return; } if (mRideState == state) { return; } MsgData_cChangeRideState data = new MsgData_cChangeRideState(); data.RideState = state; CoreEntry.netMgr.send((Int16)NetMsgDef.C_CHANGE_RIDE_STATE, data); }
void OnTriggerEnter(Collider collider) { ActorObj actor = collider.GetComponent <ActorObj>(); if (null == actor) { return; } if (actor != CoreEntry.gActorMgr.MainPlayer) { return; } if (m_IgnoreEnter) { return; } if (PlayerData.Instance.BaseAttr.Level < m_PortalCfg.Get <int>("limitLv")) { string msg = string.Format("人物等级不足{0}级,无法传送!", m_PortalCfg.Get <int>("limitLv")); UITips.ShowTips(msg); LogMgr.LogWarning(msg + "(客户端主动判断)"); return; } if (PlayerData.Instance.BaseAttr.JingJieLevel < m_PortalCfg.Get <int>("dianfengLv")) { string msg = string.Format("人物境界等级不足{0}级,无法传送!", m_PortalCfg.Get <int>("dianfengLv")); UITips.ShowTips(msg); LogMgr.LogWarning(msg + "(客户端主动判断)"); return; } if (m_PortalCfg.Get <int>("type") == 3) //活动地图传送门 --世界BOSS,银两BOSS等 { ActivityMgr.Instance.Send_CS_ActivityEnter(m_PortalCfg.Get <int>("targetActivity")); } else { // CoreEntry.gActorMgr.MainPlayer.StopMove(true); NetLogicGame.Instance.SendReqStaticTrigger(serverID); } }
private void OnRevive(GameEvent ge, EventParameter parameter) { MsgData_sRevive data = parameter.msgParameter as MsgData_sRevive; if (null == data) return; if (0 == data.Result) { ActorObj actor = CoreEntry.gActorMgr.GetActorByServerID(data.RoleID); if (null == actor) return; if (PlayerData.Instance != null) { PlayerData.Instance.ReviceHideLessTime = 0; } actor.SetPosition((float)data.PosX, (float)data.PosY); actor.ForceToRevive(); //StartCoroutine(DoRevive(actor)); } else if (-1 == data.Result) { UITips.ShowTips("5s限制时间已过"); } else if (-2 == data.Result) { //UITips.ShowTips("非死亡不能复活"); } else if (-3 == data.Result) { UITips.ShowTips("道具不足"); } else if (-4 == data.Result) { UITips.ShowTips("钻石不足"); } else if (-5 == data.Result) { UITips.ShowTips("不可原地复活"); } }
/// <summary> /// 显示公告。 /// </summary> /// <param name="id">公告编号。</param> /// <param name="param">公告参数。</param> public void ShowNotice(int id, string param) { LuaTable cfg = ConfigManager.Instance.Common.GetNoticeConfig(id); if (cfg == null) { LogMgr.LogWarning("Unknow notice id:{0}", id); return; } //解析消息内容 string text = id == SpecialNoticeID?ParseSpecialNotice(param) : ParseNotice(cfg, param); int channel = cfg.Get <int>("channel"); //是否走马灯显示 string pos = cfg.Get <string>("pos"); if (pos.IndexOf("1") != -1 || pos.IndexOf("2") != -1) { //登录和选角不弹走马灯 if (MapMgr.Instance.CurMapType != MapMgr.MapType.Map_Login && MapMgr.Instance.CurMapType != MapMgr.MapType.Map_SelectRole) { UITips.ShowNotice(text); } } if (pos.IndexOf("4") != -1) { ChatMessage chat = new ChatMessage(1, channel, text); AddMessage(chat); TriggerEventNotice(chat); } if (pos.IndexOf("5") != -1) { UITips.ShowTips(text); } }
/// <summary> /// 背包扩充回复。 /// </summary> /// <param name="data">网络消息数据。</param> private void OnExpandBag(MsgData data) { MsgData_sExpandBagResult info = data as MsgData_sExpandBagResult; LogMgr.Log("背包扩充回复 bag:{0} size:{1} result:{2}", info.Bag, info.NewSize, info.Result); if (info.Result == 0) { //背包扩充成功 BagInfo bag = GetBagInfo(info.Bag); if (bag != null) { int oldsize = bag.Size; bag.Size = info.NewSize; bag.OpenLastTime = ConfigManager.Instance.BagItem.GetOpenNeedTime(info.Bag, info.NewSize); TriggerEventBagSize(bag.BagType, oldsize, info.NewSize); //只提示通用背包开启 if (info.Bag == BagType.ITEM_BAG_TYPE_COMMON) { string msg = string.Format("成功开启{0}格背包!", info.NewSize - oldsize); UITips.ShowTips(msg); } } } }
/// <summary> /// 获取37玩服务器列表 /// </summary> /// <returns></returns> private IEnumerator GetSQWServerList() { if (SQWSDK.isLogin) { int isfail = 0; //获取历史和推荐服务器 WWWForm form = new WWWForm(); form.AddField("userID", SQWSDK.Instance.userID); //token加密 string md5 = Md5Util.MD5Encrypt(SQWSDK.Instance.userID + "6842c6012614bd474f75d1067f3e805f"); form.AddField("token", md5); Debug.Log("发送参数:" + "userID: " + SQWSDK.Instance.userID + "key; " + "6842c6012614bd474f75d1067f3e805f"); Debug.Log("加密后:" + form.data.BytesToString()); form.AddField("package", Application.bundleIdentifier); Debug.Log("package:" + Application.bundleIdentifier); int sdkType = ClientSetting.Instance.GetIntValue("thirdPartyComponent"); int subChannel = ClientSetting.Instance.GetIntValue("SubChannel"); string strLoginListUrl = SDKMgr.Instance.GetDefaultServersURL(sdkType, subChannel); // WWW history = new WWW(strLoginListUrl, form); yield return(history); if (history.isDone) { SQWSDK.Instance.sdkDefalutList = history.text; Debug.Log("LoginListUrl:" + strLoginListUrl + " 推荐服务器列表:" + SQWSDK.Instance.sdkDefalutList); //获取公共服务器列表 WWWForm formServers = new WWWForm(); formServers.AddField("userID", SQWSDK.Instance.userID); formServers.AddField("package", Application.bundleIdentifier); formServers.AddField("version", ClientSetting.Instance.GetIntValue("PackageVersion")); string key = "7ada175d3828b656db7eda80dc7d58b3"; string token = Md5Util.MD5Encrypt(key + SQWSDK.Instance.userID + Application.bundleIdentifier + ClientSetting.Instance.GetIntValue("PackageVersion")); formServers.AddField("token", token); string strServerListUrl = SDKMgr.Instance.GetServersURL(sdkType, subChannel); Debug.Log("ServerListUrl:" + strServerListUrl + " 发送服务器列表参数:" + "userID: " + SQWSDK.Instance.userID + "package: " + Application.bundleIdentifier + "version: " + ClientSetting.Instance.GetIntValue("PackageVersion")); WWW ser = new WWW(strServerListUrl, formServers); yield return(ser); if (ser.isDone) { Debug.Log("服务器列表: " + ser.text); SQWSDK.Instance.sdkServerList = ser.text; } else if (!string.IsNullOrEmpty(ser.error)) { isfail = 1; Debug.Log("获取服务器列表失败:" + ser.error); } } else if (!string.IsNullOrEmpty(history.error)) { isfail = 1; Debug.Log("获取推荐服务器列表失败:" + history.error); } //根据状态发送消息 EventParameter ev = EventParameter.Get(); ev.intParameter = isfail;//获取状态 0成功 1失败 Debug.Log("服务器列表:" + isfail); CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_SQW_SERVERLIST, ev); if (1 == isfail) { UITips.ShowTips("重新刷新服务器列表"); StartCoroutine(GetSQWServerList()); } } }
void Update() { if (CoreEntry.gCameraMgr.MainCamera == null) { return; } if (CoreEntry.gJoystickMgr.IsTouch()) { cancelAuto = false; // ChangeMouseTexture(TargetType.none); return; } if (targetObj != null) { if (!NpcMgr.Instance.bInArea(targetObj.gameObject.transform.position, 10)) { targetObj.SelectNpc(targetObj, false); targetObj = null; } } if ((DateTime.Now - dt).TotalSeconds < 1) { return; } if (Application.isMobilePlatform) { if (Input.touchCount > 0) { if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { cancelAuto = false; return; } } } //Button ss; #if UNITY_EDITOR || UNITY_STANDALONE if (Input.GetMouseButtonDown(0)) #else int count = Input.touchCount; if (count <= 0) { return; } Touch touch = Input.GetTouch(0); if (TouchPhase.Began == touch.phase) #endif { #if IPHONE || ANDROID if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { cancelAuto = false; return; } #else if (EventSystem.current.IsPointerOverGameObject()) { cancelAuto = false; //过滤穿透 return; } #endif //UnityEngine.UI.GraphicRaycaster gray = this.GetComponent<UnityEngine.UI.GraphicRaycaster>(); Ray ray = CoreEntry.gCameraMgr.MainCamera.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线 RaycastHit hitInfo; //TargetType curTargetType = TargetType.none; //初始化点击光标显示类型 if (Physics.Raycast(ray, out hitInfo, float.PositiveInfinity, mClickMask)) { // LogMgr.DrawLine(ray.origin, hitInfo.point);//划出射线,只有在scene视图中才能看到 GameObject gameObj = hitInfo.collider.gameObject; if (!gameObj.CompareTag("Untagged")) { cancelAuto = false; //LogMgr.UnityLog("click object name is " + gameObj.name); //LogMgr.UnityLog("gameObj.tag " + gameObj.tag); //obj tag层 if (gameObj.tag.Equals("npc") || gameObj.tag.Equals("collect") || gameObj.tag.Equals("monster") || gameObj.tag.Equals("player") || gameObj.tag.Equals("boss")) { CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_MyTakeAction, EventParameter.Get()); //int distance = 0; //int campId = 0; if (gameObj.tag.Equals("npc")) { //curTargetType = TargetType.handerType1; int cid = gameObj.GetComponent <NpcObj>().ConfigID; //npcConfig cf = npcExcel.GetRecord<npcConfig>(cid); LuaTable cfg = ConfigManager.Instance.Actor.GetNPCConfig(cid); if (cfg == null) { LogMgr.LogError("NPC配置表中不存在 resid: " + cid); return; } if (cfg.Get <int>("open_dialog") < 1) //该NPC不能进行对话 { return; } //distance = cfg.Get<int>("open_dis"); //campId = cfg.Get<int>("camp"); } if (gameObj.tag.Equals("collect")) { //curTargetType = TargetType.handerType1; CollectionType mType = gameObj.GetComponent <CollectionObj>().Type; if (mType == CollectionType.ME || mType == CollectionType.FRIEND) { //公会战判断。 己方军旗 return; } int cid = gameObj.GetComponent <CollectionObj>().ConfigID; long serverId = gameObj.GetComponent <CollectionObj>().ServerID; LuaTable cfg = ConfigManager.Instance.Map.GetCollectionConfig(cid); if (cfg == null) { LogMgr.LogError("采集配置表中不存在 resid: " + cid); return; } if (cfg.Get <int>("click") != 1) { return; } if (NpcMgr.Instance.bInArea(gameObj.transform.position, cfg.Get <int>("distance")) == false) { Debug.Log("距离不够"); return; } if (bCollectFinish) { int num = cfg.Get <int>("cast_time"); bCollectFinish = false; MsgData_cStructDef rsp = new MsgData_cStructDef(); rsp.cID = serverId; if (rsp.cID > 0) { LogMgr.Log("发送采集请求rsp.cID " + rsp.cID); CoreEntry.netMgr.send((Int16)NetMsgDef.C_STRUCT_DEF, rsp); } //TaskMgr.Instance.Send_CS_CollectData(cid); UITips.ShowSliderProgress(cfg.Get <string>("tips"), num, () => { bCollectFinish = true; }); gameObj.GetComponent <CollectionObj>().SelectTarget(); }/* * Debug.LogError("采集cid "+ cid); * UITips.ShowSliderProgress("采集中", cfg.Get<int>("cast_time")/1000,() => { * Debug.LogError("11111"); * }); */ } if (gameObj.tag.Equals("monster") || gameObj.tag.Equals("boss") || gameObj.tag.Equals("collect")) { ActorObj monster = gameObj.GetComponent <ActorObj>(); ActorObj mainplayer = CoreEntry.gActorMgr.MainPlayer; if (monster != null) { if (mainplayer.m_SelectTargetObject == monster) { LogMgr.DebugLog("点击选中同一个目标"); CoreEntry.gAutoAIMgr.AutoFight = true; } else { if ((monster is MonsterObj) && monster.IsSameCamp()) { //同阵营的怪物不能被选中! } else { mainplayer.SelectTarget(monster); } } } return; } //PK选择目标 if (gameObj.tag.Equals("player")) { ActorObj mainplayer = CoreEntry.gActorMgr.MainPlayer; OtherPlayer player = gameObj.GetComponent <OtherPlayer>(); if (player != null) { mainplayer.SelectTarget(player); return; } } dt = DateTime.Now; //过滤多次发送。 // if (TaskMgr.Instance.bInArea(hitInfo.point,distance)) //cf.open_dis 对话半径 if (NpcMgr.Instance.bInArea(hitInfo.point, 3)) { if (gameObj.tag.Equals("npc")) { targetObj = gameObj.GetComponent <ActorObj>(); NpcMgr.Instance.OpenNpcTk(targetObj.ConfigID); //LuaTable camp = ConfigManager.Instance.Common.GetCampConfig(campId); //ActorObj mainplayer = CoreEntry.gActorMgr.MainPlayer; //if (targetObj != null) //{ // if (mainplayer.m_SelectTargetObject == targetObj) // { // LogMgr.LogError("点击选中同一个目标"); // CoreEntry.gAutoAIMgr.AutoFight = true; // } // else // { // if ((targetObj is ActorObj) && targetObj.IsSameCamp()) // { // //同阵营的怪物不能被选中! // } // else // { // mainplayer.SelectTarget(targetObj); // } // } //} targetObj.SetTarget(targetObj); targetObj.SelectNpc(targetObj, true); } else if (gameObj.tag.Equals("collect")) { } else if (gameObj.tag.Equals("player")) { } else { } } else { if (bMove) { Vector3 go = hitInfo.point; LogMgr.Log("距离不够,点击移动"); TaskMgr.Instance.MoveToPos(go); // bMove = false; } } } } else { if (gameObj.layer == LayerMask.NameToLayer("ground") && CoreEntry.gJoystickMgr.IsShow && !ArenaMgr.Instance.IsArenaFight) { int mapid = MapMgr.Instance.EnterMapId; var info = ConfigManager.Instance.Map.GetMapConfig(mapid); if (info != null && info.GetInPath <int>("type") == 42)//如果是竞技场 不给人物行走 { return; } Vector3 pos = hitInfo.point; ActorObj mainActor = CoreEntry.gActorMgr.MainPlayer; if (!SceneDataMgr.Instance.IsBlocked(pos) && null != mainActor) { if (mainActor.GetCurState() == ACTOR_STATE.AS_STAND || mainActor.GetCurState() == ACTOR_STATE.AS_RUN || mainActor.GetCurState() == ACTOR_STATE.AS_NONE) { if (mainActor.AutoPathFind && !cancelAuto) { cancelAuto = true; UITips.ShowTips("再次点击取消自动寻路"); return; } CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_MyTakeAction, EventParameter.Get()); //CoreEntry.gGameMgr.AutoFight = false; TaskMgr.bRunAndTasking = false; CoreEntry.gActorMgr.MainPlayer.ShowMoveArrow(pos); CoreEntry.gActorMgr.MainPlayer.MoveToPos(pos); } } } } //targetType = curTargetType; } } // ChangeMouseTexture(targetType); //更改鼠标光标 }
public void OnClick(GameObject obj) { if (buttonindex == (int)enSkillIndex.Player_Skill_Beauty && PlayerData.Instance.BaseAttr.Level < BeautyOpenLevel) { //UITips.ShowTips(string.Format("魔神变身{0}级开放", BeautyOpenLevel)); UITips.ShowUnHeroModelShow(); return; } if (buttonindex == (int)enSkillIndex.Player_Skill_Beauty) { if (m_ImageDisable.gameObject.activeSelf) { // UITips.ShowTips(string.Format("您未获得魔神")); UITips.ShowUnHeroModelShow(); return; } else { if (guidewidget != null) { guidewidget.OnButtonClick(); } if (m_ImageCD.fillAmount < 1) { string strTips = Localization.Get("技能冷却中"); if (strTips.Length > 0) { UITips.ShowTips(strTips); } } } } if (m_ImageDisable.gameObject.activeSelf) { if (buttonindex == (int)enSkillIndex.Player_Skill_WangzheVip) { MainPanelMgr.Instance.ShowDialog("UIBaiYinVIP"); return; } UITips.ShowTips(string.Format("该技能尚未解锁")); return; } if (skillID == 0) { return; } if (CoreEntry.gActorMgr.MainPlayer != null) { if (buttonindex == (int)enSkillIndex.Player_att || buttonindex == (int)enSkillIndex.Beauty_att) { CoreEntry.gActorMgr.MainPlayer.ReleaseCanNotBeControlledByInputFromNormalAttack(); } } LuaTable skill = ConfigManager.Instance.Skill.GetSkillConfig(skillID); if (skill == null) { return; } if (SkillBase.GetSkillVersion(CoreEntry.gActorMgr.MainPlayer, skill) == 2 && CoreEntry.gActorMgr.MainPlayer.curActorState != ACTOR_STATE.AS_AIMING) { return; } SDKMgr.Instance.TrackGameOptLog(1, 500 + buttonindex); m_isDrag = false; //m_isClick = false; // 按住不能放技能 m_sendRatio = 0.05f; if (buttonindex == (int)enSkillIndex.Player_Skill_Beauty) { LogMgr.UnityWarning("Player_Skill_Beauty:" + skillID); } ModuleServer.MS.GSkillCastMgr.CastSkill(skillID); }
public static void ShowTips(string msg) { UITips uI = FindUI <UITips>() as UITips; uI.ShowTips(msg); }
//技能命中,获取被击的信息,发给被击对象做表现 public void OnSkillDamage(DamageParam damageParam) { if (ArenaMgr.Instance.IsArenaFight) { ArenaMgr.Instance.OnSkillDamage(damageParam); return; } //攻击者的信息 ActorObj attackActorObj = damageParam.attackActor; ActorObj behitActorObj = damageParam.behitActor; if (null == attackActorObj || null == behitActorObj) { return; } if (behitActorObj.IsDeath()) { return; } BehitParam behitParam = new BehitParam(); behitParam.displayType = DamageDisplayType.DDT_NORMAL; behitParam.hp = damageParam.Damage; #if !PUBLISH_RELEASE if (m_bMiaoGuai) { if (attackActorObj.mActorType == ActorType.AT_LOCAL_PLAYER) { behitParam.hp += 1000000; } } else { if (m_bWuShang && attackActorObj.mActorType == ActorType.AT_LOCAL_PLAYER) { behitParam.hp = 1; } } #endif //被击效果修正 behitParam.damgageInfo = damageParam; #if !PUBLISH_RELEASE if (m_bWuShang && behitActorObj.mActorType == ActorType.AT_LOCAL_PLAYER) { behitParam.hp = 1; } #endif //给技能释放者发送回复信息 // 发送被击消息给被击者 // if (behitParam.hp != 0) { behitActorObj.OnSkillBeHit(behitParam); } if (attackActorObj.mActorType == ActorType.AT_LOCAL_PLAYER) { behitActorObj.Health.ShowHPBar(5); } //受到其它玩家攻击时,提示开启善恶模式 if (behitParam.hp > 0 && behitActorObj.mActorType == ActorType.AT_LOCAL_PLAYER) { if (attackActorObj.mActorType == ActorType.AT_REMOTE_PLAYER) { if (PlayerData.Instance.CurPKMode == PKMode.PK_MODE_PEACE && (PlayerData.LastNoteSwitchPKTime <= 0 || (Time.realtimeSinceStartup - PlayerData.LastNoteSwitchPKTime) >= 60)) { bool autosetpk = false; if (autosetpk) { UITips.ShowTips("受到攻击,切换善恶模式"); PlayerData.Instance.SendSetPKRuleRequest(PKMode.PK_MODE_EVIL); } else { MainPanelMgr.Instance.ShowDialog("TipSwitchPKNote"); PlayerData.LastNoteSwitchPKTime = Time.realtimeSinceStartup; } } //没有目标则选中攻击者 ActorObj mainplayer = CoreEntry.gActorMgr.MainPlayer; if (mainplayer.m_SelectTargetObject == null) { mainplayer.SelectTarget(attackActorObj); } EventParameter ep = EventParameter.Get(); ep.objParameter = attackActorObj; CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_PK_HURT, ep); } //玩家收到了攻击 AutoAIMgr automgr = CoreEntry.gAutoAIMgr; if (automgr.Config.AutoStrikeBack && TaskMgr.RunTaskType == 0 && !automgr.AutoFight && !behitActorObj.AutoPathFind) { float gap = Time.realtimeSinceStartup - automgr.LastOPTime; //LogMgr.Log("Last op gap {0}", gap); if (gap > automgr.Config.StrikeBackGapWithIdle) { automgr.AutoFight = true; } } } }