parent
4c4ecddbd2
commit
6bc453117f
3 changed files with 1841 additions and 1737 deletions
|
@ -1,11 +1,12 @@
|
||||||
# DutyPacket configuration
|
# DutyPacket configuration
|
||||||
|
|
||||||
# packet
|
# packet
|
||||||
Version=2006282
|
Version=2006300
|
||||||
Description=6.28 HotFix
|
Description=6.3 HotFix
|
||||||
OpFate=568
|
OpFate=623
|
||||||
OpDuty=378
|
OpDuty=368
|
||||||
OpMatch=371
|
OpMatch=907
|
||||||
OpInstance=389
|
OpInstance=455
|
||||||
OpZone=731
|
OpZone=405
|
||||||
OpSouthernBozja=0
|
OpSouthernBozja=0
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
* Duty finding codes from https://github.com/purutu/ACT.DFAssist
|
* Duty finding codes from https://github.com/purutu/ACT.DFAssist
|
||||||
* Network analyzer codes from https://github.com/Noisyfox/ACT.FFXIVPing
|
* Network analyzer codes from https://github.com/Noisyfox/ACT.FFXIVPing
|
||||||
|
|
||||||
## Not Working on 6.3
|
## 6.3 HotFix
|
||||||
Packet structure has changed. DutyContent doesn't work until fix this problem. Sorry!!! 😭
|
Working again 😭
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -16,7 +16,3 @@ Revi 님께서 작성하신 Wiki가 있어 링크합니다. 정리가 잘되어
|
||||||
|
|
||||||
6.2부터 패킷이 바뀌어서 6.1 및 그 이전 버전과 호환이 되지 않습니다. 버전 27에 한국판을 감지하는 기능을 넣었고 이 버전으로 업데이트 하시면 문제없이 동작합니다.
|
6.2부터 패킷이 바뀌어서 6.1 및 그 이전 버전과 호환이 되지 않습니다. 버전 27에 한국판을 감지하는 기능을 넣었고 이 버전으로 업데이트 하시면 문제없이 동작합니다.
|
||||||
한국판이 6.2로 업데이트가 예정되면 그때 SQEX판과 동일하게 작동하도록 다시금 변경하겠습니다.
|
한국판이 6.2로 업데이트가 예정되면 그때 SQEX판과 동일하게 작동하도록 다시금 변경하겠습니다.
|
||||||
|
|
||||||
6.1에서 동작하는 것 확인했습니다. 패킷은 자동으로 업뎃됩니다
|
|
||||||
|
|
||||||
※ 6.3에서 패킷이 변경되어 변경점을 찾을 때까지 6.3에서 동작하지 않아요;;;
|
|
||||||
|
|
119
Tab/DutyForm.cs
119
Tab/DutyForm.cs
|
@ -240,6 +240,8 @@ namespace DutyContent.Tab
|
||||||
var fcode = BitConverter.ToUInt16(data, 4);
|
var fcode = BitConverter.ToUInt16(data, 4);
|
||||||
|
|
||||||
if (fcode > 100)
|
if (fcode > 100)
|
||||||
|
{
|
||||||
|
if (DcConfig.Duty.PacketForLocal)
|
||||||
{
|
{
|
||||||
// 53=begin, 54=end, 62=progress
|
// 53=begin, 54=end, 62=progress
|
||||||
if (data[0] == 53)
|
if (data[0] == 53)
|
||||||
|
@ -279,6 +281,52 @@ namespace DutyContent.Tab
|
||||||
TraceFate(fcode, false, fate);
|
TraceFate(fcode, false, fate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 52,49,66=begin / 55=probably npc contact point
|
||||||
|
// 60=progress
|
||||||
|
// 53=end
|
||||||
|
if (data[0] == 49)
|
||||||
|
{
|
||||||
|
var fate = DcContent.GetFate(fcode);
|
||||||
|
TraceFate(fcode, true, fate, 0);
|
||||||
|
|
||||||
|
if (DcConfig.Duty.Fates[DcConfig.Duty.ActiveFate].Selected.Contains(fcode))
|
||||||
|
{
|
||||||
|
PlayEffectSoundFate();
|
||||||
|
NotifyFate(fate);
|
||||||
|
_overlay.PlayFate(fate);
|
||||||
|
}
|
||||||
|
|
||||||
|
_last_fate = fcode;
|
||||||
|
}
|
||||||
|
else if (data[0] == 60 && data[8] > 0) // more than 0%
|
||||||
|
{
|
||||||
|
var fate = DcContent.TryFate(fcode);
|
||||||
|
|
||||||
|
if (fate != null)
|
||||||
|
{
|
||||||
|
var rate = data[8] >= 100 ? -1 : data[8];
|
||||||
|
TraceFate(fcode, false, fate, rate);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (DcConfig.DebugEnable)
|
||||||
|
{
|
||||||
|
WriteLog(Color.Magenta, 37, 12, fcode);
|
||||||
|
_last_fate = fcode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (data[0] == 53)
|
||||||
|
{
|
||||||
|
var fate = DcContent.TryFate(fcode);
|
||||||
|
|
||||||
|
if (fate != null)
|
||||||
|
TraceFate(fcode, false, fate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duty
|
// Duty
|
||||||
|
@ -1552,6 +1600,26 @@ namespace DutyContent.Tab
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static (int Pos, int Value) IndexOfValues(byte[] data, int index, params ushort[] values)
|
||||||
|
{
|
||||||
|
int len = data.Length;
|
||||||
|
|
||||||
|
for (int i = index; i < len; i++)
|
||||||
|
{
|
||||||
|
if (i + 1 >= len)
|
||||||
|
break;
|
||||||
|
|
||||||
|
ushort n = BitConverter.ToUInt16(data, i);
|
||||||
|
for (int u = 0; u < values.Length; u++)
|
||||||
|
{
|
||||||
|
if (values[u] == n)
|
||||||
|
return (i, n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (-1, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1571,13 +1639,37 @@ namespace DutyContent.Tab
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
#if false
|
||||||
// 매칭 관련
|
// 매칭 관련
|
||||||
if (opcode == 548 || opcode == 288 || opcode == 880 || opcode == 460)
|
if (opcode == 368)
|
||||||
{
|
{
|
||||||
var s = DataToByteString(data);
|
var s = DataToByteString(data);
|
||||||
Logger.L("{0}({1}) => {2}", opcode, data.Length, s);
|
Logger.L("{0}({1}) => {2}", opcode, data.Length, s);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if true
|
||||||
|
// 페이트
|
||||||
|
(int t, int v) = IndexOfValues(data, 0,
|
||||||
|
// middle la noscea
|
||||||
|
553, 649, 687, 688, 693, 717, 220, 221, 222, 223, 225,
|
||||||
|
226, 227, 229, 231, 233, 235, 237, 238, 239, 240, 1387,
|
||||||
|
1597, 1598, 1599,
|
||||||
|
// southern bozja
|
||||||
|
1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609,
|
||||||
|
1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619,
|
||||||
|
1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628);
|
||||||
|
if (opcode == 623 && t > 0 && data[0] != 0x3C)
|
||||||
|
{
|
||||||
|
var s = DataToByteString(data);
|
||||||
|
Logger.L("페이트: {0}({1}:{1:X})({2},{3}) => {4}", opcode, v, data.Length, t, s);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// fate & duty & packet
|
||||||
|
if (DcConfig.Duty.PacketForLocal)
|
||||||
|
{
|
||||||
|
// for ACTOZ/Korean service
|
||||||
|
|
||||||
// fate
|
// fate
|
||||||
if (_new_packet.OpFate == 0 && data.Length > 4 && data[0] == 0x3E)
|
if (_new_packet.OpFate == 0 && data.Length > 4 && data[0] == 0x3E)
|
||||||
|
@ -1599,11 +1691,6 @@ namespace DutyContent.Tab
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// duty & packet
|
|
||||||
if (DcConfig.Duty.PacketForLocal)
|
|
||||||
{
|
|
||||||
// for ACTOZ/Korean service
|
|
||||||
|
|
||||||
// duty
|
// duty
|
||||||
if (_new_packet.OpDuty == 0 && data.Length > 12)
|
if (_new_packet.OpDuty == 0 && data.Length > 12)
|
||||||
{
|
{
|
||||||
|
@ -1654,6 +1741,26 @@ namespace DutyContent.Tab
|
||||||
{
|
{
|
||||||
// for common
|
// for common
|
||||||
|
|
||||||
|
// fate
|
||||||
|
if (_new_packet.OpFate == 0 && data.Length > 20 && data[0] == 0x3C) // real size is 32
|
||||||
|
{
|
||||||
|
var cc = BitConverter.ToUInt16(data, 4);
|
||||||
|
if (IsFateInFindList(cc) && _new_packet.OpFate != opcode)
|
||||||
|
{
|
||||||
|
_new_packet.OpFate = opcode;
|
||||||
|
|
||||||
|
WorkerAct.Invoker(() =>
|
||||||
|
{
|
||||||
|
lstPacketInfo.Items[0].SubItems[2].Text = Locale.Text(10016);
|
||||||
|
lstPacketInfo.Items[0].SubItems[3].Text = _new_packet.OpFate.ToString();
|
||||||
|
});
|
||||||
|
|
||||||
|
_last_fate = cc;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// duty
|
// duty
|
||||||
if (_new_packet.OpDuty == 0 && data.Length > 20) // real size is 40
|
if (_new_packet.OpDuty == 0 && data.Length > 20) // real size is 40
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue