diff --git a/modules/troll/api_buyorsell.go b/modules/troll/api_buyorsell.go index 57fd91ce8..3cadf5680 100644 --- a/modules/troll/api_buyorsell.go +++ b/modules/troll/api_buyorsell.go @@ -84,24 +84,21 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.TrollBuyOrSell if p == nil { return } + var sellPrice int32 // 交易价格 + if trolltrain.TarinPos == 0 { + sellPrice = goods.Goodsprice * goods.StarMoney / 1000 + } else { + sellPrice = int32(p.Coefficient) * goods.Goodsprice / 1000 + } if v < 0 { // 卖出 - // 卖出价格 - var sellPrice int32 - if trolltrain.TarinPos == 0 { - sellPrice = goods.Goodsprice * goods.StarMoney / 1000 - } else { - - sellPrice = int32(p.Coefficient) * goods.Goodsprice / 1000 - } if sellPrice > trolltrain.Price[k] { // 赚了 - earn += (sellPrice - trolltrain.Price[k]) * trolltrain.Items[k] + earn += (sellPrice - trolltrain.Price[k]) * v } - gold += (sellPrice - trolltrain.Price[k]) * trolltrain.Items[k] + gold += sellPrice * v } else { // 买入 计算平均价格 - totalGold := trolltrain.Items[k] * trolltrain.Price[k] - sellPrice := int32(p.Coefficient) * goods.Goodsprice / 1000 + totalGold := (trolltrain.Items[k] - v) * trolltrain.Price[k] totalGold += v * sellPrice - trolltrain.Price[k] = totalGold / (trolltrain.Items[k] + v) + trolltrain.Price[k] = totalGold / (trolltrain.Items[k]) gold -= v * sellPrice } } @@ -110,10 +107,9 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.TrollBuyOrSell grid := this.configure.GetTrollRule(comm.TrollItemCount) for _, v := range trolltrain.Items { if v > 0 { - gridNum += int32(math.Ceil(float64(v / grid))) + gridNum += int32(math.Ceil(float64(v) / float64(grid))) } } - // 获取背包格子上限配置 trolltrain.GridNum = gridNum if gridNum > this.configure.GetTrollRule(comm.TrollGridCount) { // 背包格子上限 @@ -132,8 +128,13 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.TrollBuyOrSell update["npcLv"] = trolltrain.NpcLv } } - - trolltrain.TotalEarn += int64(earn) // 累计获得的金币 + // 清除数量为0 的 + for k, v := range trolltrain.Items { + if v == 0 { + delete(trolltrain.Items, k) + } + } + trolltrain.TotalEarn += -int64(earn) // 累计获得的金币 update["items"] = trolltrain.Items update["price"] = trolltrain.Price update["totalEarn"] = trolltrain.TotalEarn