mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
optimise grpToGR
This commit is contained in:
@@ -226,7 +226,7 @@ func (save *CharacterSaveData) updateStructWithSaveData() {
|
|||||||
if _config.ErupeConfig.RealClientMode >= _config.G10 {
|
if _config.ErupeConfig.RealClientMode >= _config.G10 {
|
||||||
save.KQF = save.decompSave[save.Pointers[pKQF] : save.Pointers[pKQF]+8]
|
save.KQF = save.decompSave[save.Pointers[pKQF] : save.Pointers[pKQF]+8]
|
||||||
if save.HRP == uint16(999) {
|
if save.HRP == uint16(999) {
|
||||||
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[save.Pointers[pGRP] : save.Pointers[pGRP]+4]))
|
save.GR = grpToGR(int(binary.LittleEndian.Uint32(save.decompSave[save.Pointers[pGRP] : save.Pointers[pGRP]+4])))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,162 +73,39 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func grpToGR(n uint32) uint16 {
|
func grpToGR(n int) uint16 {
|
||||||
var gr uint16
|
var gr int
|
||||||
gr = 1
|
a := []int{208750, 593400, 993400, 1400900, 2315900, 3340900, 4505900, 5850900, 7415900, 9230900, 11345900, 100000000}
|
||||||
switch grp := int(n); {
|
b := []int{7850, 8000, 8150, 9150, 10250, 11650, 13450, 15650, 18150, 21150, 23950}
|
||||||
case grp < 208750: // Up to 50
|
c := []int{51, 100, 150, 200, 300, 400, 500, 600, 700, 800, 900}
|
||||||
i := 0
|
|
||||||
for {
|
for i := 0; i < len(a); i++ {
|
||||||
grp -= 500
|
if n < a[i] {
|
||||||
if grp <= 500 {
|
if i == 0 {
|
||||||
if grp < 0 {
|
for {
|
||||||
i--
|
n -= 500
|
||||||
|
if n <= 500 {
|
||||||
|
if n < 0 {
|
||||||
|
i--
|
||||||
|
}
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
i++
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
n -= 150
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break
|
gr = i + 2
|
||||||
} else {
|
} else {
|
||||||
i++
|
n -= a[i-1]
|
||||||
for j := 0; j < i; j++ {
|
gr = c[i-1]
|
||||||
grp -= 150
|
gr += n / b[i-1]
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
break
|
||||||
}
|
}
|
||||||
gr = uint16(i + 2)
|
|
||||||
break
|
|
||||||
case grp < 593400: // 51-99
|
|
||||||
grp -= 208750
|
|
||||||
i := 51
|
|
||||||
for {
|
|
||||||
if grp < 7850 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 7850
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 993400: // 100-149
|
|
||||||
grp -= 593400
|
|
||||||
i := 100
|
|
||||||
for {
|
|
||||||
if grp < 8000 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 8000
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 1400900: // 150-199
|
|
||||||
grp -= 993400
|
|
||||||
i := 150
|
|
||||||
for {
|
|
||||||
if grp < 8150 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 8150
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 2315900: // 200-299
|
|
||||||
grp -= 1400900
|
|
||||||
i := 200
|
|
||||||
for {
|
|
||||||
if grp < 9150 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 9150
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 3340900: // 300-399
|
|
||||||
grp -= 2315900
|
|
||||||
i := 300
|
|
||||||
for {
|
|
||||||
if grp < 10250 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 10250
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 4505900: // 400-499
|
|
||||||
grp -= 3340900
|
|
||||||
i := 400
|
|
||||||
for {
|
|
||||||
if grp < 11650 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 11650
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 5850900: // 500-599
|
|
||||||
grp -= 4505900
|
|
||||||
i := 500
|
|
||||||
for {
|
|
||||||
if grp < 13450 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 13450
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 7415900: // 600-699
|
|
||||||
grp -= 5850900
|
|
||||||
i := 600
|
|
||||||
for {
|
|
||||||
if grp < 15650 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 15650
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 9230900: // 700-799
|
|
||||||
grp -= 7415900
|
|
||||||
i := 700
|
|
||||||
for {
|
|
||||||
if grp < 18150 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 18150
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
case grp < 11345900: // 800-899
|
|
||||||
grp -= 9230900
|
|
||||||
i := 800
|
|
||||||
for {
|
|
||||||
if grp < 21150 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 21150
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
default: // 900+
|
|
||||||
grp -= 11345900
|
|
||||||
i := 900
|
|
||||||
for {
|
|
||||||
if grp < 23950 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
i++
|
|
||||||
grp -= 23950
|
|
||||||
}
|
|
||||||
gr = uint16(i)
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
return gr
|
return uint16(gr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func dumpSaveData(s *Session, data []byte, suffix string) {
|
func dumpSaveData(s *Session, data []byte, suffix string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user