public uint Execute(PacketDistributed ipacket) { GC_DROPITEM_INFO packet = (GC_DROPITEM_INFO )ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //enter your logic //判断ServerID是否合法 if (packet.ObjId < 0) { return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); } //安全措施,如果发现ServerID已经存在,则先移除掉 if (Singleton <ObjManager> .GetInstance().IsObjExist(packet.ObjId)) { Singleton <ObjManager> .GetInstance().RemoveObj(packet.ObjId); } Obj_DroopItemData initData = new Obj_DroopItemData(); initData.m_nServerID = packet.ObjId; initData.m_fX = ((float)packet.Pos_x) / 100; initData.m_fZ = ((float)packet.Pos_z) / 100; initData.m_nType = packet.Type; initData.m_nItemId = packet.DropItemId; initData.m_nItemCount = packet.Count; initData.m_OwnerGuid = packet.OwnerGuid; Singleton <ObjManager> .GetInstance().NewDropObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_DROP_ITEM, initData); return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
public virtual bool Init(Obj_DroopItemData initData) { if (null == m_ObjTransform) { m_ObjTransform = transform; } if (null != GameManager.gameManager.ActiveScene && null != GameManager.gameManager.ActiveScene.DropItemBoardRoot) { m_ObjTransform.parent = GameManager.gameManager.ActiveScene.DropItemBoardRoot.transform; } else { LogModule.ErrorLog("GameManager.gameManager.ActiveScene.DropItemBoardRoot is null"); } DropType = initData.m_nType; ItemId = initData.m_nItemId; ItemCount = initData.m_nItemCount; ServerID = initData.m_nServerID; OwnerGuid = initData.m_OwnerGuid; float fScaling = 0.005f; Vector3 pos = new Vector3(initData.m_fX, 0, initData.m_fZ); if (null != Singleton <ObjManager> .Instance.MainPlayer) { pos.y = Singleton <ObjManager> .Instance.MainPlayer.Position.y; } else { pos = ActiveScene.GetTerrainPosition(pos); } pos.y += 0.2f; if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FB_HUNDUNZHIDI) { pos.y = 15.1f; } m_ObjTransform.position = pos; //暂时 写死了 后面再用服务器 m_ObjTransform.Rotate(Vector3.up * 135); //初始化特效 if (ObjEffectController == null) { ObjEffectController = gameObject.AddComponent <ObjEffectBehaviourController>(); } InitEffect(); if (DropType == (int)Games.GlobeDefine.GameDefine_Globe.DROP_TYPE.DROP_ITEM) { Tab_CommonItem line = TableManager.GetCommonItemByID(m_nItemId, 0); if (line != null) { fScaling = line.DropScaling; int nEffectId = line.DropEffectId; if (nEffectId != -1) { PlayEffect(nEffectId); } } } Vector3 posScale = m_ObjTransform.localScale; m_ObjTransform.localScale = posScale * fScaling; m_localScale = m_ObjTransform.localScale; return(true); }