Commit 2fce5e88 authored by Nemo Ma's avatar Nemo Ma

itmpara fix

parent 523809f3
2024年7月19日 修复 $itmpara 字段在装备交换时的问题
在2024年7月19日,我们修复了将具有itmpara字段的武器装备时,背包里面的itmpara(如itmpara6)没有被正确剔除的问题。
但在修复后,出现了一个新问题:已有itmpara字段的武器在和没有itmpara字段的武器交换时,前者的itmpara字段会被错误地清空,而它应该被保留。
以下是对应此问题的修复记录:
1. 修复 `item.weapon.php` 文件中的装备逻辑
- 在装备武器或防具时,确保清零背包中的 `itmpara` 字段,但保留 `itmpara` 变量中的值
- 修改前:
```php
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
// 清除背包中的itmpara字段
${'itmpara' . $itmn} = '';
```
- 修改后:
```php
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
// 清除背包中的itmpara字段,但保留itmpara变量中的值
${'itmpara' . $itmn} = '';
```
2. 修复 `item.weapon.php` 文件中的替换装备逻辑
- 在替换武器或防具时,确保将卸下装备的 `itmpara` 值正确地设置到背包中的 `itmpara` 字段
- 修改前:
```php
$itm = $itmt;
$itmk = $itmkt;
$itme = $itmet;
$itms = $itmst;
$itmsk = $itmskt;
$itmpara = $itmparat;
// 清除背包中的itmpara字段
${'itmpara' . $itmn} = '';
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
```
- 修改后:
```php
$itm = $itmt;
$itmk = $itmkt;
$itme = $itmet;
$itms = $itmst;
$itmsk = $itmskt;
$itmpara = $itmparat;
// 将背包中的itmpara字段设置为卸下装备的itmpara值
${'itmpara' . $itmn} = $itmparat;
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
```
这些修改确保了当武器或防具被装备时,背包中的 `itmpara` 字段会被正确处理,同时在交换装备时,已有 `itmpara` 字段的武器的 `itmpara` 值会被正确保留。
2024年7月19日 修复 $itmpara 字段在背包中的清零问题
在2024年7月19日,游戏中的物品添加了新的字段$itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。
在实现过程中,发现当将具有itmpara字段的武器装备时,其背包里面的itmpara(如itmpara6)并没有被正确剔除,导致背包中的itmpara字段仍然存在,可能会影响后续的物品操作。
以下是对应此问题的修复记录:
1. 修复 `item.weapon.php` 文件中的装备逻辑
- 在装备武器或防具时,确保清零背包中的 `itmpara` 字段
- 修改前:
```php
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = $itmpara = '';
$itme = $itms = 0;
```
- 修改后:
```php
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
// 清除背包中的itmpara字段
${'itmpara' . $itmn} = '';
```
2. 修复 `item.weapon.php` 文件中的替换装备逻辑
- 在替换武器或防具时,确保清零背包中的 `itmpara` 字段
- 修改前:
```php
$itm = $itmt;
$itmk = $itmkt;
$itme = $itmet;
$itms = $itmst;
$itmsk = $itmskt;
$itmpara = $itmparat;
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
```
- 修改后:
```php
$itm = $itmt;
$itmk = $itmkt;
$itme = $itmet;
$itms = $itmst;
$itmsk = $itmskt;
$itmpara = $itmparat;
// 清除背包中的itmpara字段
${'itmpara' . $itmn} = '';
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
```
这些修改确保了当武器或防具被装备时,背包中的 `itmpara` 字段会被正确清零,避免背包中的 `itmpara` 字段影响后续的物品操作。
2024年7月19日 修复 $itmpara0 字段清零问题
在2024年7月19日,游戏中的物品添加了新的字段$itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。
在实现过程中,发现获得具有itmpara字段的物品时,itmpara0没有被正确清除,导致后续获得的物品可能会继承之前物品的itmpara属性。
以下是对应此问题的修复记录:
1. 修复 `itemget` 函数中的物品合并逻辑
- 在物品合并后,确保清零 `itmpara0` 字段
- 修改前:
```php
$itm0 = $itmk0 = $itmsk0 = '';
$itme0 = $itms0 = 0;
$itmpara0 = '';
$mode = 'command';
return;
```
- 修改后:
```php
$itm0 = $itmk0 = $itmsk0 = $itmpara0 = '';
$itme0 = $itms0 = 0;
$mode = 'command';
return;
```
2. 修复 `itemadd` 函数中的物品添加逻辑
- 在物品添加到背包后,确保清零 `itmpara0` 字段
- 修改前:
```php
${'itm'.$i} = $itm0;
${'itmk'.$i} = $itmk0;
${'itme'.$i} = $itme0;
${'itms'.$i} = $itms0;
${'itmsk'.$i} = $itmsk0;
${'itmpara'.$i} = $itmpara0;
$itm0 = $itmk0 = $itmsk = $itmpara = '';
$itme0 = $itms0 = 0;
```
- 修改后:
```php
${'itm'.$i} = $itm0;
${'itmk'.$i} = $itmk0;
${'itme'.$i} = $itme0;
${'itms'.$i} = $itms0;
${'itmsk'.$i} = $itmsk0;
${'itmpara'.$i} = $itmpara0;
$itm0 = $itmk0 = $itmsk0 = $itmpara0 = '';
$itme0 = $itms0 = 0;
```
这些修改确保了当获得物品时,`itmpara0` 字段会被正确清零,避免后续获得的物品继承之前物品的 `itmpara` 属性。
2024年7月19日 修复 $itmpara 字段清零问题
在2024年7月19日,游戏中的物品添加了新的字段$itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。
在实现过程中,发现当卸下有weppara属性的武器时,其itmpara数据(也即该weppara)并没有被更新·清零,导致如果有没有itmpara数据的武器被换上,该武器也会具有之前的weppara属性。
以下是对应此问题的修复记录:
1. 修复 `weapon_loss` 函数
- 在武器损坏时,确保清零 `weppara` 字段
- 修改前:`$pa['wep'] = '拳头'; $pa['wep_kind'] = 'N'; $pa['wepk'] = 'WN'; $pa['wepe'] = 0; $pa['weps'] = $nosta; $pa['wepsk'] = '';`
- 修改后:`$pa['wep'] = '拳头'; $pa['wep_kind'] = 'N'; $pa['wepk'] = 'WN'; $pa['wepe'] = 0; $pa['weps'] = $nosta; $pa['wepsk'] = ''; $pa['weppara'] = '';`
2. 检查其他相关函数
- `itemoff` 函数:已经正确处理了 `weppara` 字段的清零
- `change_subwep` 函数:已经正确处理了 `weppara` 和 `wep2para` 字段的交换
- `destory_single_equip` 函数:已经正确处理了装备 `para` 字段的清零
- `armor_hurt` 函数:已经正确处理了防具 `para` 字段的清零
这些修改确保了当武器或装备被卸下或损坏时,相应的 `para` 字段会被正确清零,避免新装备的武器或装备继承之前的属性。
...@@ -474,7 +474,7 @@ function item_dice($itmn, &$data) { ...@@ -474,7 +474,7 @@ function item_dice($itmn, &$data) {
$itme1 = $itme2 = $itme3 = $itme4 = $itme5 = $itme6 = 1; $itme1 = $itme2 = $itme3 = $itme4 = $itme5 = $itme6 = 1;
$itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1; $itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1;
$itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = ''; $itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = '';
$itmpara1 = $itmpara2 = $itmpara3 = $itmpara4 = $itmpara5 = $itmpara6 = 0; $itmpara1 = $itmpara2 = $itmpara3 = $itmpara4 = $itmpara5 = $itmpara6 = '';
}else{ }else{
//Otherwise, we swap every item in player's bag with random items at player's location. //Otherwise, we swap every item in player's bag with random items at player's location.
$log .= '一道白光闪过,你背包中的物品都消失了,但是……<br>'; $log .= '一道白光闪过,你背包中的物品都消失了,但是……<br>';
......
...@@ -8,14 +8,14 @@ if (! defined ( 'IN_GAME' )) { ...@@ -8,14 +8,14 @@ if (! defined ( 'IN_GAME' )) {
function item_weapon($itmn, &$data) { function item_weapon($itmn, &$data) {
global $log, $mode, $nosta; global $log, $mode, $nosta;
extract($data, EXTR_REFS); extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn}; $itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn}; $itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn}; $itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn}; $itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn}; $itmsk = & ${'itmsk' . $itmn};
$itmpara = & get_itmpara(${'itmpara' . $itmn}); $itmpara = & get_itmpara(${'itmpara' . $itmn});
if(strpos($itmk, 'W') === 0) { if(strpos($itmk, 'W') === 0) {
$eqp = 'wep'; $eqp = 'wep';
$noeqp = 'WN'; $noeqp = 'WN';
...@@ -44,7 +44,7 @@ function item_weapon($itmn, &$data) { ...@@ -44,7 +44,7 @@ function item_weapon($itmn, &$data) {
$eqp = 'art'; $eqp = 'art';
$noeqp = ''; $noeqp = '';
} }
//global ${$eqp}, ${$eqp.'k'}, ${$eqp.'e'}, ${$eqp.'s'}, ${$eqp.'sk'}; //global ${$eqp}, ${$eqp.'k'}, ${$eqp.'e'}, ${$eqp.'s'}, ${$eqp.'sk'};
//global $artk; //global $artk;
if((($artk=='XX')||($artk=='XY'))&&($eqp == 'art')){ if((($artk=='XX')||($artk=='XY'))&&($eqp == 'art')){
...@@ -72,7 +72,7 @@ function item_weapon($itmn, &$data) { ...@@ -72,7 +72,7 @@ function item_weapon($itmn, &$data) {
$itmnumlimit = $itme>=$itms ? $itms : $itme; $itmnumlimit = $itme>=$itms ? $itms : $itme;
} }
if (($noeqp && strpos(${$eqp.'k'}, $noeqp) === 0) || !${$eqp.'s'}) { if (($noeqp && strpos(${$eqp.'k'}, $noeqp) === 0) || !${$eqp.'s'}) {
// 装备道具时,进行单次套装检测 // 装备道具时,进行单次套装检测
include_once GAME_ROOT.'./include/game/itemmain.func.php'; include_once GAME_ROOT.'./include/game/itemmain.func.php';
reload_single_set_item($data,$eqp,$itm,1); reload_single_set_item($data,$eqp,$itm,1);
...@@ -84,8 +84,10 @@ function item_weapon($itmn, &$data) { ...@@ -84,8 +84,10 @@ function item_weapon($itmn, &$data) {
${$eqp.'sk'} = $itmsk; ${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara; ${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>"; $log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = $itmpara = ''; $itm = $itmk = $itmsk = '';
$itme = $itms = 0; $itme = $itms = 0;
// 清除背包中的itmpara字段,但保留itmpara变量中的值
${'itmpara' . $itmn} = '';
} else { } else {
// 替换装备时,进行单次套装检测 // 替换装备时,进行单次套装检测
...@@ -113,6 +115,8 @@ function item_weapon($itmn, &$data) { ...@@ -113,6 +115,8 @@ function item_weapon($itmn, &$data) {
$itms = $itmst; $itms = $itmst;
$itmsk = $itmskt; $itmsk = $itmskt;
$itmpara = $itmparat; $itmpara = $itmparat;
// 将背包中的itmpara字段设置为卸下装备的itmpara值
${'itmpara' . $itmn} = $itmparat;
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>"; $log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
} }
} }
This diff is collapsed.
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