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
f343178a
Commit
f343178a
authored
Apr 15, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix itemoff issue
parent
84f58138
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
1 deletion
+41
-1
doc/etc/20240719_itmpara_fix_itemoff_issue.txt
doc/etc/20240719_itmpara_fix_itemoff_issue.txt
+40
-0
include/game/itemmain.func.php
include/game/itemmain.func.php
+1
-1
No files found.
doc/etc/20240719_itmpara_fix_itemoff_issue.txt
0 → 100644
View file @
f343178a
2024年7月19日 修复装备卸下时 itmpara 数据丢失问题
## 问题描述
在2024年7月19日,游戏中的物品添加了新的字段 $itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。在实现过程中,发现当卸下有 weppara 属性的武器时,其 itmpara 数据会丢失,导致武器返回背包后失去了特殊属性。
## 问题原因
经过检查,发现问题出在 `itemoff` 函数中。当卸下装备时,`$itmpara0` 变量被正确设置为装备的 `$itmpara` 值,但在 `itemget` 函数调用时,这个值没有被正确地传递到背包中的 `itmpara` 字段,因为 `$itmpara0` 变量没有被声明为全局变量。
## 修复内容
1. 修复 `itemoff` 函数中的全局变量声明
- 修改前:
```php
function itemoff($item){
global $log,$mode,$cmd,$itm0,$itmk0,$itme0,$itms0,$itmsk0,$nosta,$pdata;
```
- 修改后:
```php
function itemoff($item){
global $log,$mode,$cmd,$itm0,$itmk0,$itme0,$itms0,$itmsk0,$itmpara0,$nosta,$pdata;
```
2. 检查其他相关函数
- `item.weapon.php` 文件中的装备替换逻辑已经正确处理了 `itmpara` 字段:
```php
// 将背包中的itmpara字段设置为卸下装备的itmpara值
${'itmpara' . $itmn} = $itmparat;
```
## 测试结果
修复后,当卸下有 weppara 属性的武器时,其 itmpara 数据会被正确地保存到背包中的 itmpara 字段,武器的特殊属性不会丢失。
## 注意事项
1. 在处理 itmpara 字段时,需要确保在所有相关函数中都正确声明全局变量
2. 在装备和卸下装备时,需要正确处理 itmpara 字段的传递
3. 在替换装备时,需要确保卸下装备的 itmpara 值被正确地设置到背包中的 itmpara 字段
include/game/itemmain.func.php
View file @
f343178a
...
...
@@ -639,7 +639,7 @@ function itemdrop($item,&$data=NULL) {
}
function
itemoff
(
$item
){
global
$log
,
$mode
,
$cmd
,
$itm0
,
$itmk0
,
$itme0
,
$itms0
,
$itmsk0
,
$nosta
,
$pdata
;
global
$log
,
$mode
,
$cmd
,
$itm0
,
$itmk0
,
$itme0
,
$itms0
,
$itmsk0
,
$
itmpara0
,
$
nosta
,
$pdata
;
if
(
$item
==
'wep'
){
global
$wep
,
$wepk
,
$wepe
,
$weps
,
$wepsk
,
$weppara
;
...
...
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