package main import ( _ "github.com/gogf/gf/contrib/nosql/redis/v2" "golang.org/x/crypto/bcrypt" "blazing/common/data/xmlres" _ "blazing/contrib/files/local" "blazing/login/internal/cmd" // Minio,按需启用 // _ "blazing/contrib/files/minio" // 阿里云OSS,按需启用 // _ "blazing/contrib/files/oss" // _ "blazing/contrib/drivers/sqlite" //_ "blazing/contrib/drivers/mysql" _ "blazing/modules" "github.com/gogf/gf/v2/os/gctx" ) func init() { xmlres.Initfile() } func main() { // superMaps := &xmlres.MonsterRoot{} // err := xml.Unmarshal([]byte(gfile.GetBytes("help/地图配置野怪.xml")), superMaps) // for _, v := range superMaps.Maps { // if v.Monsters != nil { // for _, v1 := range v.Bosses { // if strings.Index(v1.Name, "SPT") != -1 { // //fmt.Println(v.Name, v1) // g.Dump(v.Name, v1) // } // } // } // } // fmt.Println(err) // err := service.RemoteExecuteScript(ip, sshPort, user, password, scriptPort) // if err != nil { // log.Fatal(err) // } // 调用方法 // userInfo, err := service.GetUserInfo("694425176@qq.com", "qq694425176") // if err != nil { // log.Fatal(err) // } // // 输出结果 // fmt.Printf("用户名: %s\n", userInfo.Data.Attributes.Username) // fmt.Printf("显示名: %s\n", userInfo.Data.Attributes.DisplayName) // fmt.Printf("头像: %s\n", userInfo.Data.Attributes.AvatarUrl) // fmt.Printf("加入时间: %s\n", userInfo.Data.Attributes.JoinTime) // fmt.Printf("金钱: %.2f\n", userInfo.Data.Attributes.Money) // fmt.Printf("用户组: %s\n", userInfo.Included[0].Attributes.NameSingular) // password := "12345678" // // 哈希密码 // hash, err := HashPassword(password) // if err != nil { // log.Fatal(err) // } // fmt.Println("哈希结果:", hash) // hash = "$2y$10$027xtOgP6yG8HRPP5zpNdO1ay1MzaxIeBDdNt73VgE2WWQqTUYih2" // // 验证密码 // match := CheckPasswordHash(password, hash) // fmt.Println("密码匹配:", match) // service.NewShinyService().Args(53) //player.TestPureMatrixSplit() // for _, i := range xmlres.ItemsMAP { // cool.DBM(dict.NewDictInfoService().GetModel()).Insert( // g.Map{"typeId": 6, "name": i.Name, "remark": i.ID, "ordernum": 1}, // ) // fmt.Println(i.ID, i.Name) // } //input.Test() // element.TestAllScenarios() // for i := 0; i < 1000000; i++ { // go func() { // ff := &info.LeaveMapOutboundInfo{ // 10001, // } // t := common.NewTomeeHeader(2002, 10001).Pack(ff) // if len(t) != 21 { // panic(t) // } // }() // } //service.TestSendVerificationCode() // for i := 0; i < 10; i++ { // t := model.GenPetInfo(1, 31, 1, 1, 1, 1) // t.ShinyInfo = make([]model.GlowFilter, 1) // // 假设 t 是包含 ShinyInfo 字段的结构体,ShinyInfo 是 GlowFilter 类型的切片 // t.ShinyInfo[0] = model.GlowFilter{ // // 光晕颜色:白色(十六进制 0xFFFFFF),符合 uint32 类型 // Color: 0xFFFFFF, // // 透明度:0.8(0.0~1.0 范围内的合理值,float64 类型) // Alpha: 0.8, // // 水平模糊量:10(0~255 范围内,uint8 类型,略高于默认值6) // BlurX: 10, // // 垂直模糊量:10(与 BlurX 对称,uint8 类型) // BlurY: 10, // // 发光强度:8(0~255 范围内,uint8 类型,略高于默认值2) // Strength: 8, // // 滤镜应用次数:2(1~3 范围内,int 类型,非默认值1) // Quality: 2, // // 内侧发光:true(bool 类型,模拟开启内侧发光) // Inner: true, // // 挖空:false(bool 类型,保持默认逻辑) // Knockout: false, // // 颜色矩阵:标准 RGBA 矩阵(20个uint8,符合 [20]uint8 数组类型) // // 矩阵含义:R=100%、G=100%、B=100%、A=100%,无颜色偏移 // ColorMatrixFilter: [20]uint8{ // 1, 0, 0, 0, 0, // R 通道 // 0, 1, 0, 0, 0, // G 通道 // 0, 0, 1, 0, 0, // B 通道 // 0, 0, 0, 1, 0, // A 通道 // }, // } // service.NewUserService(10001).Pet.PetAdd(t) // } // for i := 0; i < 1000; i++ { // service.NewUserService(10001).Pet.PetAdd(t) // } // service.NewUserService(10001).Pet.PetInfo_One_exec(t.CatchTime, func(pe *model.PetEX) { // fmt.Println(pe.CreateTime) // pe.Data.ID = 100 // }) cmd.Main.Run(gctx.New()) } func kick(id int) { // // go Start(cool.Config.Port) // //go rpc() // go func() { // t := rpc.StartClient(0, &struct{}{}) // err := t.Kick(1) // fmt.Println(err) // //err := t.Kick(1) // err = t.Kick(10001) // fmt.Println(err) // }() } // HashPassword 对密码进行 Bcrypt 哈希 func HashPassword(password string) (string, error) { // bcrypt.DefaultCost = 10,与 Laravel 默认一致 bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) return string(bytes), err } // CheckPasswordHash 验证密码与哈希是否匹配 func CheckPasswordHash(password, hash string) bool { err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) return err == nil }