Blame view

common/commonFunc.go 2.82 KB
101d1cc1   zhangqijia   feat: 一个基于redis的自...
1
2
3
  package common
  
  import (
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
4
  	"bytes"
f415f471   zhangqijia   fix: roleID自增加上限制...
5
  	"errors"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
6
7
  	"fmt"
  	"github.com/garyburd/redigo/redis"
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
8
  	"math"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
9
  	"pro2d/common/db/redisproxy"
4a502dd5   zhangqijia   fix: game,account...
10
  	"strconv"
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
11
  	"strings"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
12
13
14
  )
  
  func GetNextRoleId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
15
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
16
17
18
  	if err != nil {
  		return "", err
  	}
f415f471   zhangqijia   fix: roleID自增加上限制...
19
20
21
22
23
24
25
26
27
  	ID, err := redis.Int64(relay, err)
  	if err != nil {
  		return "", err
  	}
  
  	//roleID的范围 [GlobalSconf.ID*MaxRoleNum, GlobalSconf.ID*MaxRoleNum + MaxRoleNum]
  	if ID-GlobalSconf.ID*MaxRoleNum >= MaxCommNum-1 {
  		return "", errors.New("DB_FULL")
  	}
101d1cc1   zhangqijia   feat: 一个基于redis的自...
28
  
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
29
  	relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role", 1)
f415f471   zhangqijia   fix: roleID自增加上限制...
30
  	ID, err = redis.Int64(relay, err)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
31
32
33
34
35
36
37
  	if err != nil {
  		return "", err
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
  
  func GetNextUId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
38
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
39
40
41
42
43
44
45
  	if err != nil {
  		return "", err
  	}
  
  	var ID int64 = 0
  	if relay == nil {
  		ID = 90000
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
46
  		redisproxy.HSET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", ID)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
47
  	} else {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
48
  		relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", 1)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
49
50
51
52
53
54
55
  		ID, err = redis.Int64(relay, err)
  		if err != nil {
  			return "", err
  		}
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
56
57
  
  type IMapString map[string]interface{}
ddc88bac   zhangqijia   fix: 记录战斗
58
  type IMapStringNum map[string]int32
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
59
  
4a502dd5   zhangqijia   fix: game,account...
60
  func MapToString(params IMapString) string {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
61
62
63
64
65
66
67
68
69
70
  	var items bytes.Buffer
  	for k, v := range params {
  		items.WriteString(k)
  		items.WriteString("=")
  		items.WriteString(fmt.Sprintf("%v", v))
  		items.WriteString(" ")
  	}
  	return items.String()
  }
  
4a502dd5   zhangqijia   fix: game,account...
71
  func StringToMap(items string, num bool) IMapString {
ddc88bac   zhangqijia   fix: 记录战斗
72
  	backPack := make(map[string]interface{})
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
73
74
75
76
77
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
4a502dd5   zhangqijia   fix: game,account...
78
79
80
81
82
83
84
85
86
  		if num {
  			c, err := strconv.Atoi(ii[1])
  			if err != nil {
  				continue
  			}
  			backPack[ii[0]] = uint32(c)
  		} else {
  			backPack[ii[0]] = ii[1]
  		}
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
87
88
89
  	}
  	return backPack
  }
ddc88bac   zhangqijia   fix: 记录战斗
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  
  func MapNumToString(params IMapStringNum) string {
  	var items bytes.Buffer
  	for k, v := range params {
  		items.WriteString(k)
  		items.WriteString("=")
  		items.WriteString(fmt.Sprintf("%v", v))
  		items.WriteString(" ")
  	}
  	return items.String()
  }
  
  func StringToMapNum(items string) IMapStringNum {
  	backPack := make(IMapStringNum)
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
  		c, err := strconv.Atoi(ii[1])
  		if err != nil {
  			continue
  		}
  		backPack[ii[0]] = int32(c)
  	}
  	return backPack
  }
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
117
  
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
118
  func EquipmentTyp(typ int32) int32 {
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
119
120
121
  	return int32(math.Floor(float64(typ / EquipmentInterval)))
  }
  
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
122
  func EquipmentPosToTyp(t int32) int32 {
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
123
  	switch t {
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
124
  	case WeaponPos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
125
  		return Weapon
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
126
  	case MailPos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
127
  		return Mail
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
128
  	case ShosePos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
129
  		return Shose
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
130
  	case NecklacePos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
131
  		return Necklace
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
132
  	case RingPosL:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
133
  		return Ring
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
134
  	case RingPosR:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
135
136
137
138
139
  		return Ring
  	default:
  		return -1
  	}
  }