mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-03-01 00:35:36 +08:00
角色突破功能
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"hk4e/common/constant"
|
||||
)
|
||||
import "hk4e/common/constant"
|
||||
|
||||
type Item struct {
|
||||
ItemId uint32 `bson:"itemId"` // 道具id
|
||||
@@ -26,8 +24,8 @@ func (p *Player) GetItemGuid(itemId uint32) uint64 {
|
||||
}
|
||||
|
||||
func (p *Player) GetItemCount(itemId uint32) uint32 {
|
||||
isVirtualItem, prop := p.GetVirtualItemProp(itemId)
|
||||
if isVirtualItem {
|
||||
prop, ok := constant.ItemConstantConst.VIRTUAL_ITEM_PROP[itemId]
|
||||
if ok {
|
||||
value := p.PropertiesMap[prop]
|
||||
return value
|
||||
} else {
|
||||
@@ -39,73 +37,28 @@ func (p *Player) GetItemCount(itemId uint32) uint32 {
|
||||
}
|
||||
}
|
||||
|
||||
// 虚拟道具如下 实际值存在玩家的属性上
|
||||
// 原石 201
|
||||
// 摩拉 202
|
||||
// 创世结晶 203
|
||||
// 树脂 106
|
||||
// 传说任务钥匙 107
|
||||
// 洞天宝钱 204
|
||||
|
||||
func (p *Player) GetVirtualItemProp(itemId uint32) (isVirtualItem bool, prop uint16) {
|
||||
switch itemId {
|
||||
case 106:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_RESIN
|
||||
case 107:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_LEGENDARY_KEY
|
||||
case 201:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_HCOIN
|
||||
case 202:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_SCOIN
|
||||
case 203:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_MCOIN
|
||||
case 204:
|
||||
return true, constant.PlayerPropertyConst.PROP_PLAYER_HOME_COIN
|
||||
default:
|
||||
return false, 0
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Player) AddItem(itemId uint32, count uint32) {
|
||||
isVirtualItem, prop := p.GetVirtualItemProp(itemId)
|
||||
if isVirtualItem {
|
||||
value := p.PropertiesMap[prop]
|
||||
value += count
|
||||
p.PropertiesMap[prop] = value
|
||||
} else {
|
||||
itemInfo := p.ItemMap[itemId]
|
||||
if itemInfo == nil {
|
||||
itemInfo = &Item{
|
||||
ItemId: itemId,
|
||||
Count: 0,
|
||||
Guid: p.GetNextGameObjectGuid(),
|
||||
}
|
||||
itemInfo := p.ItemMap[itemId]
|
||||
if itemInfo == nil {
|
||||
itemInfo = &Item{
|
||||
ItemId: itemId,
|
||||
Count: 0,
|
||||
Guid: p.GetNextGameObjectGuid(),
|
||||
}
|
||||
itemInfo.Count += count
|
||||
p.ItemMap[itemId] = itemInfo
|
||||
}
|
||||
itemInfo.Count += count
|
||||
p.ItemMap[itemId] = itemInfo
|
||||
}
|
||||
|
||||
func (p *Player) CostItem(itemId uint32, count uint32) {
|
||||
isVirtualItem, prop := p.GetVirtualItemProp(itemId)
|
||||
if isVirtualItem {
|
||||
value := p.PropertiesMap[prop]
|
||||
if value < count {
|
||||
value = 0
|
||||
} else {
|
||||
value -= count
|
||||
}
|
||||
p.PropertiesMap[prop] = value
|
||||
} else {
|
||||
itemInfo := p.ItemMap[itemId]
|
||||
if itemInfo == nil {
|
||||
return
|
||||
}
|
||||
if itemInfo.Count < count {
|
||||
itemInfo.Count = 0
|
||||
} else {
|
||||
itemInfo.Count -= count
|
||||
}
|
||||
p.ItemMap[itemId] = itemInfo
|
||||
itemInfo := p.ItemMap[itemId]
|
||||
if itemInfo == nil {
|
||||
return
|
||||
}
|
||||
if itemInfo.Count < count {
|
||||
itemInfo.Count = 0
|
||||
} else {
|
||||
itemInfo.Count -= count
|
||||
}
|
||||
p.ItemMap[itemId] = itemInfo
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user