Blame view

common/commonFunc.go 3.08 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
  
  func EquipmentTypToPos(typ int32) int32 {
  	return int32(math.Floor(float64(typ / EquipmentInterval)))
  }
  
  func EquipmentTToPos(t int) int {
  	switch t {
  	case WeaponT:
  		return Weapon
  	case MailT:
  		return Mail
  	case ShoseT:
  		return Shose
  	case NecklaceT:
  		return Necklace
  	case RingTL:
  		return Ring
  	case RingTR:
  		return Ring
  	default:
  		return -1
  	}
  }
  
  func EquipmentPosToT(pos int32, left bool) int32 {
  	switch pos {
  	case Weapon:
  		return WeaponT
  	case Mail:
  		return MailT
  	case Shose:
  		return ShoseT
  	case Necklace:
  		return NecklaceT
  	case Ring:
  		if left {
  			return RingTL
  		} else {
  			return RingTR
  		}
  	default:
  		return -1
  	}
  }