public void onGotoCity(GameObject go)
        {
            if (!FindBestoModel.getInstance().Canfly)
            {
                flytxt.instance.fly(FindBestoModel.getInstance().nofly_txt);
                InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
                return;
            }
            cd.updateHandle = worldmapsubwin.onCD;

            GameObject goeff = GameObject.Instantiate(EFFECT_CHUANSONG1) as GameObject;

            goeff.transform.SetParent(SelfRole._inst.m_curModel, false);

            cd.show(() =>
            {
                MapProxy.getInstance().sendBeginChangeMap(0, true);
            },
                    2.8f, false,
                    () =>
            {
                Destroy(goeff);
            }

                    );
            InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
        }
 void wait_Time_baotu()
 {
     waitTime_baotu--;
     if (waitTime_baotu <= 0)
     {
         waitTime_baotu = 0;
         CancelInvoke("wait_Time_baotu");
         FindBestoModel.getInstance().Canfly = true;
     }
 }
        public void sendBeginChangeMap(int linkid, bool transmit = false, bool ontask = false, int lineid = -1)
        {
            if (FindBestoModel.getInstance().Canfly)//宝图活动战斗状态禁止传送
            {
                Variant v = new Variant();

                v["gto"]      = linkid;
                v["transmit"] = transmit;
                v["ontask"]   = ontask;
                if (lineid != -1)
                {
                    v["line"] = lineid;
                }
                debug.Log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>sendBeginChangeMap>" + v.dump());
                changingMap = true;
                sendRPC(PKG_NAME.C2S_ON_BEGIN_CHANGE_MAP_RES, v);
            }
            else
            {
                flytxt.instance.fly(FindBestoModel.getInstance().nofly_txt);
            }
        }
        void doHurt(Variant v)
        {
            //debug.Log("doHurt:::::" + v.dump());
            uint to_iid   = v["to_iid"]._uint;
            int  damage   = v["dmg"]._int;
            bool isdie    = v["isdie"]._bool;//<v name="isdie" type="bool" />
            int  hprest   = v["hprest"]._int;
            uint frm_iid  = v["frm_iid"]._uint;
            uint skill_id = v["skill_id"]._uint;
            bool stagger  = false;

            if (v.ContainsKey("stagger"))
            {
                stagger = v["stagger"];
            }

            BaseRole toRole = RoleMgr._instance.getRole(to_iid);

            if (isdie)
            {
                if (toRole is P5Assassin)
                {
                    MediaClient.instance.PlaySoundUrl("audio_common_assassin_dead", false, null);
                }
                if (toRole is P2Warrior)
                {
                    MediaClient.instance.PlaySoundUrl("audio_common_warrior_dead", false, null);
                }
                if (toRole is P3Mage)
                {
                    MediaClient.instance.PlaySoundUrl("audio_common_mage_dead", false, null);
                }
            }

            if (toRole == null)
            {
                return;
            }
            BaseRole frm = RoleMgr._instance.getRole(frm_iid);

            //隐身的第一击额外伤害
            if (v.ContainsKey("invisible_first_atk") && frm != null && frm.m_isMain)
            {
                if (v["rune_id"])
                {
                    int runeid     = v["rune_id"];
                    int damage_atk = v["invisible_first_atk"];
                    FightText.play(FightText.IMG_TEXT, toRole.getHeadPos(), damage_atk, false, runeid, null, toRole);
                }
                //FightText.play(FightText.userText, toRole.getHeadPos(), v["invisible_first_atk"]);
                //flytxt.instance.fly("隐身的第一击额外伤害");
                //FightText.play(FightText.IMG_TEXT, role.getHeadPos(), hpchange, false, rune_id);
            }
            //0:未命中 , 1:命中(普通命中) , 2:暴击,3:双倍,4:反射,5:抵消,6:无视防御
            if (frm is MS0000)
            {
                debug.Log("伤害" + skill_id);
            }
            if (v.ContainsKey("hited"))
            {
                if (v.ContainsKey("ignore_defense_damage") && frm != null && frm.m_isMain)
                {
                    doHurt(toRole, frm, damage, isdie, hprest, 6, false, stagger, skill_id);
                    //FightText.play(FightText.IMG_TEXT_2, toRole.getHeadPos(), damage, false, 6,null,toRole);
                }
                else
                {
                    int hited = v["hited"];
                    switch (hited)
                    {
                    case 0:    //未命中
                        if (frm != null && (toRole.m_isMain || frm.m_isMain))
                        {
                            FightText.play(FightText.MISS_TEXT, frm.getHeadPos(), 0, false, -1, null, frm);
                        }
                        break;

                    case 1:    //命中(普通命中)
                        doHurt(toRole, frm, damage, isdie, hprest, 1, false, stagger, skill_id); break;

                    case 2:    //暴击
                        doHurt(toRole, frm, damage, isdie, hprest, 2, false, stagger, skill_id); break;

                    case 3:    //双倍
                        doHurt(toRole, frm, damage, isdie, hprest, 3, false, stagger, skill_id); break;

                    case 4:    //反射
                        if (v["rune_id"] && frm.m_isMain)
                        {
                            int runeid = v["rune_id"];
                            FightText.play(FightText.IMG_TEXT, toRole.getHeadPos(), damage, false, runeid, null, toRole);
                        }
                        else if (v["rune_id"] && toRole.m_isMain)
                        {
                            doHurt(toRole, frm, damage, isdie, hprest, 4, false, stagger, skill_id);
                        }
                        break;

                    case 5:    //抵消
                        doHurt(toRole, frm, damage, isdie, hprest, 5, false, stagger, skill_id); break;
                    }
                }
            }
            else
            {
                doHurt(toRole, frm, damage, isdie, hprest, -1, true, stagger);
            }

            if (toRole.m_isMain)
            {
                //重置护盾充能时间
                hudunModel.isNoAttack = false;
                if (a3_herohead.instance != null)
                {
                    a3_herohead.instance.wait_attack(hudunModel.noAttackTime);
                }
                if (frm is ProfessionRole)
                {//屏幕受攻击预警
                    if (a3_lowblood.instance != null)
                    {
                        a3_lowblood.instance.begin();
                    }
                }
                if (a3_insideui_fb.instance != null && PlayerModel.getInstance().inFb)
                {
                    a3_insideui_fb.instance.Cancel();
                }
            }
            if (PlayerModel.getInstance().treasure_num > 0)
            {
                if (frm is ProfessionRole && toRole.m_isMain)
                {
                    FindBestoModel.getInstance().Canfly = false;
                    if (a3_herohead.instance != null)
                    {
                        a3_herohead.instance.wait_attack_baotu(FindBestoModel.getInstance().waitTime);
                    }
                }
            }
            if (v.ContainsKey("dmg_shield"))
            {
                //pvp盾受到的伤害
                FightText.play(FightText.SHEILD_TEXT, toRole.getHeadPos(), v["dmg_shield"], false, -1, null, toRole);
                onShield(toRole);
            }

            if (v.ContainsKey("holy_shield"))
            {
                //剩余pvp盾值
                if (toRole.m_isMain)
                {
                    hudunModel.NowCount = v["holy_shield"];
                }
                if (v["holy_shield"] <= 0)
                {
                    //dispatchEvent(GameEvent.Create(EVENT_SHIELD_LOST, this, null));
                    onShieldLost(toRole);
                }
            }
        }
        void onmoneyclick(GameObject go)
        {
            if (!FindBestoModel.getInstance().Canfly) //宝图活动战斗状态禁止传送
            {
                flytxt.instance.fly(FindBestoModel.getInstance().nofly_txt);
                InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
                InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP_SUB);
                return;
            }
            if (PlayerModel.getInstance().money < needMoney)
            {
                flytxt.instance.fly(ContMgr.getCont("comm_nomoney"));
            }
            else
            {
                float dis = Vector3.Distance(SelfRole._inst.m_curModel.position, new Vector3(xml.getFloat("ux"), SelfRole._inst.m_curModel.position.y, xml.getFloat("uy")));
                //  debug.Log(":::::" + dis);
                toid = id;
                if (mapid == GRMap.instance.m_nCurMapID && dis < AREA)
                {
                    GameObject goeff = GameObject.Instantiate(worldmap.EFFECT_CHUANSONG1) as GameObject;
                    goeff.transform.SetParent(SelfRole._inst.m_curModel, false);
                    MsgBoxMgr.getInstance().showConfirm(ContMgr.getCont("worldmap_tooclose"), () =>
                    {
                        cd.updateHandle = onCD;
                        cd.show(() =>
                        {
                            MapProxy.getInstance().sendBeginChangeMap(toid, true);
                        }, 2.8f, false,
                                () =>
                        {
                            Destroy(goeff);
                        }
                                );
                        InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
                        InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP_SUB);
                        if (a3_active.onshow)
                        {
                            InterfaceMgr.getInstance().close(InterfaceMgr.A3_ACTIVE);
                        }
                    });
                }
                else
                {
                    cd.updateHandle = onCD;
                    GameObject goeff = GameObject.Instantiate(worldmap.EFFECT_CHUANSONG1) as GameObject;
                    goeff.transform.SetParent(SelfRole._inst.m_curModel, false);
                    cd.show(() =>
                    {
                        MapProxy.getInstance().sendBeginChangeMap(toid, true);
                    }, 2.8f, false,
                            () =>
                    {
                        Destroy(goeff);
                    }
                            );

                    InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
                    InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP_SUB);
                    if (a3_active.onshow)
                    {
                        InterfaceMgr.getInstance().close(InterfaceMgr.A3_ACTIVE);
                    }
                }
            }



            //InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP);
            //InterfaceMgr.getInstance().close(InterfaceMgr.WORLD_MAP_SUB);
        }