/********************************************************************
日期: 2014/03/01
文件: Obj_MainPlayer_Auto.cs
路径: D:\work\code\mldj\Version\Main\Project\Client\Assets\MLDJ\Script\Obj\Obj_MainPlayer_Auto.cs
作者: YangXin
描述: 人物挂机
修改:
*********************************************************************/
using System;
using System.Collections;
using UnityEngine;
using Games.GlobeDefine;
using System.Collections.Generic;
using Games.Item;
using GCGame.Table;
using UnityEngine.Events;
namespace Games.LogicObj
{
public partial class Obj_MainPlayer
{
public const float autoCombatRecoverDelay = 10f;
public bool isAutoCombat
{
get { return _isAutoCombat; }
set
{
if (_isAutoCombat != value)
{
_isAutoCombat = value;
if (ChatFrameLogic.Instance() != null)
ChatFrameLogic.Instance().UpdateAutoFightBtnState();
}
}
}
private bool _isAutoCombat;
// 在这个时间后,恢复自动战斗
private float _autoCombatRecovery = -1f;
// 注:临时使用这个接口,作为打断任意自动行为的接口
public void BreakAutoCombatState()
{
if (isAutoCombat)
{
var willRecover = GameManager.gameManager.ActiveScene.IsCopyScene()
&& ChatFrameLogic.AllowAutoFight();
if (willRecover)
{
var sceneDefine = (GameDefine_Globe.SCENE_DEFINE) GameManager.gameManager.RunningScene;
willRecover = sceneDefine != GameDefine_Globe.SCENE_DEFINE.SCENE_GUILD
&& sceneDefine != GameDefine_Globe.SCENE_DEFINE.SCENE_GUAJI;
}
if (willRecover)
{
isAutoCombat = false;
_autoCombatRecovery = Time.unscaledTime + autoCombatRecoverDelay;
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42103}"));
}
else
LeveAutoCombat();
}
else if (_autoCombatRecovery > 0f)
_autoCombatRecovery = Time.unscaledTime + autoCombatRecoverDelay;
}
public bool GetAutoCombatState()
{
if (Controller)
{
return Controller.CombatFlag;
}
return false;
}
///
/// 延迟1秒进入自动战斗
///
// 主要用于进入副本,自动切入的情况
// 只有进入地图开始一帧会调用,性能需求低
public void EnterAutoCombatAfterLoading()
{
if (LoadingWindow._IsLoadingScene)
StartCoroutine(AfterLoadingCoroutine(EnterAutoCombat));
else
EnterAutoCombat();
}
IEnumerator AfterLoadingCoroutine(UnityAction action)
{
while (LoadingWindow._IsLoadingScene)
yield return null;
action();
}
public void EnterAutoCombat()
{
if (Controller)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42101}"));
Controller.EnterCombat();
isAutoCombat = true;
_autoCombatRecovery = -1f;
UpdateSellItem(); //自动卖药
LockJoyStick();
GameManager.gameManager.AutoSearch.Stop();
BreakMeditate();
}
}
public void BreakMeditate()
{
if (MeditateProgress.Instance && MeditateProgress.Instance.isActiveAndEnabled)
UIManager.CloseUI(UIInfo.MeditateProgress);
if (Singleton.Instance.MainPlayer
&& Singleton.Instance.MainPlayer.CurObjAnimState == GameDefine_Globe.OBJ_ANIMSTATE.STATE_FINSH)
{
Singleton.Instance.MainPlayer.OnSwithObjAnimState(GameDefine_Globe.OBJ_ANIMSTATE.STATE_NORMOR);
}
}
public void LeveAutoCombat()
{
_autoCombatRecovery = -1f;
if (isAutoCombat)
{
if (Controller)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42102}"));
Controller.LeaveCombat();
isAutoCombat = false;
// 取消自动战斗期间推送的移动和PendingSkill
if (!_isAutoCombat)
{
if (MovementState == MoveState.MainPlayMove)
StopMove();
CleanPendingSkill();
}
}
var autoAttack =
CommonUtility.IsAutoCombatCopyScene(GameManager.gameManager.PlayerDataPool.EnterSceneCache
.EnterCopySceneID);
// 非自动战斗副本中,队长解除自动战斗,会修改其他队员的状态
if (!autoAttack && GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain())
TeamLeaderEndCombat();
}
}
//拾取物品,按品质算的,以位记录AUTOCOMBAT_PICKUP_TYPE
protected int m_nAutoPickUp = 0;
public int AutoPickUp
{
get { return m_nAutoPickUp; }
set { m_nAutoPickUp = value; }
}
public void SetAutoPickUpFlag(int nIdx, bool bFlag)
{
if (nIdx >= 0 && nIdx < 32)
{
if (bFlag == true)
{
m_nAutoPickUp |= 0x01 << nIdx;
}
else
{
m_nAutoPickUp &= ~(0x01 << nIdx);
}
}
}
public bool GetAutoPickUpFlag(int nIdx)
{
if (nIdx >= 0 && nIdx < 32)
{
return ((m_nAutoPickUp&(0x01 << nIdx)) > 0);
}
return false;
}
//自动组队
protected bool m_bAutoInviteTeamAccept = false;
public bool AutoInviteTeamAccept
{
get { return m_bAutoInviteTeamAccept; }
set { m_bAutoInviteTeamAccept = value; }
}
//自动组队
protected bool m_bAutoJoinTeamAccept = false;
public bool AutoJoinTeamAccept
{
get { return m_bAutoJoinTeamAccept; }
set { m_bAutoJoinTeamAccept = value; }
}
protected UInt64 m_nAutoEquipGuid = GlobeVar.INVALID_GUID;
public UInt64 AutoEquipGuid
{
get { return m_nAutoEquipGuid; }
set { m_nAutoEquipGuid = value; }
}
//公告控制
protected int m_nAutoNotice = 0;
public int AutoNotice
{
get { return m_nAutoNotice; }
set { m_nAutoNotice = value; }
}
private int m_nAutoMovetoQGPointId =-1; //需要自动走到的轻功点ID
public int AutoMovetoQGPointId
{
get { return m_nAutoMovetoQGPointId; }
set { m_nAutoMovetoQGPointId = value; }
}
public UInt64 HpDrugGUID
{
get { return GameManager.gameManager.PlayerDataPool.HpDrugGUID; }
set { GameManager.gameManager.PlayerDataPool.HpDrugGUID = value; }
}
private UInt64 m_nMpDrugGUID = GlobeVar.INVALID_GUID; //魔药位置
public UInt64 MpDrugGUID
{
get { return GameManager.gameManager.PlayerDataPool.MpDrugGUID; }
set { GameManager.gameManager.PlayerDataPool.MpDrugGUID = value; }
}
//private Vector3 m_AutoFightPointVec;
//public UnityEngine.Vector3 AutoFightPointVec
//{
// get { return m_AutoFightPointVec; }
// set { m_AutoFightPointVec = value; }
//}
public void InitAutoInfo()
{
//先初始化
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP1, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP2, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP3, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP4, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP5, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_STUFF, false);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_OTHER, false);
//读取注册表
Dictionary curPlayerAutoList = UserConfigData.GetPlayerAutoList();
UInt64 PlayerGuid = PlayerPreferenceData.LastRoleGUID;
if (curPlayerAutoList.ContainsKey(PlayerGuid.ToString()))
{
PlayerAuto oPlayerAuto = curPlayerAutoList[PlayerGuid.ToString()];
if (oPlayerAuto != null)
{
//AutoComabat = oPlayerAuto.AutoFightOpenToggle == 1? true : false;
AutoPickUp = oPlayerAuto.AutoPickUp;
AutoInviteTeamAccept = oPlayerAuto.AutoInviteTeamAccept == 1? true : false;
AutoJoinTeamAccept = oPlayerAuto.AutoJoinTeamAccept == 1 ? true : false;
//AutoRadius = oPlayerAuto.AutoRadius;
AutoNotice = oPlayerAuto.AutoNotice;
AutoEquipGuid = oPlayerAuto.AutoEquipGuid;
//m_AutoSelSkillID = oPlayerAuto.AutoSkillID;
//UpdateSelectDrug();
}
}
if (null != FunctionButtonLogic.Instance())
{
FunctionButtonLogic.Instance().UpdateAutoFightBtnState();
}
m_nCopySceneExitTime = -1;
}
public void UpdateSelectDrug()
{
//GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
//GameItem eItem = BackPack.GetItemByGuid(HpDrugGUID);
////if (AutoIsSelectDrug == false) 永远可以自动选择药
//{
// //做自动选药处理
// bool isFind = false;
// if (eItem == null || (eItem != null && eItem.IsValid() == false) || AutoIsSelectDrug == false)
// {
// //优先选择选择过的药品类型
// if (AutoIsSelectDrug == true)
// {
// if (AutoIsSelectDrug == true)
// {
// if (BackPack.GetItemCountByDataId(AutoHpID) > 0)
// {
// HpDrugGUID = BackPack.GetItemGuidByDataID(AutoHpID);
// isFind = true;
// }
// }
// }
// if (!isFind)
// {
// for (int i = (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_END_DYHP; i >= (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_START_DYHP; --i)
// {
// Tab_CommonItem commonItem = TableManager.GetCommonItemByID(i, 0);
// if (commonItem != null)
// {
// if (BaseAttr.Level >= commonItem.MinLevelRequire)
// {
// for (int index = 0; index < BackPack.ContainerSize; ++index)
// {
// GameItem eItemEx = BackPack.GetItem(index);
// if (eItemEx != null && eItemEx.DataID == i) //身上有这个药
// {
// AutoHpID = i;
// HpDrugGUID = BackPack.GetItemGuidByDataID(AutoHpID);
// isFind = true;
// break;
// }
// }
// if (isFind)
// {
// break;
// }
// }
// }
// }
// }
// if (!isFind)
// {
// for (int i = (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_END_HP; i >= (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_START_HP; --i)
// {
// Tab_CommonItem commonItem = TableManager.GetCommonItemByID(i, 0);
// if (commonItem != null)
// {
// if (BaseAttr.Level >= commonItem.MinLevelRequire)
// {
// for (int index = 0; index < BackPack.ContainerSize; ++index)
// {
// GameItem eItemEx = BackPack.GetItem(index);
// if (eItemEx != null && eItemEx.DataID == i) //身上有这个药
// {
// AutoHpID = i;
// HpDrugGUID = BackPack.GetItemGuidByDataID(AutoHpID);
// isFind = true;
// break;
// }
// }
// if (isFind)
// {
// break;
// }
// }
// }
// }
// }
// }
// eItem = BackPack.GetItemByGuid(MpDrugGUID);
// if (eItem == null || (eItem != null && eItem.IsValid() == false) || AutoIsSelectDrug == false)
// {
// isFind = false;
// //优先选择选择过的药品类型
// if (AutoIsSelectDrug == true)
// {
// if (BackPack.GetItemCountByDataId(AutoMpID) > 0)
// {
// MpDrugGUID = BackPack.GetItemGuidByDataID(AutoMpID);
// isFind = true;
// }
// }
// if (!isFind)
// {
// for (int i = (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_END_DYMP; i >= (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_START_DYMP; --i)
// {
// Tab_CommonItem commonItem = TableManager.GetCommonItemByID(i, 0);
// if (commonItem != null)
// {
// if (BaseAttr.Level >= commonItem.MinLevelRequire)
// {
// for (int index = 0; index < BackPack.ContainerSize; ++index)
// {
// GameItem eItemEx = BackPack.GetItem(index);
// if (eItemEx != null && eItemEx.DataID == i) //身上有这个药
// {
// AutoMpID = i;
// MpDrugGUID = BackPack.GetItemGuidByDataID(AutoMpID);
// isFind = true;
// break;
// }
// }
// if (isFind)
// {
// break;
// }
// }
// }
// }
// }
// if (!isFind)
// {
// for (int i = (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_END_MP; i >= (int)GameDefine_Globe.AUTOCOMBAT_DRUG_ID.AUTO_DRUG_START_MP; --i)
// {
// Tab_CommonItem commonItem = TableManager.GetCommonItemByID(i, 0);
// if (commonItem != null)
// {
// if (BaseAttr.Level >= commonItem.MinLevelRequire)
// {
// for (int index = 0; index < BackPack.ContainerSize; ++index)
// {
// GameItem eItemEx = BackPack.GetItem(index);
// if (eItemEx != null && eItemEx.DataID == i) //身上有这个药
// {
// AutoMpID = i;
// MpDrugGUID = BackPack.GetItemGuidByDataID(AutoMpID);
// isFind = true;
// break;
// }
// }
// if (isFind)
// {
// break;
// }
// }
// }
// }
// }
// }
//}
}
private int m_nCopySceneExitTime = -1;
public int ExitTime
{
get { return m_nCopySceneExitTime; }
set { m_nCopySceneExitTime = value; }
}
public float m_fAutoTimeSecond = 0;
public void UpdateAuto()
{
float ftimeSec = Time.realtimeSinceStartup;
int nTimeData = (int)(ftimeSec - m_fAutoTimeSecond);
if (nTimeData > 0)
{
m_fAutoTimeSecond = ftimeSec;
if (ExitTime > 0)
{
ExitTime = ExitTime - nTimeData;
if (ExitTime <= 0)
{
if (GameManager.gameManager.PlayerDataPool.CopySceneChange) //正在传送中
{
return;
}
GameManager.gameManager.PlayerDataPool.CopySceneChange = true;
AskLeaveCopy();
}
else
{
SendNoticMsg(false, "#{2227}", ExitTime);
}
}
if (GameManager.gameManager.PlayerDataPool.HpItemCDTime > 0)
{
GameManager.gameManager.PlayerDataPool.HpItemCDTime = GameManager.gameManager.PlayerDataPool.HpItemCDTime - nTimeData * 1000.0f;
if (GameManager.gameManager.PlayerDataPool.HpItemCDTime < 0) GameManager.gameManager.PlayerDataPool.HpItemCDTime = 0;
}
if (GameManager.gameManager.PlayerDataPool.MpItemCDTime > 0)
{
GameManager.gameManager.PlayerDataPool.MpItemCDTime = GameManager.gameManager.PlayerDataPool.MpItemCDTime - nTimeData * 1000.0f;
if (GameManager.gameManager.PlayerDataPool.MpItemCDTime < 0) GameManager.gameManager.PlayerDataPool.MpItemCDTime = 0;
}
}
}
public void UpdateAutoCombatBreakState()
{
if (!isAutoCombat && _autoCombatRecovery > 0f)
{
// Hack:自动战斗中走路不修改AutoCombat标志位,修改BreakAutoCombatTime不影响实际表现
if (MovementState == MoveState.MainPlayMove ||
MovementState == MoveState.Move)
_autoCombatRecovery = Time.unscaledTime + autoCombatRecoverDelay;
//空闲10s后 自动进入挂机状态
else
{
if (Time.unscaledTime > _autoCombatRecovery)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42100}"));
isAutoCombat = true;
}
}
}
}
public void ServerAutoInfo()
{
//List curList = new List();
//PlayerAuto AutoData = new PlayerAuto(AutoPickUp,
// AutoInviteTeamAccept,
// AutoJoinTeamAccept,
// (int)(AutoHpPercent * 100),
// (int)(AutoMpPercent * 100),
// AutoBuyDrug,
// AutoNotice,
// AutoHpID,
// AutoMpID,
// AutoIsSelectDrug,
// AutoEquipGuid);
//UserConfigData.AddPlayerAuto(GUID.ToString(), AutoData);
}
// 自动吃药
public bool AutoPercent(int nType)
{
Tab_SceneClass sceneClass = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0);
if(sceneClass != null)
{
if(sceneClass.CanUseMedic != 1)
{
return false;
}
}
var autoMedicInfo = GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.PlayerCustomData.autoMedicInfo;
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
var AutoHpID = -1;
if (autoMedicInfo != null
&& autoMedicInfo.autoHpIdList!= null
&& autoMedicInfo.autoHpIdList.Count > 0)
{
for(int index = 0; index < autoMedicInfo.autoHpIdList.Count; index++)
{
if(backPack.GetItemCountByDataId(autoMedicInfo.autoHpIdList[index]) > 0)
{
AutoHpID = autoMedicInfo.autoHpIdList[index];
break;
}
}
}
var AutoMpID = -1;
if (autoMedicInfo != null
&& autoMedicInfo.autoMpIdList != null
&& autoMedicInfo.autoMpIdList.Count > 0)
{
for (int index = 0; index < autoMedicInfo.autoMpIdList.Count; index++)
{
if (backPack.GetItemCountByDataId(autoMedicInfo.autoMpIdList[index]) > 0)
{
AutoMpID = autoMedicInfo.autoMpIdList[index];
break;
}
}
}
if(AutoHpID == -1 && AutoMpID == -1)
{
if (PlayerFrameLogic.Instance())
PlayerFrameLogic.Instance().ShowLackAutoMedicItemBuff(true);
}else
{
if (PlayerFrameLogic.Instance())
PlayerFrameLogic.Instance().ShowLackAutoMedicItemBuff(false);
}
bool bSucceed = false;
if(nType == (int)MedicSubClass.HP_DY)
{
if (!GlobalData.CanUseMedicItem(AutoHpID))
{
return bSucceed;
}
}
if (nType == (int)MedicSubClass.MP_DY)
{
if (!GlobalData.CanUseMedicItem(AutoMpID))
{
return bSucceed;
}
}
if (nType == (int)MedicSubClass.HP_DY)
{
if (autoMedicInfo.isAutoHpOn == 1 ? false : true)
{
return bSucceed;
}
}
if(nType == (int)MedicSubClass.MP_DY)
{
if (autoMedicInfo.isAutoMpOn == 1 ? false : true)
{
return bSucceed;
}
}
if (nType != (int)MedicSubClass.HP_DY && nType != (int)MedicSubClass.MP_DY)
{
return false;
}
GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
GameItem eItem = null;
if (nType == (int)MedicSubClass.HP_DY)
{
eItem = BackPack.GetItemByDataID(AutoHpID);
}
else if (nType == (int)MedicSubClass.MP_DY)
{
eItem = BackPack.GetItemByDataID(AutoMpID);
}
if (eItem != null && eItem.IsValid())
{
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(eItem.DataID, 0);
if (commonItem != null && commonItem.ClassID == (int)ItemClass.MEDIC && (commonItem.SubClassID == (int)MedicSubClass.HP_DY || commonItem.SubClassID == (int)MedicSubClass.MP_DY))
{
bSucceed = true;
AutoUseDrug(eItem);
}
}
return bSucceed;
}
public bool AutoUseDrug(GameItem item)
{
if (null == item)
return false;
if(ItemCDInfoCtr.GetItemCDRemainTime(item.DataID) > 0)
{
return false;
}
Tab_CommonItem tabItem = TableManager.GetCommonItemByID(item.DataID, 0);
if (null != tabItem)
{
int canuse = tabItem.CanUse;
if (canuse == 1)
{
CG_USE_ITEM useitem = (CG_USE_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_USE_ITEM);
useitem.SetItemguid(item.Guid);
useitem.SendPacket();
return true;
}
}
return false;
}
// 自动买药
public bool OnAutoBuyDrug(int nId)
{
bool IsBuy = false;
int ShopId = 3;
int itemIdex = -1;
Tab_SystemShop curShop = TableManager.GetSystemShopByID(ShopId, 0);
if (curShop != null)
{
for (int i = 0; i < curShop.Pnum; i++)
{
if (nId == curShop.GetPidbyIndex(i))
{
IsBuy = true;
itemIdex = i;
break;
}
}
if (IsBuy) //可以买
{
CG_SYSTEMSHOP_BUY buyPacket = (CG_SYSTEMSHOP_BUY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_SYSTEMSHOP_BUY);
buyPacket.SetBuyNum(1);
buyPacket.SetShopId(ShopId);
buyPacket.SetMercIndex(itemIdex);
buyPacket.SendPacket();
}
}
return true;
}
//////////////////////////////////////////////////////////////////////////
//系统设置
// protected int m_nSystemNameBoard = 0; //名字板
// public int SystemNameBoard
// {
// get { return m_nSystemNameBoard; }
// set { m_nSystemNameBoard = value; }
// }
// protected int m_nSystemMusic = 0; //声音
// public int SystemMusic
// {
// get { return m_nSystemMusic; }
// set { m_nSystemMusic = value; }
// }
// protected int m_nSystemSoundEffect = 0; //声效
// public int SystemSoundEffect
// {
// get { return m_nSystemSoundEffect; }
// set { m_nSystemSoundEffect = value; }
// }
// protected int m_nTableau = 0; //图像
// public int SystemTableau
// {
// get { return m_nTableau; }
// set { m_nTableau = value; }
// }
// public void InitSystemInfo()
// {
// SystemNameBoard = PlayerPreferenceData.SystemNameBoard;
// SystemMusic = PlayerPreferenceData.SystemMusic;
// SystemSoundEffect = PlayerPreferenceData.SystemSoundEffect;
// SystemTableau = PlayerPreferenceData.SystemTableau;
//
// GameManager.gameManager.SoundManager.EnableBGM = !(SystemMusic == 1 ? true : false);
// GameManager.gameManager.SoundManager.EnableSFX = !(SystemSoundEffect == 1 ? true : false);
//
//
public void AutoFightInYanziwu()
{
Vector3 targetPos = new Vector3();
GameObject[] m_QinggongList = GameManager.gameManager.ActiveScene.QingGongPointList;
if (m_QinggongList.Length < 0 || m_QinggongList.Length > 3)
{
return;
}
Vector2[] PointVector2 = new Vector2[3];
PointVector2[0] = new Vector2(56.2f, 27.4f); //轻功点1 起跳点
PointVector2[2] = new Vector2(41.5f, 50.9f);//轻功点2 起跳点
PointVector2[1] = new Vector2(3.8f, 41.7f);//轻功点3 起跳点
if (m_QinggongList[1].activeInHierarchy) //轻功点3开启表示 向区域四中心移动
{
targetPos.x = 18.5f;
targetPos.z = 19.6f;
}
else if (m_QinggongList[2].activeInHierarchy) //轻功点2 向区域三中心移动
{
targetPos.x = 17.8f;
targetPos.z = 51.2f;
}
else if (m_QinggongList[0].activeInHierarchy) //轻功点1 向区域二中心移动
{
targetPos.x = 54.5f;
targetPos.z = 47.2f;
}
else //向区域一中心移动
{
targetPos.x = 55.0f;
targetPos.z = 17.0f;
}
//Vector3 _vec3Tar = new Vector3(targetPos.x, Position.y, targetPos.z);
//float fDis = Vector3.Distance(_vec3Tar, Position);
//if (fDis > 16) //距离目标中心点过远 则改为向最近开启过的轻功点移动
//{
// float fMinDis = 9999999.0f;
// int nSelePointId = -1;
// float fPointDis = -1;
// for (int i = 0; i < m_QinggongList.Length; i++)
// {
// if (m_QinggongList[i].activeInHierarchy)
// {
// if (Position.z > PointVector2[i].y)
// {
// continue; //不往回走
// }
// fPointDis = Vector3.Distance(new Vector3(PointVector2[i].x, Position.y, PointVector2[i].y), Position);
// if (fPointDis < fMinDis)
// {
// fMinDis = fPointDis;
// targetPos.x = PointVector2[i].x;
// targetPos.z = PointVector2[i].y;
// }
// }
// }
//}
AutoSearchPoint point = new AutoSearchPoint(GameManager.gameManager.RunningScene, targetPos.x, targetPos.z);
if (GameManager.gameManager && GameManager.gameManager.AutoSearch)
{
BreakAutoCombatState();
GameManager.gameManager.AutoSearch.BuildPath(point);
}
}
public void UpdateSellItem()
{
if (BaseAttr.Level < GlobeVar.MAX_AUTOEQUIT_LIVE)
{
return;
}
if (!isAutoCombat)
return;
GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
List selllist = new List();
for (int index = 0; index < BackPack.ContainerSize; ++index)
{
GameItem eItem = BackPack.GetItem(index);
if (eItem!= null) //身上有这个药
{
Tab_CommonItem line = TableManager.GetCommonItemByID(eItem.DataID, 0);
if (line != null)
{
//计算品级及拾取规则
if (line.ClassID == (int)ItemClass.EQUIP && GetAutoPickUpFlag(line.Quality)
/* && eItem.EnchanceLevel <= 0 && eItem.EnchanceExp <= 0 && eItem.StarLevel <= 0*/
&& AutoEquipGuid != GlobeVar.INVALID_GUID)
{
selllist.Add(eItem.Guid);
}
}
}
}
//做自动强化物品
//if (selllist.Count > 0)
//{
// //SysShopController.SellItem((int)GameItemContainer.Type.TYPE_BACKPACK, selllist);
// CG_EQUIP_ENCHANCE equipEnchance = (CG_EQUIP_ENCHANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_EQUIP_ENCHANCE);
// //发送消息包
// equipEnchance.SetPacktype(1);
// equipEnchance.SetEquipguid(AutoEquipGuid);
// equipEnchance.SendPacket();
//}
}
public void UpdateSellItem(int index)
{
if (BaseAttr.Level < GlobeVar.MAX_AUTOEQUIT_LIVE)
{
return;
}
if (!isAutoCombat)
return;
GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
//List selllist = new List();
//做自动强化物品
GameItem eItem = BackPack.GetItem(index);
if (eItem != null) //身上有这个药
{
Tab_CommonItem line = TableManager.GetCommonItemByID(eItem.DataID, 0);
if (line != null)
{
//计算品级及拾取规则
if (line.ClassID == (int)ItemClass.EQUIP && GetAutoPickUpFlag(line.Quality)
/* && eItem.EnchanceLevel <= 0 && eItem.EnchanceExp <= 0 && eItem.StarLevel <= 0*/
&& AutoEquipGuid != GlobeVar.INVALID_GUID)
{
//selllist.Add(eItem.Guid);
//CG_EQUIP_ENCHANCE equipEnchance = (CG_EQUIP_ENCHANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_EQUIP_ENCHANCE);
//equipEnchance.SetPacktype(1);
//equipEnchance.SetEquipguid(AutoEquipGuid);
//equipEnchance.SendPacket();
}
}
}
// if (selllist.Count > 0)
// {
// SysShopController.SellItem((int)GameItemContainer.Type.TYPE_BACKPACK, selllist);
// }
}
public void UpdateSelectEquip()
{
if (AutoEquipGuid == GlobeVar.INVALID_GUID)
{
GameItemContainer EquipPack = GameManager.gameManager.PlayerDataPool.EquipPack;
if (EquipPack != null)
{
for (int index = 0; index < EquipPack.ContainerSize; index++)
{
GameItem equip = EquipPack.GetItem(index);
if (equip != null && equip.IsValid() && equip.IsBelt() == false)
{
AutoEquipGuid = equip.Guid;
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP1, true);
SetAutoPickUpFlag((int)GameDefine_Globe.AUTOCOMBAT_PICKUP_TYPE.PICKUP_EQUIP2, true);
ServerAutoInfo();
UpdateSellItem();
return;
}
}
}
}
}
public bool IsAutoSellItem(int nDataId)
{
if (!isAutoCombat)
return false;
Tab_CommonItem line = TableManager.GetCommonItemByID(nDataId, 0);
if (line != null)
{
//计算品级及拾取规则
if ( line.ClassID == (int)ItemClass.EQUIP
&& GetAutoPickUpFlag(line.Quality) )
{
return true;
}
}
return false;
}
private int m_nAutoSceneId = -1;
private Vector3 m_AutoPos = new Vector3(0, 0, 0);
public void UpdateAutoAnteMortem()
{
if (!isAutoCombat)
return ;
if (IsDie())
{
m_nAutoSceneId = GameManager.gameManager.RunningScene;
m_AutoPos = m_ObjTransform.position;
}
else
{
if (m_nAutoSceneId == GameManager.gameManager.RunningScene)
{
AutoSearchPoint point = new AutoSearchPoint(m_nAutoSceneId, m_AutoPos.x, m_AutoPos.z);
if (GameManager.gameManager && GameManager.gameManager.AutoSearch)
{
GameManager.gameManager.AutoSearch.BuildPath(point);
}
}
}
}
}
}