修复钓鱼插件的逻辑错误 (#724)

* Update fish.go

* Update main.go

* Update fish.go

* Update fish.go

* Update main.go

* Update fish.go

* Update fish.go

* Update main.go
This commit is contained in:
方柳煜 2023-09-03 23:04:26 +08:00 committed by GitHub
parent 673c715d2f
commit a9bb078079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 24 deletions

View File

@ -111,7 +111,7 @@ func init() {
ctx.SendChain(message.Text("[ERROR at fish.go.5]:", err)) ctx.SendChain(message.Text("[ERROR at fish.go.5]:", err))
return return
} }
if equipInfo.Durable < 10 || equipInfo.Durable > 0 { if equipInfo.Durable < 10 && equipInfo.Durable > 0 {
msg = "(你的鱼竿耐久仅剩" + strconv.Itoa(equipInfo.Durable) + ")" msg = "(你的鱼竿耐久仅剩" + strconv.Itoa(equipInfo.Durable) + ")"
} else if equipInfo.Durable <= 0 { } else if equipInfo.Durable <= 0 {
msg = "(你的鱼竿耐已销毁)" msg = "(你的鱼竿耐已销毁)"
@ -198,22 +198,22 @@ func init() {
number := 1 number := 1
dice := rand.Intn(100) dice := rand.Intn(100)
switch { switch {
case dice <= probabilities["waste"].Min && dice < probabilities["waste"].Max: // 垃圾 case dice >= probabilities["waste"].Min && dice < probabilities["waste"].Max: // 垃圾
typeOfThing = "waste" typeOfThing = "waste"
thingName = wasteList[rand.Intn(len(wasteList))] thingName = wasteList[rand.Intn(len(wasteList))]
picName = thingName picName = thingName
case dice <= probabilities["treasure"].Min && dice < probabilities["treasure"].Max: // 宝藏 case dice >= probabilities["treasure"].Min && dice < probabilities["treasure"].Max: // 宝藏
dice = rand.Intn(100) dice = rand.Intn(100)
switch { switch {
case dice <= probabilities["美西螈"].Min && dice < probabilities["美西螈"].Max: case dice >= probabilities["美西螈"].Min && dice < probabilities["美西螈"].Max:
typeOfThing = "pole" typeOfThing = "pole"
picName = "美西螈" picName = "美西螈"
thingName = "美西螈" thingName = "美西螈"
case dice <= probabilities["唱片"].Min && dice < probabilities["唱片"].Max: case dice >= probabilities["唱片"].Min && dice < probabilities["唱片"].Max:
typeOfThing = "article" typeOfThing = "article"
picName = "唱片" picName = "唱片"
thingName = "唱片" thingName = "唱片"
case dice <= probabilities["海之眷顾"].Min && dice < probabilities["海之眷顾"].Max: case dice >= probabilities["海之眷顾"].Min && dice < probabilities["海之眷顾"].Max:
typeOfThing = "article" typeOfThing = "article"
picName = "book" picName = "book"
thingName = "海之眷顾" thingName = "海之眷顾"
@ -222,35 +222,35 @@ func init() {
picName = "book" picName = "book"
thingName = "诱钓" thingName = "诱钓"
} }
case dice <= probabilities["pole"].Min && dice < probabilities["pole"].Max: // 宝藏 case dice >= probabilities["pole"].Min && dice < probabilities["pole"].Max: // 宝藏
typeOfThing = "pole" typeOfThing = "pole"
dice := rand.Intn(100) dice := rand.Intn(100)
switch { switch {
case dice <= probabilities["铁竿"].Min && dice < probabilities["铁竿"].Max: case dice >= probabilities["铁竿"].Min && dice < probabilities["铁竿"].Max:
thingName = "铁竿" thingName = "铁竿"
case dice <= probabilities["金竿"].Min && dice < probabilities["金竿"].Max: case dice >= probabilities["金竿"].Min && dice < probabilities["金竿"].Max:
thingName = "金竿" thingName = "金竿"
case dice <= probabilities["钻石竿"].Min && dice < probabilities["钻石竿"].Max: case dice >= probabilities["钻石竿"].Min && dice < probabilities["钻石竿"].Max:
thingName = "钻石竿" thingName = "钻石竿"
case dice <= probabilities["下界合金竿竿竿"].Min && dice < probabilities["下界合金竿竿竿"].Max: case dice >= probabilities["下界合金竿竿竿"].Min && dice < probabilities["下界合金竿竿竿"].Max:
thingName = "下界合金竿竿竿" thingName = "下界合金竿竿竿"
default: default:
thingName = "木竿" thingName = "木竿"
} }
picName = thingName picName = thingName
case dice <= probabilities["fish"].Min && dice < probabilities["fish"].Max: case dice >= probabilities["fish"].Min && dice < probabilities["fish"].Max:
typeOfThing = "fish" typeOfThing = "fish"
dice = rand.Intn(100) dice = rand.Intn(100)
switch { switch {
case dice <= probabilities["墨鱼"].Min && dice < probabilities["墨鱼"].Max: case dice >= probabilities["墨鱼"].Min && dice < probabilities["墨鱼"].Max:
thingName = "墨鱼" thingName = "墨鱼"
case dice <= probabilities["鳕鱼"].Min && dice < probabilities["鳕鱼"].Max: case dice >= probabilities["鳕鱼"].Min && dice < probabilities["鳕鱼"].Max:
thingName = "鳕鱼" thingName = "鳕鱼"
case dice <= probabilities["鲑鱼"].Min && dice < probabilities["鲑鱼"].Max: case dice >= probabilities["鲑鱼"].Min && dice < probabilities["鲑鱼"].Max:
thingName = "鲑鱼" thingName = "鲑鱼"
case dice <= probabilities["热带鱼"].Min && dice < probabilities["热带鱼"].Max: case dice >= probabilities["热带鱼"].Min && dice < probabilities["热带鱼"].Max:
thingName = "热带鱼" thingName = "热带鱼"
case dice <= probabilities["河豚"].Min && dice < probabilities["河豚"].Max: case dice >= probabilities["河豚"].Min && dice < probabilities["河豚"].Max:
thingName = "河豚" thingName = "河豚"
default: default:
thingName = "鹦鹉螺" thingName = "鹦鹉螺"
@ -262,7 +262,7 @@ func init() {
if thingName != "" { if thingName != "" {
newThing := article{} newThing := article{}
if strings.Contains(thingName, "竿") { if strings.Contains(thingName, "竿") {
info := strconv.Itoa(rand.Intn(discountList[thingName])+1) + info := strconv.Itoa(rand.Intn(durationList[thingName])+1) +
"/" + strconv.Itoa(rand.Intn(10)) + "/" + "/" + strconv.Itoa(rand.Intn(10)) + "/" +
strconv.Itoa(rand.Intn(3)) + "/" + strconv.Itoa(rand.Intn(2)) strconv.Itoa(rand.Intn(3)) + "/" + strconv.Itoa(rand.Intn(2))
newThing = article{ newThing = article{
@ -302,20 +302,22 @@ func init() {
} }
if len(thingNameList) == 1 { if len(thingNameList) == 1 {
thingName := "" thingName := ""
for name := range thingNameList { numberOfFish := 0
for name, number := range thingNameList {
thingName = name thingName = name
numberOfFish = number
} }
if picName != "" { if picName != "" {
pic, err := engine.GetLazyData(picName+".png", false) pic, err := engine.GetLazyData(picName+".png", false)
if err != nil { if err != nil {
logrus.Warnln("[mcfish]error:", err) logrus.Warnln("[mcfish]error:", err)
ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了", thingName, "\n", msg)) ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了", numberOfFish,thingName, "\n", msg))
return return
} }
ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了", thingName, "\n", msg), message.ImageBytes(pic)) ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了",numberOfFish, thingName, "\n", msg), message.ImageBytes(pic))
return return
} }
ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了", thingName, "\n", msg)) ctx.SendChain(message.At(uid), message.Text("恭喜你钓到了",numberOfFish, thingName, "\n", msg))
return return
} }
msgInfo := make(message.Message, 0, 3+len(thingNameList)) msgInfo := make(message.Message, 0, 3+len(thingNameList))

View File

@ -110,7 +110,7 @@ var (
Help: "一款钓鱼模拟器\n----------指令----------\n" + Help: "一款钓鱼模拟器\n----------指令----------\n" +
"- 钓鱼看板/钓鱼商店\n- 购买xxx\n- 购买xxx [数量]\n- 出售xxx\n- 出售xxx [数量]\n" + "- 钓鱼看板/钓鱼商店\n- 购买xxx\n- 购买xxx [数量]\n- 出售xxx\n- 出售xxx [数量]\n" +
"- 钓鱼背包\n- 装备[xx竿|三叉戟|美西螈]\n- 附魔[诱钓|海之眷顾]\n- 修复鱼竿\n- 合成[xx竿|三叉戟]\n" + "- 钓鱼背包\n- 装备[xx竿|三叉戟|美西螈]\n- 附魔[诱钓|海之眷顾]\n- 修复鱼竿\n- 合成[xx竿|三叉戟]\n" +
"- 进行钓鱼\n- 进行n次钓鱼\n" + "- 进行钓鱼\n- 进行n次钓鱼\n- 当前装备概率明细\n" +
"规则:\n1.每日的商店价格是波动的!!如何最大化收益自己考虑一下喔\n" + "规则:\n1.每日的商店价格是波动的!!如何最大化收益自己考虑一下喔\n" +
"2.装备信息:\n-> 木竿 : 耐久上限:30 均价:100 上钩概率:0.7%\n-> 铁竿 : 耐久上限:50 均价:300 上钩概率:0.2%\n-> 金竿 : 耐久上限:70 均价700 上钩概率:0.06%\n" + "2.装备信息:\n-> 木竿 : 耐久上限:30 均价:100 上钩概率:0.7%\n-> 铁竿 : 耐久上限:50 均价:300 上钩概率:0.2%\n-> 金竿 : 耐久上限:70 均价700 上钩概率:0.06%\n" +
"-> 钻石竿 : 耐久上限:100 均价1500 上钩概率:0.03%\n-> 下界合金竿 : 耐久上限:150 均价3100 上钩概率:0.01%\n-> 三叉戟 : 可使钓的鱼类物品数量变成3 耐久上限:300 均价4000 只能合成和交易\n" + "-> 钻石竿 : 耐久上限:100 均价1500 上钩概率:0.03%\n-> 下界合金竿 : 耐久上限:150 均价3100 上钩概率:0.01%\n-> 三叉戟 : 可使钓的鱼类物品数量变成3 耐久上限:300 均价4000 只能合成和交易\n" +
@ -182,7 +182,7 @@ func init() {
min := make(map[string]int, 4) min := make(map[string]int, 4)
for _, info := range articlesInfo.ArticleInfo { for _, info := range articlesInfo.ArticleInfo {
switch { switch {
case info.Type == "pole": case info.Type == "pole" || info.Name == "美西螈":
poleList = append(poleList, info.Name) poleList = append(poleList, info.Name)
case info.Type == "fish": case info.Type == "fish":
fishList = append(fishList, info.Name) fishList = append(fishList, info.Name)
@ -343,6 +343,10 @@ func (sql *fishdb) pickFishFor(uid int64, number int) (fishNames map[string]int,
} }
for i := number; i > 0; i-- { for i := number; i > 0; i-- {
randNumber := rand.Intn(len(fishTypes)) randNumber := rand.Intn(len(fishTypes))
if fishTypes[randNumber].Number <= 0 {
i++
continue
}
fishTypes[randNumber].Number-- fishTypes[randNumber].Number--
err = sql.db.Insert(name, &fishTypes[randNumber]) err = sql.db.Insert(name, &fishTypes[randNumber])
if err != nil { if err != nil {