Commit f343178a authored by Nemo Ma's avatar Nemo Ma

fix itemoff issue

parent 84f58138
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 字段
...@@ -639,7 +639,7 @@ function itemdrop($item,&$data=NULL) { ...@@ -639,7 +639,7 @@ function itemdrop($item,&$data=NULL) {
} }
function itemoff($item){ 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'){ if($item == 'wep'){
global $wep,$wepk,$wepe,$weps,$wepsk, $weppara; global $wep,$wepk,$wepe,$weps,$wepsk, $weppara;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment