From 1430e9675290c804a3b18d50bb0ae14da00c1b76 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 6 May 2024 16:09:25 +0800 Subject: [PATCH] update data --- data/DB_GameItem.dat | Bin 7376 -> 7668 bytes data/DB_GameItem.json | 90 +- data/DB_GiftCard.dat | Bin 57 -> 57 bytes data/DB_PropExchange.dat | 8 +- data/DB_Task.dat | Bin 1999 -> 1999 bytes srvdata/config.go | 2 +- tools/xlsx2binary/agc.go | 12905 ------------------------------------- xlsx/DB_GameItem.xlsx | Bin 42655 -> 42959 bytes 8 files changed, 92 insertions(+), 12913 deletions(-) delete mode 100644 tools/xlsx2binary/agc.go diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index a4a78db034a51389ab13bf9eae2f05a0ad721561..0d0b040c16fbd8b082d585c30551da6b9d0cc063 100644 GIT binary patch delta 230 zcmca$`Nev}M=p(cj)zy6g(OQdQ}c3C^Iojm@Vv9<>C6=xhEF&2KbyWyQ;La^QHhy> zVX^?XrCAKeBcNh2EQ*(`gsWuG;5PzlV6Xxa5sV2ElNGr&fLb48)oT0{k5&(`)>w`w QShbqt)4F1_0`~?%0A(;rvH$=8 delta 48 zcmV-00MGyQJJ30>@d_VS2;tNN5)gE0Wo~R`Zs@MC=ZTEvnW!290RbWd0RfX43pulG G42KZ`eG-cR diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 55de895..9aa01b8 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -711,14 +711,14 @@ }, { "Id": 60001, - "Name": "tienlen记牌器", + "Name": "tienlen记牌器(1小时)", "ShowLocation": [ 1, 1 ], "Classify": [ - 1, - 1, + 0, + 0, 0 ], "Type": 15, @@ -737,6 +737,90 @@ "Location": "0", "Describe": "tienlen游戏记录打出过的牌" }, + { + "Id": 60002, + "Name": "tienlen记牌器(1天)", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 15, + "Effect0": [ + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0 + ], + "CompositionMax": 1, + "Time": 24, + "Location": "0", + "Describe": "tienlen游戏记录打出过的牌" + }, + { + "Id": 60003, + "Name": "tienlen记牌器(3天)", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 15, + "Effect0": [ + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0 + ], + "CompositionMax": 1, + "Time": 72, + "Location": "0", + "Describe": "tienlen游戏记录打出过的牌" + }, + { + "Id": 60004, + "Name": "tienlen记牌器(7天)", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 15, + "Effect0": [ + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0 + ], + "CompositionMax": 1, + "Time": 168, + "Location": "0", + "Describe": "tienlen游戏记录打出过的牌" + }, { "Id": 100001, "Name": "金币", diff --git a/data/DB_GiftCard.dat b/data/DB_GiftCard.dat index 96640b07f274cbbbda035ee3e52503c8356a73cb..15600367ff42a73b75826e6378f02a3bde3a8661 100644 GIT binary patch delta 38 pcmcDtoFJjd#&NNYS%6E4lVf2oo4|o-8=15?Aj}q919mG$1^~Z739kSE delta 38 pcmcDtoFJjd$+57PP2j+^jZ8{x92eV|1-P_0AVMv+2JBXh3;@YB39kSE diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index f6f0f6d..c3fa94d 100644 --- a/data/DB_PropExchange.dat +++ b/data/DB_PropExchange.dat @@ -1,5 +1,5 @@ -6ֆ׆ӆԆՆ"= -.ۆ؆نچ"= -Wۆӆֆ؆نچԆՆ׆"  -]ӆՆֆنۆԆ׆؆چ܆" \ No newline at end of file +6׆ӆԆՆֆ"= +.؆نچۆ"= +WԆֆӆՆ׆؆نچۆ"  +]Ԇֆ׆؆ۆӆՆنچ܆" \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 64b5293ed77edc0cde99d4fe9f324cc6670cc666..7874dea7fc6f501205f4137b1e1caf5bbdc604ba 100644 GIT binary patch delta 312 zcmX@lf1ZCrxF83|!d^Ck3vJ9+Y#d8~EdGfZZ)Mpy76F-DRuIVpEw)?=9J~Td63hy$ z8eEebn8YV{GHOn4W)hivjL|?4qFMx@dNMnci4Z5);D%dAIDsaEj5FHo%QTg7atXUo zyaOYbD#y|}i~>>;tUx1ywi_@)Ri#)#HLiWc0#v5Pu?(n80jz96FB?!9JJ_%jj4*XT z3xMjBI5xgw6krCbW6?;Nyq-~fau!Pr$gasZSlZEC*w9%uxq$Vz5X4z>P=gNiZfBfa X%a$RG#e&H{*lH#}Viua*#_kCK&_z`Y delta 239 zcmX@lf1ZCrxF8$Hl3q3eek%@+g+Tg38}r1Bx09Qh1QoaxICuq^B$yRgHMk5It=Kpg z0p+=%>JGHnPHtn=0qRBtsPDiOK(1*f^H~MHIjyA6aF2l{hxOViaHo@>w)eCO0sN xPtIbA0coFngQb1)bY`*1rL5m3x3CILu4T)Z{DW0^@(;F}$&=ZHCbzMB0sy-7K>h## diff --git a/srvdata/config.go b/srvdata/config.go index dc70a46..218836c 100644 --- a/srvdata/config.go +++ b/srvdata/config.go @@ -25,7 +25,7 @@ func (fmc *DatFileModifiedCommand) Done(o *basic.Object) error { for k, v := range DataMgr.GetLoader(fn) { err := v.Reload(fmc.fileName) if err != nil { - logger.Logger.Warnf(fn, "%v loader %v err: %v", fn, k, err) + logger.Logger.Warnf("%v loader %v err: %v", fn, k, err) } } return nil diff --git a/tools/xlsx2binary/agc.go b/tools/xlsx2binary/agc.go deleted file mode 100644 index a94f3b9..0000000 --- a/tools/xlsx2binary/agc.go +++ /dev/null @@ -1,12905 +0,0 @@ - -// Code generated by xlsx2proto. -// DO NOT EDIT! - -package main -import ( - "encoding/json" - "fmt" - "os" - "runtime" - "strconv" - "strings" - - "github.com/tealeg/xlsx" - "google.golang.org/protobuf/proto" - - "mongo.games.com/game/protocol/server" -) - -var _ = strings.Split - - -func AgcConvertDB_ActSign(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ActSignArray{ - Arr:make([]*server.DB_ActSign, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ActSign{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Name = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Item_Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Grade = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Activity1(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Activity1Array{ - Arr:make([]*server.DB_Activity1, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Activity1{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Parameter = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Turn = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.Title = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Costype = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Costp = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Cost = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Typee = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Propid = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Value = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Getype = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_AnimalColor(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_AnimalColorArray{ - Arr:make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_AnimalColor{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Desc = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.ColorChance = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ArtilleryRate(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ArtilleryRateArray{ - Arr:make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ArtilleryRate{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Shell = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.Desc = row.Cells[3].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ArtillerySkin(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ArtillerySkinArray{ - Arr:make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ArtillerySkin{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.CannonId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.ExprieTime = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Show = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Order = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - - - data.NameIcon = row.Cells[7].String() - - - - - - - if len(row.Cells)<8+1{ - break - } - - - - data.PicIcon = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ - break - } - - - - data.BaseIcon = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ - break - } - - - - data.ShellIcon = row.Cells[10].String() - - - - - - - if len(row.Cells)<11+1{ - break - } - - - - data.NetIcon = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[12].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[12].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Vip = arrInt - - - - - - if len(row.Cells)<13+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) - data.Gold = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Diamond = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.Income = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) - data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) - data.Caught = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) - data.Introduce = int32(temp) - - - - - - - - - if len(row.Cells)<19+1{ - break - } - - - - data.Source = row.Cells[19].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_BlackWhite(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_BlackWhiteArray{ - Arr:make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_BlackWhite{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.BlackOdds = arrInt - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.WhiteOdds = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_CardsJD(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CardsJDArray{ - Arr:make([]*server.DB_CardsJD, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_CardsJD{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Card1 = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Card1Score = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Card1HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.Change1Cards = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - - - data.Card2 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Card2Score = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Card2HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - - - data.Change2Cards = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ - break - } - - - - data.Card3 = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Card3Score = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.Card3HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - - - data.Change3Cards = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - data.Card4 = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Card4Score = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.Card4HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - - - data.Change4Cards = row.Cells[16].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_CardsYuLe(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CardsYuLeArray{ - Arr:make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_CardsYuLe{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Card1 = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Card1Score = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Card1HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.Change1Cards = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - - - data.Card2 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Card2Score = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Card2HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - - - data.Change2Cards = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ - break - } - - - - data.Card3 = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Card3Score = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.Card3HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - - - data.Change3Cards = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - data.Card4 = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Card4Score = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.Card4HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - - - data.Change4Cards = row.Cells[16].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ChessBilledRules(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessBilledRulesArray{ - Arr:make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ChessBilledRules{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.TypeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.WinScore = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.LoseScore = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.DrawScore = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.WinTimes = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.OtherScore = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ChessMatchRules(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessMatchRulesArray{ - Arr:make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ChessMatchRules{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.ScoreMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.ScoreMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.MatchScoreMin = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.MatchScoreMax = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MatchScoreLowStep = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MatchScoreHightStep = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ChessRank(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessRankArray{ - Arr:make([]*server.DB_ChessRank, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ChessRank{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Score = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ClientVer(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ClientVerArray{ - Arr:make([]*server.DB_ClientVer, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ClientVer{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.PackageFlag = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.PackVers = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.GameVers = row.Cells[3].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_CollectBox(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CollectBoxArray{ - Arr:make([]*server.DB_CollectBox, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_CollectBox{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Rate = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - - - - if row.Cells[2].String() != ""{ - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.ItemID = resultMap - } - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_CollectBoxGain(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CollectBoxGainArray{ - Arr:make([]*server.DB_CollectBoxGain, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_CollectBoxGain{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Rate = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_CrashSearch(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CrashSearchArray{ - Arr:make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_CrashSearch{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Time = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Price = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Createroom(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CreateroomArray{ - Arr:make([]*server.DB_Createroom, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Createroom{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.GameSite = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.GoldRange = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.BetRange = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Fish(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishArray{ - Arr:make([]*server.DB_Fish, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Fish{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.NameE = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Gold = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.Icon = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Exp = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.FrameCnt = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.FrameDelay = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Rate = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.ShowType = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.Show = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.ShowScale = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[13].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[13].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.ShowPos = arrInt - - - - - - if len(row.Cells)<14+1{ - break - } - - - - data.DieSound = row.Cells[14].String() - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.DieFrame = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) - data.DieRotate = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) - data.DieEffect = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) - data.DieShake = int32(temp) - - - - - - - - - if len(row.Cells)<19+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) - data.ShakeRange = int32(temp) - - - - - - - - - if len(row.Cells)<20+1{ - break - } - - - - data.Shape = row.Cells[20].String() - - - - - - - if len(row.Cells)<21+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) - data.IsBoss = int32(temp) - - - - - - - - - if len(row.Cells)<22+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) - data.ResId = int32(temp) - - - - - - - - - if len(row.Cells)<23+1{ - break - } - - - - data.DieParticle = row.Cells[23].String() - - - - - - - if len(row.Cells)<24+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) - data.GroupShape = int32(temp) - - - - - - - - - if len(row.Cells)<25+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[25].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[25].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.GroupFishes = arrInt - - - - - - if len(row.Cells)<26+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) - data.Zorder = int32(temp) - - - - - - - - - if len(row.Cells)<27+1{ - break - } - - - - data.ResPng = row.Cells[27].String() - - - - - - - if len(row.Cells)<28+1{ - break - } - - - - data.ResPlist = row.Cells[28].String() - - - - - - - if len(row.Cells)<29+1{ - break - } - - - - data.ExportJson = row.Cells[29].String() - - - - - - - if len(row.Cells)<30+1{ - break - } - - - - data.AimIcon = row.Cells[30].String() - - - - - - - if len(row.Cells)<31+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[31].String(), 10, 32) - data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<32+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[32].String(), 10, 32) - data.Sort = int32(temp) - - - - - - - - - if len(row.Cells)<33+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[33].String(), 10, 32) - data.FishType = int32(temp) - - - - - - - - - if len(row.Cells)<34+1{ - break - } - - - - data.RandomCoin = row.Cells[34].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FishOut(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishOutArray{ - Arr:make([]*server.DB_FishOut, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FishOut{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.SceneType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Exp = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Multiple = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Path = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Count = arrInt - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.RefreshInterval = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Event = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FishPath(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishPathArray{ - Arr:make([]*server.DB_FishPath, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FishPath{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.AppearTime = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.DisappearTime = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FishRoom(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishRoomArray{ - Arr:make([]*server.DB_FishRoom, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FishRoom{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.RoomId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.SumGold1 = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.SumGold2 = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - - - data.SumGold3 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ - break - } - - - - data.SumGold4 = row.Cells[6].String() - - - - - - - if len(row.Cells)<7+1{ - break - } - - - - data.SumGold5 = row.Cells[7].String() - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.BossCDTime = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.LittleBossCDTime = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - - - data.EnableBoss = row.Cells[10].String() - - - - - - - if len(row.Cells)<11+1{ - break - } - - - - data.EnableLittleBoss = row.Cells[11].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FishSkill(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishSkillArray{ - Arr:make([]*server.DB_FishSkill, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FishSkill{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Vip = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Consume = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Item = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.OtherConsumer = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Multiple = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Duration = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.SkillGroups = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.GCD = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Cooldown = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - - - data.Hidden = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ - break - } - - - - data.Describe = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - data.Boss = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.Limit = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) - data.Mutex = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) - data.MutexTime = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) - data.Fury = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FortuneGod_Odds(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_OddsArray{ - Arr:make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FortuneGod_Odds{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Rateodds3 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Rateodds4 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Rateodds5 = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_TurnRateArray{ - Arr:make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FortuneGod_TurnRate{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.ReturnRateMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.ReturnRateMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Chance = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FortuneGod_Weight(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_WeightArray{ - Arr:make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FortuneGod_Weight{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Weight = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_WeightConditionArray{ - Arr:make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_FortuneGod_WeightCondition{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.IsNew = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.BetScope = arrInt - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.TrueCalcRate = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.WeightId = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GamMatchLV(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GamMatchLVArray{ - Arr:make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GamMatchLV{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[1].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[1].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Star = arrInt - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Star2 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.AwardType1 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.AwardId1 = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Number1 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.AwardType2 = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.AwardId2 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Number2 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.AwardType3 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.AwardId3 = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.Number3 = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameCoinPool(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameCoinPoolArray{ - Arr:make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameCoinPool{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) - data.InitValue = int64(temp) - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) - data.LowerLimit = int64(temp) - - - - - - - - if len(row.Cells)<5+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) - data.UpperLimit = int64(temp) - - - - - - - - if len(row.Cells)<6+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) - data.QuDu = int64(temp) - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.UpperOdds = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.UpperOddsMax = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.LowerOdds = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.LowerOddsMax = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.ProfitRate = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.CtrlRate = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 64) - data.InitNovicValue = int64(temp) - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameFree(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameFreeArray{ - Arr:make([]*server.DB_GameFree, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameFree{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Title = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.GameMode = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.FreeMode = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.GameRule = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.GameType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.SceneType = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.SceneAdd = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - - - data.Desc = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.ShowType = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) - data.SubShowType = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Flag = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) - data.TestTakeCoin = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) - data.ShowId = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 64) - data.LimitCoin = int64(temp) - - - - - - - - if len(row.Cells)<18+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 64) - data.MaxCoinLimit = int64(temp) - - - - - - - - if len(row.Cells)<19+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) - data.ServiceFee = int32(temp) - - - - - - - - - if len(row.Cells)<20+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[20].String(), 10, 64) - data.LowerThanKick = int64(temp) - - - - - - - - if len(row.Cells)<21+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) - data.BaseScore = int32(temp) - - - - - - - - - if len(row.Cells)<22+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) - data.Turn = int32(temp) - - - - - - - - - if len(row.Cells)<23+1{ - break - } - - - - data.BetDec = row.Cells[23].String() - - - - - - - if len(row.Cells)<24+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) - data.Bot = int32(temp) - - - - - - - - - if len(row.Cells)<25+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[25].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[25].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Ai = arrInt - - - - - - if len(row.Cells)<26+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) - data.Banker = int32(temp) - - - - - - - - - if len(row.Cells)<27+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[27].String(), 10, 32) - data.MaxChip = int32(temp) - - - - - - - - - if len(row.Cells)<28+1{ - break - } - - - - - - - arrStr = strings.Split(row.Cells[28].String(), "|") - arrInt64 = nil - if len(arrStr) > 0 && row.Cells[28].String() != "" { - arrInt64 = make([]int64, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) - arrInt64[i] = int64(temp) - } - } - data.OtherIntParams = arrInt64 - - - - if len(row.Cells)<29+1{ - break - } - - - - - - - arrStr = strings.Split(row.Cells[29].String(), "|") - arrInt64 = nil - if len(arrStr) > 0 && row.Cells[29].String() != "" { - arrInt64 = make([]int64, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) - arrInt64[i] = int64(temp) - } - } - data.ChessScoreParams = arrInt64 - - - - if len(row.Cells)<30+1{ - break - } - - - - - - - arrStr = strings.Split(row.Cells[30].String(), "|") - arrInt64 = nil - if len(arrStr) > 0 && row.Cells[30].String() != "" { - arrInt64 = make([]int64, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) - arrInt64[i] = int64(temp) - } - } - data.RankScoreParams = arrInt64 - - - - if len(row.Cells)<31+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[31].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[31].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Jackpot = arrInt - - - - - - if len(row.Cells)<32+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[32].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[32].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.RobotNumRng = arrInt - - - - - - if len(row.Cells)<33+1{ - break - } - - - - - - - arrStr = strings.Split(row.Cells[33].String(), "|") - arrInt64 = nil - if len(arrStr) > 0 && row.Cells[33].String() != "" { - arrInt64 = make([]int64, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) - arrInt64[i] = int64(temp) - } - } - data.RobotTakeCoin = arrInt64 - - - - if len(row.Cells)<34+1{ - break - } - - - - - - - arrStr = strings.Split(row.Cells[34].String(), "|") - arrInt64 = nil - if len(arrStr) > 0 && row.Cells[34].String() != "" { - arrInt64 = make([]int64, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 64) - arrInt64[i] = int64(temp) - } - } - data.RobotLimitCoin = arrInt64 - - - - if len(row.Cells)<35+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[35].String(), 10, 32) - data.BetLimit = int32(temp) - - - - - - - - - if len(row.Cells)<36+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[36].String(), 10, 32) - data.TaxRate = int32(temp) - - - - - - - - - if len(row.Cells)<37+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[37].String(), 10, 32) - data.SameIpLimit = int32(temp) - - - - - - - - - if len(row.Cells)<38+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[38].String(), 10, 32) - data.SamePlaceLimit = int32(temp) - - - - - - - - - if len(row.Cells)<39+1{ - break - } - - - - data.GameDif = row.Cells[39].String() - - - - - - - if len(row.Cells)<40+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[40].String(), 10, 32) - data.GameClass = int32(temp) - - - - - - - - - if len(row.Cells)<41+1{ - break - } - - - - data.PlatformName = row.Cells[41].String() - - - - - - - if len(row.Cells)<42+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[42].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[42].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MaxBetCoin = arrInt - - - - - - if len(row.Cells)<43+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[43].String(), 10, 32) - data.PlayNumLimit = int32(temp) - - - - - - - - - if len(row.Cells)<44+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[44].String(), 10, 32) - data.CreateRoomNum = int32(temp) - - - - - - - - - if len(row.Cells)<45+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[45].String(), 10, 32) - data.MatchTrueMan = int32(temp) - - - - - - - - - if len(row.Cells)<46+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[46].String(), 10, 32) - data.PlayerWaterRate = int32(temp) - - - - - - - - - if len(row.Cells)<47+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[47].String(), 10, 32) - data.MatchMode = int32(temp) - - - - - - - - - if len(row.Cells)<48+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[48].String(), 10, 32) - data.KillingRate = int32(temp) - - - - - - - - - if len(row.Cells)<49+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[49].String(), 10, 32) - data.BetWaterRate = int32(temp) - - - - - - - - - if len(row.Cells)<50+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[50].String(), 10, 32) - data.Lottery = int32(temp) - - - - - - - - - if len(row.Cells)<51+1{ - break - } - - - - data.LotteryConfig = row.Cells[51].String() - - - - - - - if len(row.Cells)<52+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[52].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[52].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.BalanceLine = arrInt - - - - - - if len(row.Cells)<53+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[53].String(), 10, 32) - data.JackpotRatio = int32(temp) - - - - - - - - - if len(row.Cells)<54+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[54].String(), 10, 32) - data.JackpotMin = int32(temp) - - - - - - - - - if len(row.Cells)<55+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[55].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[55].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.ChessGradeLimit = arrInt - - - - - - if len(row.Cells)<56+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[56].String(), 10, 32) - data.LeaveDeduct = int32(temp) - - - - - - - - - if len(row.Cells)<57+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[57].String(), 10, 32) - data.LeaveCombat = int32(temp) - - - - - - - - - if len(row.Cells)<58+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[58].String(), 10, 32) - data.IntuseCannonMin = int32(temp) - - - - - - - - - if len(row.Cells)<59+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[59].String(), 10, 32) - data.IntuseCannonMax = int32(temp) - - - - - - - - - if len(row.Cells)<60+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[60].String(), 10, 32) - data.BossDrainageBet = int32(temp) - - - - - - - - - if len(row.Cells)<61+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[61].String(), 10, 32) - data.Draw = int32(temp) - - - - - - - - - if len(row.Cells)<62+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[62].String(), 10, 64) - data.Fluctuate = int64(temp) - - - - - - - - if len(row.Cells)<63+1{ - break - } - - - - data.FluctuateMax = row.Cells[63].String() - - - - - - - if len(row.Cells)<64+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[64].String(), 10, 32) - data.Ratio = int32(temp) - - - - - - - - - if len(row.Cells)<65+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[65].String(), 10, 64) - data.MinValue = int64(temp) - - - - - - - - if len(row.Cells)<66+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[66].String(), 10, 64) - data.MaxValue = int64(temp) - - - - - - - - if len(row.Cells)<67+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[67].String(), 10, 32) - data.DrainageBet = int32(temp) - - - - - - - - - if len(row.Cells)<68+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[68].String(), 10, 32) - data.DiamondDrop = int32(temp) - - - - - - - - - if len(row.Cells)<69+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[69].String(), 10, 32) - data.NegativeMax = int32(temp) - - - - - - - - - if len(row.Cells)<70+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[70].String(), 10, 32) - data.RatioMax = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameItem(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameItemArray{ - Arr:make([]*server.DB_GameItem, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameItem{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.ShowLocation = arrInt - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Classify = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Effect0 = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Effect = arrInt - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.SaleType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.SaleGold = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Composition = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.CompositionMax = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.Time = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - - - data.Location = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - data.Describe = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 64) - data.Num = int64(temp) - - - - - - - - if len(row.Cells)<15+1{ - break - } - - - - data.Value = row.Cells[15].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameMatchLevel(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameMatchLevelArray{ - Arr:make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameMatchLevel{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.MatchLevel = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.RobotUpRatio = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.UpGrade = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.UpGradeOdds = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.DownGrade = arrInt - - - - - - if len(row.Cells)<7+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[7].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[7].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.DownGradeOdds = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameRule(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameRuleArray{ - Arr:make([]*server.DB_GameRule, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameRule{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.GameMode = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Params = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - data.RuleDesc = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ - break - } - - - - data.GameDif = row.Cells[6].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GameSubsidy(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameSubsidyArray{ - Arr:make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GameSubsidy{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.LimitNum = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Get = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Times = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Game_Drop(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_DropArray{ - Arr:make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Game_Drop{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Bet = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.ItemName1 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.ItemId1 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Rate1 = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Amount1 = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Game_Introduction(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_IntroductionArray{ - Arr:make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Game_Introduction{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.Story = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.AwardTitle = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.LevelMax = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Game_Pet(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_PetArray{ - Arr:make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Game_Pet{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.PetId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Fragment = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Amount = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.AwardType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Award = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.AwardRate = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Game_Role(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_RoleArray{ - Arr:make([]*server.DB_Game_Role, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Game_Role{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.RoleId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Fragment = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Amount = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.AwardType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Award = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.AwardRate = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GiftBox(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GiftBoxArray{ - Arr:make([]*server.DB_GiftBox, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GiftBox{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Rate = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - - - - if row.Cells[2].String() != ""{ - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.ItemID = resultMap - } - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_GiftCard(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GiftCardArray{ - Arr:make([]*server.DB_GiftCard, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_GiftCard{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.ShopID = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - - - - if row.Cells[3].String() != ""{ - pairs := strings.Split(row.Cells[3].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Rewards = resultMap - } - - - if len(row.Cells)<4+1{ - break - } - - - - - - - - if row.Cells[4].String() != ""{ - pairs := strings.Split(row.Cells[4].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.DayRewards = resultMap - } - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Time = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Equity = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_IceAgeElementRate(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_IceAgeElementRateArray{ - Arr:make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_IceAgeElementRate{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.ModeName = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.ModeType = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Params = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Legend_Odds(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_OddsArray{ - Arr:make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Legend_Odds{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Rateodds3 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Rateodds4 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Rateodds5 = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Legend_TurnRate(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_TurnRateArray{ - Arr:make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Legend_TurnRate{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.ReturnRateMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.ReturnRateMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Chance = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Legend_Weight(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_WeightArray{ - Arr:make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Legend_Weight{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Weight = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Legend_WeightCondition(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_WeightConditionArray{ - Arr:make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Legend_WeightCondition{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.IsNew = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[2].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[2].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.BetScope = arrInt - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.TrueCalcRate = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.WeightId = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_MatchRank(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_MatchRankArray{ - Arr:make([]*server.DB_MatchRank, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_MatchRank{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[1].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[1].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.RankStar = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Name(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameArray{ - Arr:make([]*server.DB_Name, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Name{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_NameBoy(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameBoyArray{ - Arr:make([]*server.DB_NameBoy, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_NameBoy{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_NameGirl(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameGirlArray{ - Arr:make([]*server.DB_NameGirl, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_NameGirl{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_NewPlayer(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NewPlayerArray{ - Arr:make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_NewPlayer{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Condition1 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) - data.ConditionValue1 = int64(temp) - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Condition2 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) - data.ConditionValue2 = int64(temp) - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Bond = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.AddType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 64) - data.AddMax = int64(temp) - - - - - - - - if len(row.Cells)<9+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 64) - data.AddMin = int64(temp) - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.TianHuRate = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PhoneLottery(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PhoneLotteryArray{ - Arr:make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PhoneLottery{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Name = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Item_Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Odd = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Oddrate1 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Odd2 = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Oddrate2 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Odd3 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Oddrate3 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.Oddrate4 = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PigBank_Diamond(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PigBank_DiamondArray{ - Arr:make([]*server.DB_PigBank_Diamond, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PigBank_Diamond{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.BuyCountMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.BuyCountMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.CostDiamond = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Pigbank_Prop(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Pigbank_PropArray{ - Arr:make([]*server.DB_Pigbank_Prop, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Pigbank_Prop{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.PorpName = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.PropValue = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PlayerExp(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerExpArray{ - Arr:make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PlayerExp{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Exp = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PlayerInfo(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerInfoArray{ - Arr:make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PlayerInfo{} - - for { - - if len(row.Cells)<0+1{ - break - } - - - - data.City = row.Cells[0].String() - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Head = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Sex = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PlayerType(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerTypeArray{ - Arr:make([]*server.DB_PlayerType, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PlayerType{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.PayLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.PayUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.GameTimeLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.GameTimeUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.TotalInLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.TotalInUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.OddsLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.OddsUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) - data.LuckyRate = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.ChangeCardRate = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[13].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[13].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.CardValueRange = arrInt - - - - - - if len(row.Cells)<14+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[14].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[14].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MatchPriority = arrInt - - - - - - if len(row.Cells)<15+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[15].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[15].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.ExcludeMatch = arrInt - - - - - - if len(row.Cells)<16+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) - data.CardLibRate = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[17].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[17].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.CardLibArr = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PotOdd(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PotOddArray{ - Arr:make([]*server.DB_PotOdd, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PotOdd{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Title = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.VipOdd = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_PropExchange(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PropExchangeArray{ - Arr:make([]*server.DB_PropExchange, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_PropExchange{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Group = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - - - - - if row.Cells[2].String() != ""{ - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Cost = resultMap - } - - - if len(row.Cells)<3+1{ - break - } - - - - - - - - if row.Cells[3].String() != ""{ - pairs := strings.Split(row.Cells[3].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Gain = resultMap - } - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_RankCycle(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankCycleArray{ - Arr:make([]*server.DB_RankCycle, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_RankCycle{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Start = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.End = row.Cells[2].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_RankLevel(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankLevelArray{ - Arr:make([]*server.DB_RankLevel, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_RankLevel{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.Name = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) - data.Score = int64(temp) - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_RankReward(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankRewardArray{ - Arr:make([]*server.DB_RankReward, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_RankReward{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Award1Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Award1Num = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.Award2Id = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.Award2Num = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) - data.Award3Id = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Award3Num = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Sensitive_Words(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Sensitive_WordsArray{ - Arr:make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Sensitive_Words{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Sensitive_Words = row.Cells[1].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_SlotRateWeight(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_SlotRateWeightArray{ - Arr:make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_SlotRateWeight{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Pos = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[3].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[3].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.NormCol1 = arrInt - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.NormCol2 = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.NormCol3 = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[6].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[6].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.NormCol4 = arrInt - - - - - - if len(row.Cells)<7+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[7].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[7].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.NormCol5 = arrInt - - - - - - if len(row.Cells)<8+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[8].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[8].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.FreeCol1 = arrInt - - - - - - if len(row.Cells)<9+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[9].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[9].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.FreeCol2 = arrInt - - - - - - if len(row.Cells)<10+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[10].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[10].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.FreeCol3 = arrInt - - - - - - if len(row.Cells)<11+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[11].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[11].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.FreeCol4 = arrInt - - - - - - if len(row.Cells)<12+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[12].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[12].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.FreeCol5 = arrInt - - - - - - if len(row.Cells)<13+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[13].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[13].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MaryOut = arrInt - - - - - - if len(row.Cells)<14+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[14].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[14].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.MaryMid = arrInt - - - - - - if len(row.Cells)<15+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[15].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[15].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.JackPot = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_SystemChance(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_SystemChanceArray{ - Arr:make([]*server.DB_SystemChance, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_SystemChance{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Desc = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.ChanceType = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.Coin = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.Rate = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Task(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_TaskArray{ - Arr:make([]*server.DB_Task, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Task{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.Order = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) - data.ActivityType = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.TaskType = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) - data.TargetTimes = int64(temp) - - - - - - - - if len(row.Cells)<7+1{ - break - } - - - temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 64) - data.FinishTimes = int64(temp) - - - - - - - - if len(row.Cells)<8+1{ - break - } - - - - - - - - if row.Cells[8].String() != ""{ - pairs := strings.Split(row.Cells[8].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Award = resultMap - } - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.GameType = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[10].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[10].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Position = arrInt - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ThirdPlatformGameMappingArray{ - Arr:make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_ThirdPlatformGameMapping{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) - data.SystemGameID = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.ThirdPlatformName = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ - break - } - - - - data.ThirdGameID = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - data.Desc = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) - data.ScreenOrientationType = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.ThirdID = int32(temp) - - - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_Tips(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_TipsArray{ - Arr:make([]*server.DB_Tips, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_Tips{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[1].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[1].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.GameId = arrInt - - - - - - if len(row.Cells)<2+1{ - break - } - - - - data.Des = row.Cells[2].String() - - - - - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - -func AgcConvertDB_VIP(fi,fo string) { - xlsxFile, err := xlsx.OpenFile(fi) - if err != nil { - fmt.Println("excel file open error:", err, "filename:", fi) - return - } - - if err := recover(); err != nil { - fmt.Println(" panic,error=", err) - var buf [4096]byte - lens := runtime.Stack(buf[:], false) - fmt.Println("stack--->", string(buf[:lens])) - } - for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_VIPArray{ - Arr:make([]*server.DB_VIP, 0, len(sheet.Rows)), - } - - for i, row := range sheet.Rows { - if i <= 1 { - continue - } - - if len(row.Cells) == 0 { - break - } - - temp := int64(0) - var arrInt []int32 - var arrInt64 []int64 - var arrStr []string - var _ = arrInt - var _ = arrStr - var _ = arrInt64 - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data := &server.DB_VIP{} - - for { - - if len(row.Cells)<0+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) - data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ - break - } - - - - data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) - data.Count = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) - data.VipExp = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[4].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[4].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege1 = arrInt - - - - - - if len(row.Cells)<5+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[5].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[5].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege2 = arrInt - - - - - - if len(row.Cells)<6+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) - data.ShopId2 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[7].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[7].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Privilege3 = arrInt - - - - - - if len(row.Cells)<8+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) - data.Privilege4 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) - data.Privilege5 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) - data.Privilege6 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ - break - } - - - - - - - - if row.Cells[11].String() != ""{ - pairs := strings.Split(row.Cells[11].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Privilege7 = resultMap - } - - - if len(row.Cells)<12+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) - data.Privilege7Price = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) - data.ShopId7 = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ - break - } - - temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) - data.Privilege8 = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[15].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[15].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.Param = arrInt - - - - - - if len(row.Cells)<16+1{ - break - } - - - - - arrStr = strings.Split(row.Cells[16].String(), "|") - arrInt = nil - if len(arrStr) > 0 && row.Cells[16].String() != "" { - arrInt = make([]int32, len(arrStr), len(arrStr)) - for i, v := range arrStr { - temp, _ = strconv.ParseInt(strings.TrimSpace(v), 10, 32) - arrInt[i] = int32(temp) - } - } - data.RewardOutlineID = arrInt - - - - - - if len(row.Cells)<17+1{ - break - } - - - - - - - - if row.Cells[17].String() != ""{ - pairs := strings.Split(row.Cells[17].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // 错误处理 - fmt.Println("无法转换为int64:", kv[1]) - continue - } - resultMap[key] = value - } - data.Award = resultMap - } - - - - break - } - arr.Arr = append(arr.Arr, data) - } - - byteData, err := proto.Marshal(arr) - if err == nil{ - err := os.WriteFile(fo, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - - byteData, err = json.MarshalIndent(arr, "", "\t") - if err == nil { - foJson := strings.Replace(fo, ".dat", ".json", -1) - err := os.WriteFile(foJson, byteData, os.ModePerm) - if err != nil { - fmt.Println(err) - } - } - break //only fetch first sheet - } -} - - -func main(){ - - AgcConvertDB_ActSign(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`,`..\..\data\DB_ActSign.dat`) - - AgcConvertDB_Activity1(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`,`..\..\data\DB_Activity1.dat`) - - AgcConvertDB_AnimalColor(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`,`..\..\data\DB_AnimalColor.dat`) - - AgcConvertDB_ArtilleryRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`,`..\..\data\DB_ArtilleryRate.dat`) - - AgcConvertDB_ArtillerySkin(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`,`..\..\data\DB_ArtillerySkin.dat`) - - AgcConvertDB_BlackWhite(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`,`..\..\data\DB_BlackWhite.dat`) - - AgcConvertDB_CardsJD(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`,`..\..\data\DB_CardsJD.dat`) - - AgcConvertDB_CardsYuLe(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`,`..\..\data\DB_CardsYuLe.dat`) - - AgcConvertDB_ChessBilledRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`,`..\..\data\DB_ChessBilledRules.dat`) - - AgcConvertDB_ChessMatchRules(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`,`..\..\data\DB_ChessMatchRules.dat`) - - AgcConvertDB_ChessRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`,`..\..\data\DB_ChessRank.dat`) - - AgcConvertDB_ClientVer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`,`..\..\data\DB_ClientVer.dat`) - - AgcConvertDB_CollectBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBox.xlsx`,`..\..\data\DB_CollectBox.dat`) - - AgcConvertDB_CollectBoxGain(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CollectBoxGain.xlsx`,`..\..\data\DB_CollectBoxGain.dat`) - - AgcConvertDB_CrashSearch(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`,`..\..\data\DB_CrashSearch.dat`) - - AgcConvertDB_Createroom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`,`..\..\data\DB_Createroom.dat`) - - AgcConvertDB_Fish(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`,`..\..\data\DB_Fish.dat`) - - AgcConvertDB_FishOut(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`,`..\..\data\DB_FishOut.dat`) - - AgcConvertDB_FishPath(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`,`..\..\data\DB_FishPath.dat`) - - AgcConvertDB_FishRoom(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`,`..\..\data\DB_FishRoom.dat`) - - AgcConvertDB_FishSkill(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`,`..\..\data\DB_FishSkill.dat`) - - AgcConvertDB_FortuneGod_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`,`..\..\data\DB_FortuneGod_Odds.dat`) - - AgcConvertDB_FortuneGod_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`,`..\..\data\DB_FortuneGod_TurnRate.dat`) - - AgcConvertDB_FortuneGod_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`,`..\..\data\DB_FortuneGod_Weight.dat`) - - AgcConvertDB_FortuneGod_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`,`..\..\data\DB_FortuneGod_WeightCondition.dat`) - - AgcConvertDB_GamMatchLV(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`,`..\..\data\DB_GamMatchLV.dat`) - - AgcConvertDB_GameCoinPool(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`,`..\..\data\DB_GameCoinPool.dat`) - - AgcConvertDB_GameFree(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`,`..\..\data\DB_GameFree.dat`) - - AgcConvertDB_GameItem(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`,`..\..\data\DB_GameItem.dat`) - - AgcConvertDB_GameMatchLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`,`..\..\data\DB_GameMatchLevel.dat`) - - AgcConvertDB_GameRule(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`,`..\..\data\DB_GameRule.dat`) - - AgcConvertDB_GameSubsidy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`,`..\..\data\DB_GameSubsidy.dat`) - - AgcConvertDB_Game_Drop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`,`..\..\data\DB_Game_Drop.dat`) - - AgcConvertDB_Game_Introduction(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`,`..\..\data\DB_Game_Introduction.dat`) - - AgcConvertDB_Game_Pet(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`,`..\..\data\DB_Game_Pet.dat`) - - AgcConvertDB_Game_Role(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`,`..\..\data\DB_Game_Role.dat`) - - AgcConvertDB_GiftBox(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`,`..\..\data\DB_GiftBox.dat`) - - AgcConvertDB_GiftCard(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_GiftCard.xlsx`,`..\..\data\DB_GiftCard.dat`) - - AgcConvertDB_IceAgeElementRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`,`..\..\data\DB_IceAgeElementRate.dat`) - - AgcConvertDB_Legend_Odds(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`,`..\..\data\DB_Legend_Odds.dat`) - - AgcConvertDB_Legend_TurnRate(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`,`..\..\data\DB_Legend_TurnRate.dat`) - - AgcConvertDB_Legend_Weight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`,`..\..\data\DB_Legend_Weight.dat`) - - AgcConvertDB_Legend_WeightCondition(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`,`..\..\data\DB_Legend_WeightCondition.dat`) - - AgcConvertDB_MatchRank(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`,`..\..\data\DB_MatchRank.dat`) - - AgcConvertDB_Name(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`,`..\..\data\DB_Name.dat`) - - AgcConvertDB_NameBoy(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`,`..\..\data\DB_NameBoy.dat`) - - AgcConvertDB_NameGirl(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`,`..\..\data\DB_NameGirl.dat`) - - AgcConvertDB_NewPlayer(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`,`..\..\data\DB_NewPlayer.dat`) - - AgcConvertDB_PhoneLottery(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`,`..\..\data\DB_PhoneLottery.dat`) - - AgcConvertDB_PigBank_Diamond(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PigBank_Diamond.xlsx`,`..\..\data\DB_PigBank_Diamond.dat`) - - AgcConvertDB_Pigbank_Prop(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Pigbank_Prop.xlsx`,`..\..\data\DB_Pigbank_Prop.dat`) - - AgcConvertDB_PlayerExp(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`,`..\..\data\DB_PlayerExp.dat`) - - AgcConvertDB_PlayerInfo(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`,`..\..\data\DB_PlayerInfo.dat`) - - AgcConvertDB_PlayerType(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`,`..\..\data\DB_PlayerType.dat`) - - AgcConvertDB_PotOdd(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`,`..\..\data\DB_PotOdd.dat`) - - AgcConvertDB_PropExchange(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_PropExchange.xlsx`,`..\..\data\DB_PropExchange.dat`) - - AgcConvertDB_RankCycle(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`,`..\..\data\DB_RankCycle.dat`) - - AgcConvertDB_RankLevel(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`,`..\..\data\DB_RankLevel.dat`) - - AgcConvertDB_RankReward(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`,`..\..\data\DB_RankReward.dat`) - - AgcConvertDB_Sensitive_Words(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`,`..\..\data\DB_Sensitive_Words.dat`) - - AgcConvertDB_SlotRateWeight(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`,`..\..\data\DB_SlotRateWeight.dat`) - - AgcConvertDB_SystemChance(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`,`..\..\data\DB_SystemChance.dat`) - - AgcConvertDB_Task(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`,`..\..\data\DB_Task.dat`) - - AgcConvertDB_ThirdPlatformGameMapping(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`,`..\..\data\DB_ThirdPlatformGameMapping.dat`) - - AgcConvertDB_Tips(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`,`..\..\data\DB_Tips.dat`) - - AgcConvertDB_VIP(`G:\work\server\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`,`..\..\data\DB_VIP.dat`) - -} diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index be7610142d432584d5d05b669fc429e5b8aede62..261d937ae5e1f41742dc9232b43502cf65811da9 100644 GIT binary patch delta 14908 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 GOJVuWP_z2q?6@e@bMyNP)@P(h9UBPjNZ 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 delta 14619 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%0A60*Qu$mDA_QU)o?eK4%cYWx>a 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 LM_tH!Smgf!=IH?h