Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
phpdts
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nemo Ma
phpdts
Commits
7a266b77
Commit
7a266b77
authored
Jun 13, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BUGFIX: Enhance Logic
parent
81a6bbd1
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
166 additions
and
25 deletions
+166
-25
command.php
command.php
+41
-20
doc/etc/20241218_fireseed_enhance_refresh_fix.txt
doc/etc/20241218_fireseed_enhance_refresh_fix.txt
+63
-0
doc/etc/20241218_fireseed_item_retrieval_fix.txt
doc/etc/20241218_fireseed_item_retrieval_fix.txt
+61
-0
include/game/club22.func.php
include/game/club22.func.php
+1
-5
No files found.
command.php
View file @
7a266b77
...
@@ -409,41 +409,62 @@ if($hp > 0){
...
@@ -409,41 +409,62 @@ if($hp > 0){
if
(
isset
(
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
])){
if
(
isset
(
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
])){
$item
=
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
];
$item
=
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
];
// 查找空物品栏
// 检查itm0是否为空
$empty_slot
=
0
;
if
(
empty
(
$itm0
)){
for
(
$i
=
1
;
$i
<=
6
;
$i
++
){
// 将物品放入itm0(发现物品栏位)
if
(
empty
(
$
{
'itm'
.
$i
})){
$itm0
=
$item
[
'itm'
];
$empty_slot
=
$i
;
$itmk0
=
$item
[
'itmk'
];
break
;
$itme0
=
$item
[
'itme'
];
}
$itms0
=
$item
[
'itms'
];
}
$itmsk0
=
$item
[
'itmsk'
];
$itmpara0
=
isset
(
$item
[
'itmpara'
])
?
$item
[
'itmpara'
]
:
''
;
if
(
$empty_slot
){
// 将物品添加到玩家物品栏
$
{
'itm'
.
$empty_slot
}
=
$item
[
'itm'
];
$
{
'itmk'
.
$empty_slot
}
=
$item
[
'itmk'
];
$
{
'itme'
.
$empty_slot
}
=
$item
[
'itme'
];
$
{
'itms'
.
$empty_slot
}
=
$item
[
'itms'
];
$
{
'itmsk'
.
$empty_slot
}
=
$item
[
'itmsk'
];
// 从种火物品池中移除物品
// 从种火物品池中移除物品
unset
(
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
]);
unset
(
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
]);
$log
.=
'<span class="lime">你从种火「'
.
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'name'
]
.
'」处获得了物品「'
.
$item
[
'itm'
]
.
'」!</span><br>'
;
$log
.=
'<span class="lime">你从种火「'
.
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'name'
]
.
'」处取回了探索到的物品!</span><br>'
;
// 调用itemfind函数触发物品发现流程
include_once
GAME_ROOT
.
'./include/game/itemmain.func.php'
;
itemfind
(
$pdata
);
}
else
{
}
else
{
$log
.=
'<span class="red">你的物品栏已满,无法获取物品!</span><br>'
;
// itm0已被占用,将物品放入地图并添加到玩家视野
$db
->
query
(
"INSERT INTO
{
$tablepre
}
mapitem (itm, itmk, itme, itms, itmsk, itmpara, pls) VALUES ('
{
$item
[
'itm'
]
}
', '
{
$item
[
'itmk'
]
}
', '
{
$item
[
'itme'
]
}
', '
{
$item
[
'itms'
]
}
', '
{
$item
[
'itmsk'
]
}
', '"
.
addslashes
(
isset
(
$item
[
'itmpara'
])
?
$item
[
'itmpara'
]
:
''
)
.
"', '
$pls
')"
);
$new_item_id
=
$db
->
insert_id
();
// 从种火物品池中移除物品
unset
(
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'items'
][
$item_id
]);
// 将物品添加到玩家视野
include_once
GAME_ROOT
.
'./include/game.func.php'
;
check_add_searchmemory
(
$new_item_id
,
'itm'
,
$item
[
'itm'
],
$pdata
);
// 保存更新后的clbpara数据到数据库
$encoded_clbpara
=
json_encode
(
$clbpara
,
JSON_UNESCAPED_UNICODE
);
$db
->
query
(
"UPDATE
{
$tablepre
}
players SET clbpara='
$encoded_clbpara
' WHERE pid='
$pid
'"
);
$log
.=
'<span class="lime">你从种火「'
.
$clbpara
[
'fireseed'
][
$fireseed_item_id
][
'name'
]
.
'」处取回了探索到的物品「'
.
$item
[
'itm'
]
.
'」!</span><br>'
;
$log
.=
'<span class="yellow">由于你的双手已经拿着其他物品,取回的物品出现在了你的视野中。</span><br>'
;
$mode
=
'command'
;
}
}
}
else
{
}
else
{
$log
.=
'<span class="red">指定的物品不存在!</span><br>'
;
$log
.=
'<span class="red">指定的物品不存在!</span><br>'
;
$mode
=
'command'
;
}
}
}
else
{
}
else
{
$log
.=
'<span class="red">请选择要获取物品的种火和物品!</span><br>'
;
$log
.=
'<span class="red">请选择要获取物品的种火和物品!</span><br>'
;
}
$mode
=
'command'
;
$mode
=
'command'
;
}
}
elseif
(
$sp_cmd
==
'sp_fireseed_enhance'
&&
$club
==
22
){
}
elseif
(
$sp_cmd
==
'sp_fireseed_enhance'
&&
$club
==
22
){
include_once
GAME_ROOT
.
'./include/game/club22.func.php'
;
include_once
GAME_ROOT
.
'./include/game/club22.func.php'
;
if
(
isset
(
$enhance_fireseed_id
)
&&
isset
(
$enhance_item
)){
if
(
isset
(
$enhance_fireseed_id
)
&&
isset
(
$enhance_item
)){
FireseedEnhance
(
$enhance_fireseed_id
,
$enhance_item
);
$enhance_result
=
FireseedEnhance
(
$enhance_fireseed_id
,
$enhance_item
);
if
(
$enhance_result
)
{
// 添加侧边栏刷新标记,确保侧边栏能够实时更新
$log
.=
"<span id='HsUipfcGhU'></span>"
;
$log
.=
'<span class="lime">种火强化成功!</span><br>'
;
$mode
=
'command'
;
}
}
else
{
}
else
{
$log
.=
'<span class="red">请选择要强化的种火和焰火物品!</span><br>'
;
$log
.=
'<span class="red">请选择要强化的种火和焰火物品!</span><br>'
;
}
}
...
...
doc/etc/20241218_fireseed_enhance_refresh_fix.txt
0 → 100644
View file @
7a266b77
2024年12月18日 种火强化操作刷新问题修复记录
## 问题描述
根据用户反馈,枫火歌者进行种火强化时,有着以下的逻辑问题:
- 执行了强化操作后,command和侧边栏都没有实时刷新
- 导致侧边栏中的焰火物品耐久度显示没有下降
- 可以不断重复执行该无意义操作
## 问题分析
1. **数据保存问题**:`FireseedEnhance`函数修改了物品数据(焰火物品的耐久度),但只保存了clbpara数据,没有保存物品数据变化
2. **页面刷新问题**:种火强化操作后,command页面没有刷新,侧边栏也没有刷新
3. **数据同步问题**:这导致侧边栏中的焰火物品耐久度显示没有下降,可以不断重复执行该操作
## 修复方案
1. **统一数据保存逻辑**:移除FireseedEnhance函数中的数据库保存逻辑,让command.php统一处理数据保存
2. **添加侧边栏刷新标记**:在command.php中添加侧边栏刷新标记,确保侧边栏能够实时更新
3. **确保页面正确刷新**:让强化操作后能看到最新的物品状态
## 修复实施
### 修改文件:
1. `include/game/club22.func.php` (第393-394行, 第448-462行)
2. `command.php` (第458-465行)
### 修改内容:
#### 1. club22.func.php 修改:
- **移除数据库保存逻辑**:删除了FireseedEnhance函数中的clbpara数据库保存代码
- **清理不必要的全局变量**:移除了不再使用的$db和$tablepre全局变量声明
- **保持物品消耗逻辑**:保留了焰火物品耐久度减少的逻辑
#### 2. command.php 修改:
- **检查强化结果**:获取FireseedEnhance函数的返回值
- **添加刷新标记**:当强化成功时,添加`<span id='HsUipfcGhU'></span>`标记
- **确保页面刷新**:这个标记会触发侧边栏的刷新
### 技术细节:
1. **数据保存机制**:
- FireseedEnhance函数只负责修改数据,不保存到数据库
- command.php在第963行统一调用player_save($pdata)保存所有数据变化
- 这确保了物品数据和clbpara数据的一致性
2. **刷新机制**:
- `<span id='HsUipfcGhU'></span>`是游戏中用于触发页面刷新的特殊标记
- 这个标记会被JavaScript检测到,触发侧边栏的数据更新
- 确保用户能够看到最新的物品状态
3. **防重复操作**:
- 通过正确的数据保存和页面刷新,确保焰火物品的耐久度正确显示
- 当物品耐久度为0时,物品会被清空,防止重复使用
## 预期效果
- ✅ 种火强化操作后,command页面会正确刷新
- ✅ 侧边栏中的焰火物品耐久度会实时更新
- ✅ 当焰火物品耐久度为0时,物品会从侧边栏中消失
- ✅ 防止玩家重复执行无意义的强化操作
- ✅ 确保数据的一致性和准确性
## 测试建议
1. 测试种火强化操作后页面是否正确刷新
2. 验证侧边栏中焰火物品耐久度是否实时更新
3. 确认当焰火物品耐久度为0时是否正确消失
4. 测试强化操作的数据一致性
doc/etc/20241218_fireseed_item_retrieval_fix.txt
0 → 100644
View file @
7a266b77
2024年12月18日 种火探索物品获取逻辑优化记录
## 问题描述
根据测试玩家反馈,枫火歌者获取探物姿态下的种火探索到的物品逻辑需要优化:
### 当前问题:
1. 获取物品后,玩家操作页面没刷新,但物品直接进入了玩家的背包,这不直观
2. 在1的基础上,如果当时玩家的背包已满,则物品会凭空消失,这是一个问题
### 期望修复方式:
1. 获取物品后,将该物品置放于itm0,也即玩家发现物品的栏位,然后刷新command页面并附带一句文案
2. 如果玩家itm0已经有其他物品,则改为将获取的物品置放入玩家视野(smeo数组)并附带一句文案
## 修复实施
### 修改文件:
- command.php (第405-448行)
### 修改内容:
1. **优化物品获取逻辑**:
- 检查itm0是否为空
- 如果itm0为空,将物品放入itm0并调用itemfind()函数触发物品发现流程
- 如果itm0已占用,将物品放入地图视野并显示相应提示
2. **改进用户体验**:
- 添加了更直观的文案提示
- 确保物品不会凭空消失
- 通过itemfind()函数触发标准的物品发现流程,包括页面刷新
3. **具体实现细节**:
- 当itm0为空时:将物品数据复制到itm0相关变量,调用itemfind()函数
- 当itm0被占用时:将物品插入到mapitem表中,然后使用check_add_searchmemory()函数将其添加到玩家视野(smeo数组)
- 添加了itmpara字段的处理,确保物品参数正确传递
- 使用addslashes()防止SQL注入
- 在两种情况下都正确保存clbpara数据到数据库
### 代码变更摘要:
- 移除了原有的查找空物品栏逻辑
- 添加了itm0状态检查
- 实现了两种不同的物品放置策略
- 改进了用户反馈文案
- 确保了数据库操作的安全性
- 在两种情况下都添加了clbpara数据保存逻辑
- 修正了玩家视野的实现方式,使用check_add_searchmemory()函数正确添加到smeo数组
## 测试建议
1. 测试itm0为空时的物品获取流程
2. 测试itm0被占用时的物品放置到地图的功能
3. 验证物品参数(itmpara)是否正确传递
4. 确认页面刷新和文案显示是否正常
## 预期效果
- 玩家获取种火探索物品时会有更直观的体验
- 物品不会再凭空消失
- 符合游戏中其他物品发现机制的一致性
- 当itm0被占用时,物品会正确出现在玩家视野中,可以通过视野按钮获取
## 重要修正
在初始实现中,错误地将"玩家视野"理解为地图物品。经过修正,现在正确使用了:
- check_add_searchmemory()函数将物品添加到玩家的smeo数组(视野系统)
- 物品会先放入mapitem表,然后通过视野系统让玩家可以看到和获取
include/game/club22.func.php
View file @
7a266b77
...
@@ -391,7 +391,7 @@ function FireseedDrainNPC($pls) {
...
@@ -391,7 +391,7 @@ function FireseedDrainNPC($pls) {
* @return bool 是否成功强化
* @return bool 是否成功强化
*/
*/
function
FireseedEnhance
(
$fireseed_id
,
$item_index
)
{
function
FireseedEnhance
(
$fireseed_id
,
$item_index
)
{
global
$log
,
$fireseed_enhance_multipliers
,
$db
,
$tablepre
;
global
$log
,
$fireseed_enhance_multipliers
;
if
(
!
isset
(
$data
))
{
if
(
!
isset
(
$data
))
{
global
$pdata
;
global
$pdata
;
...
@@ -445,10 +445,6 @@ function FireseedEnhance($fireseed_id, $item_index) {
...
@@ -445,10 +445,6 @@ function FireseedEnhance($fireseed_id, $item_index) {
$clbpara
[
'fireseed'
][
$fireseed_id
][
'arbe'
]
*=
$multiplier
/
$old_level
;
$clbpara
[
'fireseed'
][
$fireseed_id
][
'arbe'
]
*=
$multiplier
/
$old_level
;
}
}
// 将更新后的 clbpara 保存到数据库
$encoded_clbpara
=
json_encode
(
$clbpara
,
JSON_UNESCAPED_UNICODE
);
$db
->
query
(
"UPDATE
{
$tablepre
}
players SET clbpara='
$encoded_clbpara
' WHERE pid='
$pid
'"
);
// 消耗物品
// 消耗物品
$$items_var
--
;
$$items_var
--
;
if
(
$$items_var
<=
0
)
{
if
(
$$items_var
<=
0
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment