From 103bc0c232c72f86266a9e9719c0206f1916dcaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Tue, 3 Mar 2026 14:04:41 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(gameplay):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=A9=BA=E9=97=B4=E6=8E=89=E8=90=BD=E7=89=A9=E5=93=81=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在Space结构体中添加DropItemIds字段存储掉落物品配置 - 添加GetDrop方法用于随机获取掉落物品 - 将战斗怪物掉落逻辑从地图服务改为使用空间服务 - 修复屏幕会话中断信号配置为^C BREAKING CHANGE: 掉落物品逻辑从地图服务迁 --- logic/controller/fight_boss野怪和地图怪.go | 6 ++---- logic/service/space/space.go | 19 +++++++++++++++---- modules/base/middleware/server.go | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/logic/controller/fight_boss野怪和地图怪.go b/logic/controller/fight_boss野怪和地图怪.go index 787046643..6cb2bd385 100644 --- a/logic/controller/fight_boss野怪和地图怪.go +++ b/logic/controller/fight_boss野怪和地图怪.go @@ -184,11 +184,9 @@ func (Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundInf } if p.CanGetItem() { - mapinfo := service.NewMapService().GetData(p.Info.MapID) - if len(mapinfo.DropItemIds) > 0 { - - item := int64(mapinfo.DropItemIds[grand.Intn(len(mapinfo.DropItemIds))]) + item := p.GetSpace().GetDrop() + if item != 0 { count := int64(grand.Intn(2) + 1) ok := p.ItemAdd(item, count) if ok { diff --git a/logic/service/space/space.go b/logic/service/space/space.go index 00989ed05..78d969048 100644 --- a/logic/service/space/space.go +++ b/logic/service/space/space.go @@ -44,9 +44,9 @@ type Space struct { WeatherType []uint32 TimeBoss info.S2C_2022 //Weather uint32 - IsTime bool - - PitS *csmap.CsMap[int, []model.MapPit] + IsTime bool + DropItemIds []uint32 + PitS *csmap.CsMap[int, []model.MapPit] } // NewSyncMap 创建一个新的玩家同步map @@ -189,7 +189,7 @@ func (ret *Space) init() { r := service.NewMapService().GetData(ret.ID) if r != nil { - + ret.DropItemIds = r.DropItemIds if r.IsTimeSpace != 0 { ret.IsTime = true } @@ -278,3 +278,14 @@ func (ret *Space) GenWer() { //} } + +func (ret *Space) GetDrop() int64 { + + if len(ret.DropItemIds) > 0 { + + item := int64(ret.DropItemIds[grand.Intn(len(ret.DropItemIds))]) + + return int64(item) + } + return 0 +} diff --git a/modules/base/middleware/server.go b/modules/base/middleware/server.go index a2ae854ba..c2997d50c 100644 --- a/modules/base/middleware/server.go +++ b/modules/base/middleware/server.go @@ -284,7 +284,7 @@ echo "设置执行权限:%s{exe_path}" chmod +x "%s{exe_path}" || { echo "❌ 设置权限失败"; exit 1; } echo "启动Screen会话[%s{screen_name}]..." -screen -dmS "%s{screen_name}" bash -c '"%s{exe_path}" -id=%s{online_id} 2>&1 | tee -a "$HOME/run_%s{randomFileName}.log" stty intr ^_' +screen -dmS "%s{screen_name}" bash -c '"%s{exe_path}" -id=%s{online_id} 2>&1 | tee -a "$HOME/run_%s{randomFileName}.log" stty intr ^C' sleep 2 if screen -ls | grep -q "%s{screen_name}"; then