diff --git a/config.json b/config.json index 2b836ab03..20a9190bf 100644 --- a/config.json +++ b/config.json @@ -17,12 +17,12 @@ "UploadQuality":100 }, "DeleteOnSaveCorruption": false, - "ClientMode": "ZZ", + "ClientMode": "G9.1", "QuestCacheExpiry": 300, "CommandPrefix": "!", "AutoCreateAccount": true, "DefaultCourses": [1, 23, 24], - "EarthStatus": 0, + "EarthStatus": 21, "EarthID": 0, "EarthMonsters": [0, 0, 0, 0], "SaveDumps": { @@ -32,18 +32,18 @@ }, "DebugOptions": { "CleanDB": false, - "MaxLauncherHR": false, - "LogInboundMessages": false, - "LogOutboundMessages": false, - "LogMessageData": false, - "MaxHexdumpLength": 256, + "MaxLauncherHR": true, + "LogInboundMessages": true, + "LogOutboundMessages": true, + "LogMessageData": true, + "MaxHexdumpLength": 99999999999, "DivaOverride": 0, "FestaOverride": -1, "TournamentOverride": 0, "DisableTokenCheck": false, - "QuestTools": false, + "QuestTools": true, "AutoQuestBackport": true, - "ProxyPort": 0, + "ProxyPort": 8090, "CapLink": { "Values": [51728, 20000, 51729, 1, 20000], "Key": "", @@ -188,7 +188,7 @@ "Host": "localhost", "Port": 5432, "User": "postgres", - "Password": "", + "Password": "password", "Database": "erupe" }, "Sign": { diff --git a/network/mhfpacket/msg_mhf_get_paper_data.go b/network/mhfpacket/msg_mhf_get_paper_data.go index 1f3162716..71f7d9c9f 100644 --- a/network/mhfpacket/msg_mhf_get_paper_data.go +++ b/network/mhfpacket/msg_mhf_get_paper_data.go @@ -2,6 +2,7 @@ package mhfpacket import ( "errors" + "fmt" "erupe-ce/common/byteframe" "erupe-ce/network" @@ -28,6 +29,8 @@ func (m *MsgMhfGetPaperData) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Clien m.Type = bf.ReadUint32() m.Unk1 = bf.ReadUint32() m.Unk2 = bf.ReadUint32() + fmt.Printf("MsgMhfGetPaperData: Type:[%d] Unk1:[%d] Unk2:[%d] \n\n", m.Type, m.Unk1, m.Unk2) + return nil } diff --git a/network/mhfpacket/msg_mhf_present_box.go b/network/mhfpacket/msg_mhf_present_box.go index d0064799c..d08940344 100644 --- a/network/mhfpacket/msg_mhf_present_box.go +++ b/network/mhfpacket/msg_mhf_present_box.go @@ -2,6 +2,7 @@ package mhfpacket import ( "errors" + "fmt" "erupe-ce/common/byteframe" "erupe-ce/network" @@ -39,6 +40,11 @@ func (m *MsgMhfPresentBox) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientC for i := uint32(0); i < m.Unk2; i++ { m.Unk7 = append(m.Unk7, bf.ReadUint32()) } + fmt.Printf("MsgMhfPresentBox: Unk0:[%d] Unk1:[%d] Unk2:[%d] Unk3:[%d] Unk4:[%d] Unk5:[%d] Unk6:[%d] \n\n", m.Unk0, m.Unk1, m.Unk2, m.Unk3, m.Unk4, m.Unk5, m.Unk6) + for _, mdata := range m.Unk7 { + fmt.Printf("MsgMhfPresentBox: Unk7: [%d] \n", mdata) + + } return nil } diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index 4774e6d39..9724c41b0 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -1123,8 +1123,8 @@ func handleMsgMhfGetEarthValue(s *Session, p mhfpacket.MHFPacket) { case 1: earthValues = []EarthValues{ // {Block, DureSlays, Unk, Unk, Unk, Unk} - {[]uint32{1, 312, 0, 0, 0, 0}}, - {[]uint32{2, 99, 0, 0, 0, 0}}, + {[]uint32{1, 100, 0, 0, 0, 0}}, + {[]uint32{2, 100, 0, 0, 0, 0}}, } case 2: earthValues = []EarthValues{ diff --git a/server/channelserver/handlers_data.go b/server/channelserver/handlers_data.go index 63218f96e..e9103e6da 100644 --- a/server/channelserver/handlers_data.go +++ b/server/channelserver/handlers_data.go @@ -1020,7 +1020,18 @@ func handleMsgMhfGetPaperData(s *Session, p mhfpacket.MHFPacket) { switch pkt.Unk2 { case 4: //Triggers on Tower Menu Load and on Tower Quest Load - paperData = []PaperData{} + paperData = []PaperData{ + + //Seen Monsters (id,on off, 0, 0, 0, 0, 0) + //Value is based on 2001 for monsters + {1011, 1, 0, 0, 0, 0, 0}, + {1011, 2, 0, 0, 0, 0, 0}, + + //Seen Items (id,on off, 0, 0, 0, 0, 0) + //Value is based in 6001 for items + {1012, 1, 0, 0, 0, 0, 0}, + {1012, 2, 0, 0, 0, 0, 0}, + } case 5: //On load into MezePorta paperData = []PaperData{ @@ -1057,7 +1068,7 @@ func handleMsgMhfGetPaperData(s *Session, p mhfpacket.MHFPacket) { {1104, 2, 10, 9999, 40, 0, 0}, {1105, 1, 10, 500, 0, 0, 0}, {1105, 2, 10, 500, 0, 0, 0}, - // setServerBoss {ID, Block, Monster, Unk, Unk, Index?, Points} + // setServerBoss {ID, Block, Monster, Unk, Unk, Index, Points} {2001, 1, mhfmon.Gravios, 58, 0, 6, 700}, {2001, 1, mhfmon.Gypceros, 58, 0, 3, 200}, {2001, 1, mhfmon.Basarios, 58, 0, 7, 250}, diff --git a/server/channelserver/handlers_seibattle.go b/server/channelserver/handlers_seibattle.go index aa0c7d9bc..1ac3fa3ad 100644 --- a/server/channelserver/handlers_seibattle.go +++ b/server/channelserver/handlers_seibattle.go @@ -16,12 +16,12 @@ func handleMsgMhfGetBreakSeibatuLevelReward(s *Session, p mhfpacket.MHFPacket) { } type WeeklySeibatuRankingReward struct { - Unk0 int32 //Place Start - Unk1 int32 //Place Finish - Unk2 uint32 // UNK - Unk3 int32 //Type - Unk4 int32 //ID - Unk5 int32 // Value + Index0 int32 //Place Start + Index1 int32 //Place Finish + Index2 uint32 // UNK + Type int32 //Type //7201 Value //7202 ??? Points //7203 ??? Points Blue + ID int32 //ID + Value int32 // Value } func handleMsgMhfGetWeeklySeibatuRankingReward(s *Session, p mhfpacket.MHFPacket) { @@ -70,34 +70,117 @@ func handleMsgMhfGetWeeklySeibatuRankingReward(s *Session, p mhfpacket.MHFPacket switch pkt.ID { //243400 = Route 0 //243401 = Route 1 - //Tower 260001 260003 + //I have a sneaky suspicion that the above massive array is feeding into this somehow.... case 240031: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + {1, 1, 1, 7201, 12068, 1}} case 240041: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + {0, 0, 1, 7201, 12068, 1}} case 240042: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + {0, 0, 2, 7201, 12068, 1}} case 240051: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + {0, 0, 1, 7201, 12068, 1}} case 240052: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + {1, 1, 1, 7201, 12068, 1}, + } + //Tower 260001 260003 case 260001: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + + //Can only have 10 in each dist (It disapears otherwise) + //{unk,unk,dist,seiabtuType,ItemID,Value} + {0, 0, 1, 7201, 12068, 1}, + {0, 0, 1, 7201, 12069, 1}, + {0, 0, 1, 7201, 12070, 1}, + {0, 0, 1, 7201, 12071, 1}, + {0, 0, 1, 7201, 12072, 1}, + {0, 0, 1, 7201, 12073, 1}, + {0, 0, 1, 7201, 12074, 1}, + {0, 0, 1, 7201, 12075, 1}, + {0, 0, 1, 7201, 12076, 1}, + {0, 0, 1, 7201, 12077, 1}, + + {0, 0, 2, 7201, 12068, 1}, + {0, 0, 2, 7201, 12069, 1}, + {0, 0, 2, 7201, 12070, 1}, + {0, 0, 2, 7201, 12071, 1}, + {0, 0, 2, 7201, 12072, 1}, + {0, 0, 2, 7201, 12073, 1}, + {0, 0, 2, 7201, 12074, 1}, + {0, 0, 2, 7201, 12075, 1}, + {0, 0, 2, 7201, 12076, 1}, + {0, 0, 2, 7201, 12077, 1}, + // Left in because i think its funny the planned 4 and we got 2 + {0, 0, 3, 7201, 12068, 1}, + {0, 0, 3, 7201, 12069, 1}, + {0, 0, 3, 7201, 12070, 1}, + {0, 0, 3, 7201, 12071, 1}, + {0, 0, 3, 7201, 12072, 1}, + {0, 0, 3, 7201, 12073, 1}, + {0, 0, 3, 7201, 12074, 1}, + {0, 0, 3, 7201, 12075, 1}, + {0, 0, 3, 7201, 12076, 1}, + {0, 0, 3, 7201, 12077, 1}, + + {0, 0, 4, 7201, 12068, 1}, + {0, 0, 4, 7201, 12069, 1}, + {0, 0, 4, 7201, 12070, 1}, + {0, 0, 4, 7201, 12071, 1}, + {0, 0, 4, 7201, 12072, 1}, + {0, 0, 4, 7201, 12073, 1}, + {0, 0, 4, 7201, 12074, 1}, + {0, 0, 4, 7201, 12075, 1}, + {0, 0, 4, 7201, 12076, 1}, + {0, 0, 4, 7201, 12077, 1}, + } case 260003: weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ - {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}} + //Adjust Floors done in database to make blue ?? Possible value here for dist + //{Floor,unk,unk,seiabtuType,ItemID,Value} + + {1, 0, 0, 7201, 12068, 1}, + {2, 0, 0, 7201, 12069, 3}, + {2, 0, 0, 7201, 12070, 1}, + {4, 0, 0, 7201, 12071, 3}, + {5, 0, 0, 7201, 12072, 6}, + {6, 0, 0, 7201, 12073, 1}, + {7, 0, 0, 7201, 12068, 1}, + {8, 0, 0, 7201, 12069, 1}, + {9, 0, 0, 7201, 12070, 2}, + {10, 0, 0, 7201, 12071, 1}, + {10, 0, 0, 7201, 12072, 1}, + {10, 0, 0, 7201, 12073, 6}, + + {11, 0, 0, 7201, 12072, 1}, + {12, 0, 0, 7201, 12073, 1}, + {13, 0, 0, 7201, 12068, 6}, + {14, 0, 0, 7201, 12069, 6}, + {15, 0, 0, 7201, 12070, 1}, + {16, 0, 0, 7201, 12071, 1}, + {16, 0, 0, 7201, 12072, 2}, + {18, 0, 0, 7201, 12073, 1}, + } default: //Covers all Pallone Requests... for now weeklySeibatuRankingRewards = []WeeklySeibatuRankingReward{ // To do figure out values 3-5 its some sort of item structure - {1, 0, 7, 7, 7, 10000}, {1, 1, 0, 0, 0, 30}, {1, 1, 0, 0, 0, 18}, {1, 1, 0, 0, 0, 18}, //1st - {2, 3, 0, 0, 0, 6000}, {2, 3, 0, 0, 0, 15}, {2, 3, 0, 0, 0, 9}, {2, 3, 0, 0, 0, 9}, //2nd - 3rd - {4, 10, 0, 0, 0, 5500}, {4, 10, 0, 0, 0, 12}, {4, 10, 0, 0, 0, 9}, //4th -10th + //1st + {1, 0, 0, 7202, 10, 10000}, + {1, 1, 0, 7201, 10, 30}, + {1, 1, 0, 7201, 10, 18}, + {1, 1, 0, 7201, 10, 18}, + //2nd - 3rd + {2, 3, 0, 7202, 10, 6000}, + {2, 3, 0, 7201, 10, 15}, + {2, 3, 0, 7201, 10, 9}, + {2, 3, 0, 7201, 10, 9}, + //4th -10th + {4, 10, 0, 7202, 10, 5500}, + {4, 10, 0, 7201, 10, 12}, + {4, 10, 0, 7201, 10, 9}, } } @@ -105,12 +188,12 @@ func handleMsgMhfGetWeeklySeibatuRankingReward(s *Session, p mhfpacket.MHFPacket } for _, seibatuData := range weeklySeibatuRankingRewards { bf := byteframe.NewByteFrame() - bf.WriteInt32(seibatuData.Unk0) - bf.WriteInt32(seibatuData.Unk1) - bf.WriteUint32(seibatuData.Unk2) - bf.WriteInt32(seibatuData.Unk3) - bf.WriteInt32(seibatuData.Unk4) - bf.WriteInt32(seibatuData.Unk5) + bf.WriteInt32(seibatuData.Index0) + bf.WriteInt32(seibatuData.Index1) + bf.WriteUint32(seibatuData.Index2) + bf.WriteInt32(seibatuData.Type) + bf.WriteInt32(seibatuData.ID) + bf.WriteInt32(seibatuData.Value) data = append(data, bf) } doAckEarthSucceed(s, pkt.AckHandle, data) diff --git a/server/channelserver/handlers_tower.go b/server/channelserver/handlers_tower.go index 3e35141c6..3d41bf57b 100644 --- a/server/channelserver/handlers_tower.go +++ b/server/channelserver/handlers_tower.go @@ -398,28 +398,46 @@ type PresentBox struct { Unk5 int32 Unk6 int32 Unk7 int32 - Unk8 int32 - Unk9 int32 - Unk10 int32 + Unk8 int32 //SeiabtuType + Unk9 int32 //Item + Unk10 int32 //Amount } func handleMsgMhfPresentBox(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfPresentBox) var data []*byteframe.ByteFrame + + //PresentCommunicator + // possible the same types for seibatu work here. + // Special Values 7201+ + // ON Request for PALLONE! + //3301 3302 3303 + // ON Request for TOWER! + //260003 260001 presents := []PresentBox{{7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}} - for _, present := range presents { + for index, _ := range presents { bf := byteframe.NewByteFrame() - bf.WriteUint32(present.Unk0) - bf.WriteInt32(present.Unk1) - bf.WriteInt32(present.Unk2) - bf.WriteInt32(present.Unk3) - bf.WriteInt32(present.Unk4) - bf.WriteInt32(present.Unk5) - bf.WriteInt32(present.Unk6) - bf.WriteInt32(present.Unk7) - bf.WriteInt32(present.Unk8) - bf.WriteInt32(present.Unk9) - bf.WriteInt32(present.Unk10) + bf.WriteUint32(0) + bf.WriteInt32(0) + bf.WriteInt32(0) //compPresent__Q2_6Palone19PresentCommunicatorSFPC20RESPONSE_PRESENT_BOXT1 // v15 = v7[2]; if ( v15 > v14 )return 1; if ( v15 < v14 ) return 0; OR + // v12 = *(_DWORD *)(v9 + 8); + // v13 = v7[2]; + // if ( v13 <= v12 ) + // { + // if ( v13 < v12 ) + // return 0; + // return *(_DWORD *)(v9 + 20) < v7[5]; + // } + // return 1; + // } + bf.WriteInt32(0) //compPresent__Q2_6Palone19PresentCommunicatorSFPC20RESPONSE_PRESENT_BOXT1 // v17 = v7[3]; if ( v17 > v16 )return 1; if ( v17 < v16 ) return 0; + bf.WriteInt32(0) + bf.WriteInt32(0) //Link to [2] + bf.WriteInt32(0) + bf.WriteInt32(0) + bf.WriteInt32(7201) // is_over_present_box__Q2_6Palone19PresentCommunicatorSFPC20RESPONSE_PRESENT_BOX v1 = a1[8]; if ( v1 >= 7201 ) + bf.WriteInt32(7) + bf.WriteInt32(int32(index)) //placed index here because its value of item to stop go having a moan data = append(data, bf) }