fix: update logic cmd cache.
This commit is contained in:
@@ -63,98 +63,210 @@ namespace BrewMonster.Common
|
||||
// 'Pickup item' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(500);
|
||||
m_CounterMap[(int)CommandID.PICKUP] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.PICKUP))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.PICKUP] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.PICKUP, pCnt);
|
||||
}
|
||||
|
||||
// 'Select target' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(250);
|
||||
m_CounterMap[(int)CommandID.SELECT_TARGET] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.SELECT_TARGET))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.SELECT_TARGET] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.SELECT_TARGET, pCnt);
|
||||
}
|
||||
|
||||
// 'Get extend properties' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.GET_EXT_PROP] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.GET_EXT_PROP))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.GET_EXT_PROP] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.GET_EXT_PROP, pCnt);
|
||||
}
|
||||
|
||||
// 'Cast skill' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(200);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.CAST_SKILL] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.CAST_SKILL))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.CAST_SKILL] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.CAST_SKILL, pCnt);
|
||||
}
|
||||
|
||||
// 'Revive ask' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(500);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.REVIVE_VILLAGE] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.REVIVE_VILLAGE))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.REVIVE_VILLAGE] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.REVIVE_VILLAGE, pCnt);
|
||||
}
|
||||
|
||||
// 'Enter sanctuary' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
m_CounterMap[(int)CommandID.ENTER_SANCTUARY] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.ENTER_SANCTUARY))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.ENTER_SANCTUARY] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.ENTER_SANCTUARY, pCnt);
|
||||
}
|
||||
|
||||
// 'Enter instance' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.ENTER_INSTANCE] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.ENTER_INSTANCE))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.ENTER_INSTANCE] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.ENTER_INSTANCE, pCnt);
|
||||
}
|
||||
|
||||
// 'Rush fly' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(500);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.ACTIVE_RUSH_FLY] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.ACTIVE_RUSH_FLY))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.ACTIVE_RUSH_FLY] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.ACTIVE_RUSH_FLY, pCnt);
|
||||
}
|
||||
|
||||
// 'Cancel action' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(200);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.CANCEL_ACTION] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.CANCEL_ACTION))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.CANCEL_ACTION] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.CANCEL_ACTION, pCnt);
|
||||
}
|
||||
|
||||
// 'Control pet' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(400);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.PET_CTRL] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.PET_CTRL))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.PET_CTRL] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.PET_CTRL, pCnt);
|
||||
}
|
||||
|
||||
// 'Hello' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.SEVNPC_HELLO] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.SEVNPC_HELLO))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.SEVNPC_HELLO] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.SEVNPC_HELLO, pCnt);
|
||||
}
|
||||
|
||||
// 'Present' command time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(1000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap[(int)CommandID.PLAYER_GIVE_PRESENT] = pCnt;
|
||||
if (m_CounterMap.ContainsKey((int)CommandID.PLAYER_GIVE_PRESENT))
|
||||
{
|
||||
m_CounterMap[(int)CommandID.PLAYER_GIVE_PRESENT] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap.Add((int)CommandID.PLAYER_GIVE_PRESENT, pCnt);
|
||||
}
|
||||
|
||||
// 'GetPlayerBriefInfo' time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_GETPLAYERBRIEFINFO] = pCnt;
|
||||
if (m_CounterMap2.ContainsKey((int)ProtocolType.PROTOCOL_GETPLAYERBRIEFINFO))
|
||||
{
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_GETPLAYERBRIEFINFO] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap2.Add((int)ProtocolType.PROTOCOL_GETPLAYERBRIEFINFO, pCnt);
|
||||
}
|
||||
|
||||
// 'PlayerBaseInfo' time counter
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(2000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_PLAYERBASEINFO] = pCnt;
|
||||
if (m_CounterMap2.ContainsKey((int)ProtocolType.PROTOCOL_PLAYERBASEINFO))
|
||||
{
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_PLAYERBASEINFO] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap2.Add((int)ProtocolType.PROTOCOL_PLAYERBASEINFO, pCnt);
|
||||
}
|
||||
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(10 * 1000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETMAP] = pCnt;
|
||||
if (m_CounterMap2.ContainsKey((int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETMAP))
|
||||
{
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETMAP] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap2.Add((int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETMAP, pCnt);
|
||||
}
|
||||
|
||||
pCnt = new CECCounter();
|
||||
pCnt.SetPeriod(10 * 1000);
|
||||
pCnt.Reset(true);
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETRECORD] = pCnt;
|
||||
if (m_CounterMap2.ContainsKey((int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETRECORD))
|
||||
{
|
||||
m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETRECORD] = pCnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CounterMap2.Add((int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETRECORD, pCnt);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Remove all un-sent commands in cache
|
||||
void RemoveAllCmds()
|
||||
public void RemoveAllCmds()
|
||||
{
|
||||
m_UseItemCmdList.Clear();
|
||||
|
||||
@@ -180,33 +292,17 @@ namespace BrewMonster.Common
|
||||
}
|
||||
|
||||
// Tick routine
|
||||
bool Tick(float dwDeltaTime)
|
||||
public bool Tick(float dwDeltaTime)
|
||||
{
|
||||
float dwRealTime = Time.realtimeSinceStartup;
|
||||
//{
|
||||
// CounterTable::iterator it = m_CounterMap.begin();
|
||||
// for (; it != m_CounterMap.end(); ++it)
|
||||
// ((CECCounter*)it.second).IncCounter(dwRealTime);
|
||||
|
||||
// for(int i = 0; i < m_CounterMap.Count; i++)
|
||||
// {
|
||||
// m_CounterMap[i].IncCounter(dwRealTime);
|
||||
// }
|
||||
//}
|
||||
//{
|
||||
// CounterTable::iterator it = m_CounterMap2.begin();
|
||||
// for (; it != m_CounterMap2.end(); ++it)
|
||||
// ((CECCounter*)it.second).IncCounter(dwRealTime);
|
||||
|
||||
//}
|
||||
|
||||
for (int i = 0; i < m_CounterMap.Count; i++)
|
||||
foreach (var item in m_CounterMap)
|
||||
{
|
||||
m_CounterMap[i].IncCounter(dwRealTime);
|
||||
item.Value.IncCounter(dwRealTime);
|
||||
}
|
||||
for (int i = 0; i < m_CounterMap2.Count; i++)
|
||||
foreach (var item in m_CounterMap2)
|
||||
{
|
||||
m_CounterMap2[i].IncCounter(dwRealTime);
|
||||
item.Value.IncCounter(dwRealTime);
|
||||
}
|
||||
|
||||
// Try to send 'use item' command in cache
|
||||
@@ -227,10 +323,10 @@ namespace BrewMonster.Common
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.ENTER_SANCTUARY];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
for(int i = 0; i < m_EnterSanctuaryList.Count; i++)
|
||||
for (int i = 0; i < m_EnterSanctuaryList.Count; i++)
|
||||
{
|
||||
int id = m_EnterSanctuaryList[i];
|
||||
UnityGameSession.c2s_SendCmdEnterSanctuary(id);
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdEnterSanctuary(id);
|
||||
}
|
||||
|
||||
m_EnterSanctuaryList.Clear();
|
||||
@@ -252,7 +348,7 @@ namespace BrewMonster.Common
|
||||
|
||||
// Send the first item
|
||||
cmd_use_item Cmd = m_UseItemCmdList[0];
|
||||
UnityGameSession.c2s_SendCmdUseItem(Cmd.where, (byte)Cmd.index, Cmd.item_id, Cmd.byCount);
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdUseItem(Cmd.where, (byte)Cmd.index, Cmd.item_id, Cmd.byCount);
|
||||
m_UseItemCmdList.Clear();
|
||||
}
|
||||
|
||||
@@ -266,7 +362,7 @@ namespace BrewMonster.Common
|
||||
pCnt.Reset();
|
||||
|
||||
m_bGetExpProps = false;
|
||||
UnityGameSession.c2s_SendCmdGetExtProps();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdGetExtProps();
|
||||
}
|
||||
|
||||
// Send cached 'GetPlayerBriefInfo' command
|
||||
@@ -285,7 +381,7 @@ namespace BrewMonster.Common
|
||||
getplayerbriefinfo temp = p;
|
||||
temp.Playerlist.Clear();
|
||||
temp.Playerlist.Add(p.Playerlist[0]);
|
||||
UnityGameSession.SendNetData(temp);
|
||||
UnityGameSession.Instance.GameSession.SendProtocol(temp);
|
||||
|
||||
// 从列表中清除
|
||||
p.Playerlist.Remove(p.Playerlist[0]);
|
||||
@@ -296,7 +392,7 @@ namespace BrewMonster.Common
|
||||
}
|
||||
|
||||
// Remove the cached 'PlayerBaseInfo' request
|
||||
void RemovePlayerBaseInfo(int iRoleID)
|
||||
public void RemovePlayerBaseInfo(int iRoleID)
|
||||
{
|
||||
int pos = m_PlayerBaseInfoList.Find(x => x == iRoleID);
|
||||
if (pos != 0)
|
||||
@@ -315,12 +411,12 @@ namespace BrewMonster.Common
|
||||
pCnt.Reset();
|
||||
|
||||
List<int> aRoles = new List<int>();
|
||||
for(int i = 0; i < m_PlayerBaseInfoList.Count; i++)
|
||||
for (int i = 0; i < m_PlayerBaseInfoList.Count; i++)
|
||||
{
|
||||
aRoles.Add(m_PlayerBaseInfoList[i]);
|
||||
}
|
||||
|
||||
UnityGameSession.GetRoleBaseInfo(aRoles.Count, aRoles);
|
||||
UnityGameSession.Instance.GameSession.GetRoleBaseInfo(aRoles.Count, aRoles);
|
||||
}
|
||||
|
||||
void SendCachedPresentInfo()
|
||||
@@ -332,18 +428,18 @@ namespace BrewMonster.Common
|
||||
pCnt.Reset();
|
||||
|
||||
presentInfo info = m_PresentInfoList[0];
|
||||
UnityGameSession.c2s_SendCmdGivePresent(info.roleid, info.mailid, info.itemid, info.index, info.slot);
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdGivePresent(info.roleid, info.mailid, info.itemid, info.index, info.slot);
|
||||
m_PresentInfoList.Remove(info);
|
||||
}
|
||||
|
||||
// Send commands ...
|
||||
void SendCmdUseItem(byte byPackage, byte bySlot, int tid, byte byCount)
|
||||
public void SendCmdUseItem(byte byPackage, byte bySlot, int tid, byte byCount)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.USE_ITEM];
|
||||
if (m_UseItemCmdList.Count == 0 && pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.c2s_SendCmdUseItem(byPackage, bySlot, tid, byCount);
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdUseItem(byPackage, bySlot, tid, byCount);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -358,7 +454,7 @@ namespace BrewMonster.Common
|
||||
return;
|
||||
}
|
||||
int idx = -1;
|
||||
for(int i = 0; i< m_UseItemCmdList.Count; i++)
|
||||
for (int i = 0; i < m_UseItemCmdList.Count; i++)
|
||||
{
|
||||
Cmd = m_UseItemCmdList[i];
|
||||
|
||||
@@ -382,7 +478,7 @@ namespace BrewMonster.Common
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
if(idx < 0)
|
||||
if (idx < 0)
|
||||
{
|
||||
Cmd = new cmd_use_item();
|
||||
Cmd.where = byPackage;
|
||||
@@ -405,26 +501,241 @@ namespace BrewMonster.Common
|
||||
2. if the item isn't the one which was to be picked up, send command
|
||||
directly.
|
||||
*/
|
||||
void SendCmdPickUp(int idItem, int tid);
|
||||
void SendCmdSelectTarget(int id);
|
||||
void SendCmdExtProps();
|
||||
void SendCmdReviveVillage(int param = 0);
|
||||
void SendCmdReviveItem(int param = 0);
|
||||
void SendCmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int* aTargets);
|
||||
void SendCmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int* aTargets);
|
||||
void SendCmdEnterSanctuary(int id);
|
||||
void SendCmdEnterInstance(int iTransIdx, int idInst);
|
||||
void SendCmdActiveRushFly(bool bActive);
|
||||
void SendCmdCancelAction();
|
||||
void SendCmdPetCtrl(int idTarget, int cmd, void* pParamBuf, int iParamLen);
|
||||
void SendCmdNPCSevHello(int nid);
|
||||
void SendCmdFactionPVPQueryInfo(int idFaction);
|
||||
public void SendCmdPickUp(int idItem, int tid)
|
||||
{
|
||||
//StackChecker::ACTrace(5);
|
||||
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.PICKUP];
|
||||
if (m_idLastPickUpItem != idItem || pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.RequestPickupItem(idItem, tid);
|
||||
m_idLastPickUpItem = idItem;
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'select target' command
|
||||
// The strategy to send 'select target' command is like as SendCmdPickUp()
|
||||
public void SendCmdSelectTarget(int id)
|
||||
{
|
||||
// Set selection first before server returns, so as to reduce the player waiting time.
|
||||
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
|
||||
pHost.SetSelectedTarget(id);
|
||||
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.SELECT_TARGET];
|
||||
if (m_idLastSelTarget != id || pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdSelectTarget(id);
|
||||
m_idLastSelTarget = id;
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'get extend properties' command
|
||||
public void SendCmdExtProps()
|
||||
{
|
||||
// If there is already a request waiting, return directly
|
||||
if (m_bGetExpProps)
|
||||
return;
|
||||
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.GET_EXT_PROP];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdGetExtProps();
|
||||
return;
|
||||
}
|
||||
|
||||
m_bGetExpProps = true;
|
||||
}
|
||||
|
||||
// Send 'revive ask' command
|
||||
public void SendCmdReviveVillage(int param = 0)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.REVIVE_VILLAGE];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.RequestReviveBase(param);
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'revive ask' command
|
||||
public void SendCmdReviveItem(int param = 0)
|
||||
{
|
||||
// This command merge time counter with REVIVE_VILLAGE
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.REVIVE_VILLAGE];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.RequestReviveItem(param);
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'cast skill' command
|
||||
public void SendCmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.CAST_SKILL];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdCastSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'cast instant skill' command
|
||||
public void SendCmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.CAST_SKILL];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdCastInstantSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
}
|
||||
}
|
||||
|
||||
// Send 'enter sanctuary' command
|
||||
void SendCmdEnterSanctuary(int id)
|
||||
{
|
||||
for (int i = 0; i < m_EnterSanctuaryList.Count; i++)
|
||||
{
|
||||
if (m_EnterSanctuaryList[i] == id) return;
|
||||
}
|
||||
|
||||
// Delay this command some time
|
||||
m_bEnterSanctuary = true;
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.ENTER_SANCTUARY];
|
||||
pCnt.Reset();
|
||||
m_EnterSanctuaryList.Add(id);
|
||||
}
|
||||
|
||||
// Send 'enter instance' commnad
|
||||
void SendCmdEnterInstance(int iTransIdx, int idInst)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.ENTER_INSTANCE];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdEnterInstance(iTransIdx, idInst);
|
||||
}
|
||||
}
|
||||
|
||||
void SendCmdActiveRushFly(bool bActive)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.ACTIVE_RUSH_FLY];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdActiveRushFly(bActive);
|
||||
}
|
||||
}
|
||||
|
||||
public void SendCmdCancelAction()
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.CANCEL_ACTION];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdCancelAction();
|
||||
}
|
||||
}
|
||||
void SendCmdPetCtrl(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.PET_CTRL];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdPetCtrl(idTarget, cmd, pParamBuf, iParamLen);
|
||||
}
|
||||
}
|
||||
|
||||
public void SendCmdNPCSevHello(int nid)
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap[(int)CommandID.SEVNPC_HELLO];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdNPCSevHello(nid);
|
||||
}
|
||||
}
|
||||
|
||||
void SendCmdFactionPVPQueryInfo(int idFaction)
|
||||
{
|
||||
int piMax = -1;
|
||||
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
|
||||
if (pHost.GetCoolTime((int)CSNetwork.GPDataType.CoolTimeIndex.GP_CT_QUERY_MAFIA_PVP_INFO, ref piMax) == 0)
|
||||
{
|
||||
UnityGameSession.Instance.GameSession.c2s_SendCmdQueryFactionPVPInfo(idFaction);
|
||||
}
|
||||
}
|
||||
|
||||
// Send protocols ...
|
||||
void SendGetPlayerBriefInfo(int iNumPlayer, int* aIDs, int iReason);
|
||||
void SendGetPlayerBaseInfo(int iNumRole, const int* aRoleIDs);
|
||||
void SendGivePresentProtocol(int roleid, int mailid, int itemid, int index, int slot);
|
||||
void SendFactionPVPGetMap();
|
||||
void SendFactionPVPGetRank();
|
||||
void SendGetPlayerBriefInfo(int iNumPlayer, int[] aIDs, int iReason)
|
||||
{
|
||||
if (iNumPlayer == 0 || aIDs == null || aIDs.Length == 0)
|
||||
return;
|
||||
|
||||
// 1.合并添加到列表
|
||||
getplayerbriefinfo p = new getplayerbriefinfo();
|
||||
p.Roleid = EC_Game.GetGameRun().GetHostPlayer().GetCharacterID();
|
||||
p.Reason = (byte)iReason;
|
||||
for (int i = 0; i < iNumPlayer; ++i)
|
||||
{
|
||||
if (aIDs[i] != 0)
|
||||
p.Playerlist.Add(aIDs[i]);
|
||||
}
|
||||
if (p.Playerlist.Count > 0)
|
||||
m_GetPlayerBriefInfoList.Add(p);
|
||||
|
||||
// 2.检查并发送
|
||||
SendCachedGetPlayerBriefInfo();
|
||||
}
|
||||
|
||||
void SendGetPlayerBaseInfo(int iNumRole, int[] aRoleIDs)
|
||||
{
|
||||
if (iNumRole == 0 || aRoleIDs == null || aRoleIDs.Length == 0)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < iNumRole; i++)
|
||||
{
|
||||
if (aRoleIDs[i] != 0)
|
||||
m_PlayerBaseInfoList.Add(aRoleIDs[i]);
|
||||
}
|
||||
|
||||
SendCachedPlayerBaseInfo();
|
||||
}
|
||||
|
||||
void SendGivePresentProtocol(int roleid, int mailid, int itemid, int index, int slot)
|
||||
{
|
||||
presentInfo info = new presentInfo();
|
||||
info.roleid = roleid;
|
||||
info.mailid = mailid;
|
||||
info.itemid = itemid;
|
||||
info.index = index;
|
||||
info.slot = slot;
|
||||
m_PresentInfoList.Add(info);
|
||||
}
|
||||
void SendFactionPVPGetMap()
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETMAP];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
factionresourcebattlegetmap p = new factionresourcebattlegetmap();
|
||||
p.Roleid = EC_Game.GetGameRun().GetHostPlayer().GetCharacterID();
|
||||
UnityGameSession.Instance.GameSession.SendProtocol(p);
|
||||
}
|
||||
}
|
||||
void SendFactionPVPGetRank()
|
||||
{
|
||||
CECCounter pCnt = m_CounterMap2[(int)ProtocolType.PROTOCOL_FACTIONRESOURCEBATTLEGETRECORD];
|
||||
if (pCnt.IsFull())
|
||||
{
|
||||
pCnt.Reset();
|
||||
factionresourcebattlegetrecord p = new factionresourcebattlegetrecord();
|
||||
p.Roleid = EC_Game.GetGameRun().GetHostPlayer().GetCharacterID();
|
||||
UnityGameSession.Instance.GameSession.SendProtocol(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,6 +509,7 @@ namespace PerfectWorld.Scripts.Managers
|
||||
if (pHost != null && pHost.GetSelectedTarget() == cid)
|
||||
pHost.SelectTarget(0);
|
||||
|
||||
UnityGameSession.Instance.GetC2SCmdCache().RemovePlayerBaseInfo(cid);
|
||||
// Release player resource
|
||||
if (pPlayer != null)
|
||||
{
|
||||
@@ -522,49 +523,6 @@ namespace PerfectWorld.Scripts.Managers
|
||||
}
|
||||
}
|
||||
|
||||
//private cmd_object_move ConvertToStruct(byte[] bytes)
|
||||
//{
|
||||
// if (bytes.Length < Marshal.SizeOf<cmd_object_move>())
|
||||
// {
|
||||
// return default;
|
||||
// }
|
||||
|
||||
// cmd_object_move result = new cmd_object_move();
|
||||
// int preLenghtData = 0;
|
||||
// int lenghtDataType = Marshal.SizeOf<int>();
|
||||
// byte[] arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.id = BitConverter.ToInt32(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// lenghtDataType = Marshal.SizeOf<float>();
|
||||
// arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.dest_X = BitConverter.ToSingle(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// lenghtDataType = Marshal.SizeOf<float>();
|
||||
// arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.dest_Y = BitConverter.ToSingle(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// lenghtDataType = Marshal.SizeOf<float>();
|
||||
// arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.dest_Z = BitConverter.ToSingle(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// lenghtDataType = Marshal.SizeOf<ushort>();
|
||||
// arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.use_time = BitConverter.ToUInt16(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// lenghtDataType = Marshal.SizeOf<short>();
|
||||
// arrByteData = GetBytes(bytes, lenghtDataType, preLenghtData);
|
||||
// result.sSpeed = BitConverter.ToInt16(arrByteData);
|
||||
|
||||
// preLenghtData += lenghtDataType;
|
||||
// result.move_mode = bytes[preLenghtData + 1];
|
||||
// return result;
|
||||
//}
|
||||
|
||||
private byte[] GetBytes(byte[] bytes, int length, int index)
|
||||
{
|
||||
byte[] arrByteData = new byte[length];
|
||||
@@ -596,7 +554,7 @@ namespace PerfectWorld.Scripts.Managers
|
||||
case long value when value == EC_MsgDef.MSG_PM_PLAYERBASEINFO:
|
||||
cid = (int)((playerbaseinfo_re)Msg.dwParam1).Player.id;
|
||||
// Xoá khỏi cache
|
||||
//g_pGame.GetGameSession().GetC2SCmdCache().RemovePlayerBaseInfo(cid);
|
||||
UnityGameSession.Instance.GetC2SCmdCache().RemovePlayerBaseInfo(cid);
|
||||
break;
|
||||
|
||||
/*case long value when value == EC_MsgDef.MSG_PM_PLAYERCUSTOM:
|
||||
|
||||
@@ -1497,6 +1497,59 @@ namespace CSNetwork.S2CCommand
|
||||
{
|
||||
public int id; // self id or pet id.
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_enter_instance
|
||||
{
|
||||
public int iTransIndex;
|
||||
public int idInst;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_active_rush_fly
|
||||
{
|
||||
public int is_active;
|
||||
};
|
||||
|
||||
/* Categories of pet_cmd:
|
||||
pet_cmd = 1 Attack the specified target, requires a valid target.
|
||||
Parameter: char, pvp mask for attack protection status.
|
||||
|
||||
pet_cmd = 2 Change pet follow behavior, target is ignored.
|
||||
Parameter: int
|
||||
0 = follow the player (default)
|
||||
1 = stay at current position
|
||||
When this command is issued, it attempts to interrupt the pet’s current action
|
||||
and perform the newly assigned follow behavior.
|
||||
|
||||
pet_cmd = 3 Change pet combat behavior, target is ignored.
|
||||
Parameter: int
|
||||
0 = Defensive mode — counterattack when hit, and counterattack when the owner is hit
|
||||
(currently not implemented)
|
||||
1 = Aggressive mode — automatically attacks enemies within range
|
||||
2 = Passive mode — will not react unless commanded by the player
|
||||
|
||||
pet_cmd = 4 Request pet to use a skill; target represents the skill’s target.
|
||||
Parameter: int — ID of the skill to use
|
||||
Parameter: char — pvp mask for attack protection status
|
||||
|
||||
pet_cmd = 5 Request pet to auto-cast a skill, target ignored.
|
||||
Parameter: int — ID of the skill to auto-cast
|
||||
if the skill ID is 0, auto-casting is disabled.
|
||||
*/
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_pet_ctrl
|
||||
{
|
||||
public int target; // The target of the operation. If no target is required, set the command’s target to 0.
|
||||
public int pet_cmd; // Control commands for the pet
|
||||
//char buf[]; // Parameters of the pet control commands
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct cmd_query_faction_pvp_info
|
||||
{
|
||||
public int faction_id;
|
||||
};
|
||||
}
|
||||
|
||||
// Player and NPC state
|
||||
@@ -268,29 +268,7 @@ namespace CSNetwork.C2SCommand
|
||||
};
|
||||
return SerializeCommand(CommandID.STOP_MOVE, cmd);
|
||||
}
|
||||
public static Octets CreatePlayerCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
{
|
||||
var cmd = new CMD_CastSkill
|
||||
{
|
||||
skillId = idSkill,
|
||||
pvpMask = byPVPMask,
|
||||
targetCount = (byte)iNumTarget,
|
||||
targets = null
|
||||
};
|
||||
if (iNumTarget > 0)
|
||||
{
|
||||
if (iNumTarget > 0)
|
||||
{
|
||||
cmd.targets = new int[iNumTarget];
|
||||
cmd.targets[0] = aTargets;
|
||||
}
|
||||
}
|
||||
|
||||
var cmdBuf = SerializeCommand(CommandID.CAST_SKILL, cmd);
|
||||
return cmdBuf;
|
||||
}
|
||||
|
||||
public static Octets CreatePlayerCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
public static Octets CreatePlayerCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
var cmd = new CMD_CastSkill
|
||||
{
|
||||
@@ -302,7 +280,32 @@ namespace CSNetwork.C2SCommand
|
||||
if (iNumTarget > 0)
|
||||
{
|
||||
cmd.targets = new int[iNumTarget];
|
||||
cmd.targets[0] = aTargets;
|
||||
for (int i = 0; i < iNumTarget; i++)
|
||||
{
|
||||
cmd.targets[i] = aTargets[i];
|
||||
}
|
||||
}
|
||||
|
||||
var cmdBuf = SerializeCommand(CommandID.CAST_SKILL, cmd);
|
||||
return cmdBuf;
|
||||
}
|
||||
|
||||
public static Octets CreatePlayerCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
var cmd = new CMD_CastSkill
|
||||
{
|
||||
skillId = idSkill,
|
||||
pvpMask = byPVPMask,
|
||||
targetCount = (byte)iNumTarget,
|
||||
targets = null
|
||||
};
|
||||
if (iNumTarget > 0)
|
||||
{
|
||||
cmd.targets = new int[iNumTarget];
|
||||
for(int i = 0; i < iNumTarget; i++)
|
||||
{
|
||||
cmd.targets[i] = aTargets[i];
|
||||
}
|
||||
}
|
||||
|
||||
var cmdBuf = SerializeCommand(CommandID.CAST_INSTANT_SKILL, cmd);
|
||||
@@ -806,5 +809,37 @@ namespace CSNetwork.C2SCommand
|
||||
pCmd.id = id;
|
||||
return SerializeCommand(CommandID.ENTER_SANCTUARY, pCmd);
|
||||
}
|
||||
|
||||
public static Octets CreateEnterInstanceCmd(int iTransIdx, int idInst)
|
||||
{
|
||||
cmd_enter_instance pCmd = new cmd_enter_instance();
|
||||
pCmd.iTransIndex = iTransIdx;
|
||||
pCmd.idInst = idInst;
|
||||
return SerializeCommand(CommandID.ENTER_INSTANCE, pCmd);
|
||||
}
|
||||
|
||||
public static Octets CreateActiveRushFlyCmd(bool bActive)
|
||||
{
|
||||
cmd_active_rush_fly pCmd = new cmd_active_rush_fly();
|
||||
pCmd.is_active = bActive ? 1 : 0;
|
||||
return SerializeCommand(CommandID.ACTIVE_RUSH_FLY, pCmd);
|
||||
}
|
||||
|
||||
public static Octets CreatePetCtrlCmd(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
|
||||
{
|
||||
cmd_pet_ctrl pCmd = new cmd_pet_ctrl();
|
||||
pCmd.target = idTarget;
|
||||
pCmd.pet_cmd = cmd;
|
||||
var tempOctets = SerializeCommand(CommandID.PET_CTRL, pCmd);
|
||||
tempOctets.Insert(tempOctets.Size + 1, pParamBuf);
|
||||
return tempOctets;
|
||||
}
|
||||
|
||||
public static Octets CreateQueryFactionPVPInfo(int faction_id)
|
||||
{
|
||||
cmd_query_faction_pvp_info pCmd = new cmd_query_faction_pvp_info();
|
||||
pCmd.faction_id = faction_id;
|
||||
return SerializeCommand(CommandID.QUERY_MAFIA_PVP_INFO, pCmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BrewMonster;
|
||||
using BrewMonster.Common;
|
||||
using BrewMonster.Managers;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Skills;
|
||||
@@ -42,7 +43,7 @@ namespace CSNetwork
|
||||
private RoleInfo _selectedRole;
|
||||
public bool IsConnected => _networkManager?.IsConnected ?? false;
|
||||
public static SynchronizationContext Context;
|
||||
|
||||
private CECC2SCmdCache m_CmdCache; // C2S command cache
|
||||
#if UNITY_EDITOR
|
||||
public bool isDebug;
|
||||
public bool IsDebug
|
||||
@@ -51,11 +52,13 @@ namespace CSNetwork
|
||||
set => isDebug = value;
|
||||
}
|
||||
#endif
|
||||
public CECC2SCmdCache CmdCache { get => m_CmdCache; }
|
||||
|
||||
|
||||
public GameSession()
|
||||
{
|
||||
_networkManager = new NetworkManager();
|
||||
m_CmdCache = new CECC2SCmdCache();
|
||||
_networkManager.ProtocolReceived += OnProtocolReceived;
|
||||
_networkManager.ErrorOccurred += OnErrorOccurred;
|
||||
_networkManager.Disconnected += OnDisconnected;
|
||||
@@ -831,6 +834,8 @@ namespace CSNetwork
|
||||
_currentUserId = -1;
|
||||
FailLoginInProgress("Disconnected");
|
||||
FailRoleListInProgress("Disconnected");
|
||||
// Clear command cache
|
||||
m_CmdCache.RemoveAllCmds();
|
||||
}
|
||||
|
||||
// --- Protocol Handling Logic ---
|
||||
@@ -1044,7 +1049,7 @@ namespace CSNetwork
|
||||
C2SCommandFactory.CreatePlayerMove(vCurPos, vDest, (ushort)iTime, fSpeed, (byte)iMoveMode, wStamp);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
public void c2s_CmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
public void c2s_SendCmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
|
||||
@@ -1054,7 +1059,7 @@ namespace CSNetwork
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_CmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
public void c2s_SendCmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
|
||||
@@ -1219,7 +1224,7 @@ namespace CSNetwork
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_CmdCancelAction()
|
||||
public void c2s_SendCmdCancelAction()
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateNakeCmd(CSNetwork.C2SCommand.CommandID.CANCEL_ACTION);
|
||||
@@ -1233,19 +1238,11 @@ namespace CSNetwork
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_CmdSelectTarget(int idTarget)
|
||||
public void c2s_SendCmdSelectTarget(int idTarget)
|
||||
{
|
||||
// Set selection first before server returns, so as to reduce the player waiting time.
|
||||
CECHostPlayer pHost = EC_ManMessageMono.Instance.GetECManPlayer.GetHostPlayer();
|
||||
pHost.SetSelectedTarget(idTarget);
|
||||
|
||||
if (m_idLastSelTarget != idTarget)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateSelectTarget(idTarget);
|
||||
SendProtocol(gamedatasend);
|
||||
m_idLastSelTarget = idTarget;
|
||||
}
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateSelectTarget(idTarget);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdNPCSevWaypoint()
|
||||
@@ -1438,5 +1435,33 @@ namespace CSNetwork
|
||||
gamedatasend.Data = C2SCommandFactory.CreateEnterSanctuaryCmd(id);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdEnterInstance(int iTransIdx, int idInst)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateEnterInstanceCmd(iTransIdx, idInst);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdActiveRushFly(bool bActive)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateActiveRushFlyCmd(bActive);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdPetCtrl(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreatePetCtrlCmd(idTarget, cmd, pParamBuf, iParamLen);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdQueryFactionPVPInfo(int faction_id)
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateQueryFactionPVPInfo(faction_id);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,10 +33,13 @@ namespace BrewMonster.Network
|
||||
private string _password = "";
|
||||
|
||||
CECStubbornFactionInfoSender m_stubbornFactionInfoSender;
|
||||
|
||||
public GameSession GameSession { get => _gameSession; }
|
||||
public CECC2SCmdCache GetC2SCmdCache() { return _gameSession.CmdCache; }
|
||||
#if UNITY_EDITOR
|
||||
public bool isDebg;
|
||||
private bool lastDebug;
|
||||
|
||||
|
||||
public void OnValidate()
|
||||
{
|
||||
if (isDebg != lastDebug)
|
||||
@@ -79,14 +82,14 @@ namespace BrewMonster.Network
|
||||
Instance._ip = ip;
|
||||
Instance._port = port;
|
||||
}
|
||||
public static void c2s_CmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
public static void c2s_CmdCastSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
Instance._gameSession.c2s_CmdCastSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
Instance._gameSession.CmdCache.SendCmdCastSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
}
|
||||
|
||||
public static void c2s_CmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
public static void c2s_CmdCastInstantSkill(int idSkill, byte byPVPMask, int iNumTarget, int[] aTargets)
|
||||
{
|
||||
Instance._gameSession.c2s_CmdCastInstantSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
Instance._gameSession.CmdCache.SendCmdCastInstantSkill(idSkill, byPVPMask, iNumTarget, aTargets);
|
||||
}
|
||||
|
||||
public static void c2s_CmdCastPosSkill(int idSkill, Vector3 vDest, byte byPVPMask, int iNumTarget, int aTargets)
|
||||
@@ -196,7 +199,7 @@ namespace BrewMonster.Network
|
||||
}
|
||||
public static void RequestPickupItem(int idItem, int tid)
|
||||
{
|
||||
Instance._gameSession.RequestPickupItem(idItem, tid);
|
||||
Instance._gameSession.CmdCache.SendCmdPickUp(idItem, tid);
|
||||
}
|
||||
public static void RequestDropIvrtItem(byte index, int amount)
|
||||
{
|
||||
@@ -214,13 +217,13 @@ namespace BrewMonster.Network
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdContinueAction();
|
||||
}
|
||||
public static void RequestReviveBase()
|
||||
public static void c2s_CmdReviveVillage()
|
||||
{
|
||||
Instance._gameSession.RequestReviveBase();
|
||||
Instance._gameSession.CmdCache.SendCmdReviveVillage();
|
||||
}
|
||||
public static void RequestReviveItem()
|
||||
public static void c2s_CmdReviveItem()
|
||||
{
|
||||
Instance._gameSession.RequestReviveItem();
|
||||
Instance._gameSession.CmdCache.SendCmdReviveItem();
|
||||
}
|
||||
public static void RequestReviveByPlayer()
|
||||
{
|
||||
@@ -265,7 +268,7 @@ namespace BrewMonster.Network
|
||||
|
||||
public static void c2s_CmdNPCSevHello(int nid)
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdNPCSevHello(nid);
|
||||
Instance._gameSession.CmdCache.SendCmdNPCSevHello(nid);
|
||||
}
|
||||
|
||||
public static void c2s_CmdNormalAttack(byte byPVPMask)
|
||||
@@ -275,7 +278,7 @@ namespace BrewMonster.Network
|
||||
|
||||
public static void c2s_CmdCancelAction()
|
||||
{
|
||||
Instance._gameSession.c2s_CmdCancelAction();
|
||||
Instance._gameSession.CmdCache.SendCmdCancelAction();
|
||||
}
|
||||
|
||||
public static void c2s_CmdUnselect()
|
||||
@@ -285,7 +288,7 @@ namespace BrewMonster.Network
|
||||
|
||||
public static void c2s_CmdSelectTarget(int idTarget)
|
||||
{
|
||||
Instance._gameSession.c2s_CmdSelectTarget(idTarget);
|
||||
Instance._gameSession.CmdCache.SendCmdSelectTarget(idTarget);
|
||||
}
|
||||
public static void c2s_CmdNPCSevWaypoint()
|
||||
{
|
||||
@@ -397,14 +400,14 @@ namespace BrewMonster.Network
|
||||
}
|
||||
actDone?.Invoke(true);
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
_gameSession.Disconnect();
|
||||
_gameSession.Dispose();
|
||||
CECNPC.ReleaseStaticRes();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void c2s_CmdGoto(float x, float y, float z)
|
||||
{
|
||||
Instance._gameSession.c2s_CmdGoto(x, y, z);
|
||||
@@ -412,18 +415,13 @@ namespace BrewMonster.Network
|
||||
|
||||
public static void c2s_SendCmdUseItem(byte byPackage, byte bySlot, int tid, byte byCount)
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdUseItem(byPackage, bySlot, tid, byCount);
|
||||
Instance._gameSession.CmdCache.SendCmdUseItem(byPackage, bySlot, tid, byCount);
|
||||
}
|
||||
|
||||
// Send C2S::GET_EXT_PROP commadn data
|
||||
public static void c2s_SendCmdGetExtProps()
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdGetExtProps();
|
||||
}
|
||||
|
||||
public static void SendNetData(getplayerbriefinfo temp)
|
||||
{
|
||||
Instance._gameSession.SendProtocol(temp);
|
||||
Instance._gameSession.CmdCache.SendCmdExtProps();
|
||||
}
|
||||
|
||||
public static void c2s_SendCmdGivePresent(int roleid, int mail_id, int goods_id, int goods_index, int goods_slot)
|
||||
@@ -431,9 +429,9 @@ namespace BrewMonster.Network
|
||||
Instance._gameSession.c2s_SendCmdGivePresent(roleid, mail_id, goods_id, goods_index, goods_slot);
|
||||
}
|
||||
|
||||
public static void c2s_SendCmdEnterSanctuary(int id)
|
||||
public void Update()
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdEnterSanctuary(id);
|
||||
_gameSession?.CmdCache?.Tick(Time.deltaTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,12 +27,12 @@ namespace BrewMonster
|
||||
|
||||
private void ReviveInBase()
|
||||
{
|
||||
UnityGameSession.RequestReviveBase();
|
||||
UnityGameSession.c2s_CmdReviveVillage();
|
||||
}
|
||||
|
||||
private void ReviveByItem()
|
||||
{
|
||||
UnityGameSession.RequestReviveItem();
|
||||
UnityGameSession.c2s_CmdReviveItem();
|
||||
}
|
||||
|
||||
private void ReviveByPlayer()
|
||||
|
||||
@@ -156,6 +156,8 @@ namespace BrewMonster
|
||||
private UnityEngine.InputSystem.Mouse m_cachedMouse;
|
||||
private UnityEngine.InputSystem.Keyboard m_cachedKeyboard;
|
||||
|
||||
int[] targetsCastSkill;
|
||||
|
||||
public bool IsChangingFace()
|
||||
{
|
||||
return m_bChangingFace;
|
||||
@@ -3771,7 +3773,10 @@ namespace BrewMonster
|
||||
// Handle instant skills
|
||||
if (m_pPrepSkill.IsInstant())
|
||||
{
|
||||
UnityGameSession.c2s_CmdCastInstantSkill(m_pPrepSkill.GetSkillID(), byPVPMask, 1, idTarget);
|
||||
int countTarget = 1;
|
||||
targetsCastSkill = new int[countTarget];
|
||||
targetsCastSkill[0] = idTarget;
|
||||
UnityGameSession.c2s_CmdCastInstantSkill(m_pPrepSkill.GetSkillID(), byPVPMask, countTarget, targetsCastSkill);
|
||||
m_pPrepSkill = null;
|
||||
}
|
||||
// Handle flash move skills (瞬移技能)
|
||||
@@ -3941,7 +3946,10 @@ namespace BrewMonster
|
||||
{
|
||||
// Regular skill casting
|
||||
byte byPVPMask2 = glb_BuildPVPMask(bForceAttack);
|
||||
UnityGameSession.c2s_CmdCastSkill(m_pPrepSkill.GetSkillID(), byPVPMask2, 1, idTarget);
|
||||
int targets = 1;
|
||||
targetsCastSkill = new int[targets];
|
||||
targetsCastSkill[0] = idTarget;
|
||||
UnityGameSession.c2s_CmdCastSkill(m_pPrepSkill.GetSkillID(), byPVPMask2, targets, targetsCastSkill);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -5783,13 +5791,13 @@ namespace BrewMonster
|
||||
// Get cool time
|
||||
public int GetCoolTime(int iIndex, ref int piMax /* NULL */)
|
||||
{
|
||||
// if (iIndex >= 0 && iIndex < GP_CT_MAX)
|
||||
// {
|
||||
// if (piMax>0)
|
||||
// piMax = m_aCoolTimes[iIndex].iMaxTime;
|
||||
//
|
||||
// return m_aCoolTimes[iIndex].iCurTime;
|
||||
// }
|
||||
if (iIndex >= 0 && iIndex < (int)CoolTimeIndex.GP_CT_MAX)
|
||||
{
|
||||
if (piMax > 0)
|
||||
piMax = m_aCoolTimes[iIndex].iMaxTime;
|
||||
|
||||
return m_aCoolTimes[iIndex].iCurTime;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user