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>';
......
...@@ -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>";
} }
} }
...@@ -471,21 +471,22 @@ function itemget(&$data=NULL) ...@@ -471,21 +471,22 @@ function itemget(&$data=NULL)
} }
if(preg_match('/^(WC|WD|WF|Y|B|C|TN|GA|GB|M|V)/',$itmk0) && $itms0 !== $nosta){ if(preg_match('/^(WC|WD|WF|Y|B|C|TN|GA|GB|M|V)/',$itmk0) && $itms0 !== $nosta){
//global $wep,$wepk,$wepe,$weps,$wepsk; //global $wep,$wepk,$wepe,$weps,$wepsk;
if($wep == $itm0 && $wepk == $itmk0 && $wepe == $itme0 && $wepsk == $itmsk0){ if($wep == $itm0 && $wepk == $itmk0 && $wepe == $itme0 && $wepsk == $itmsk0 && $weppara == $itmpara0){
$weps += $itms0; $weps += $itms0;
$log .= "与装备着的武器<span class=\"yellow\">$wep</span>合并了。"; $log .= "与装备着的武器<span class=\"yellow\">$wep</span>合并了。";
$itm0 = $itmk0 = $itmsk0 = ''; $itm0 = $itmk0 = $itmsk0 = $itmpara0 = '';
$itme0 = $itms0 = 0; $itme0 = $itms0 = 0;
$mode = 'command'; $mode = 'command';
return; return;
}else{ }else{
for($i = 1;$i <= 6;$i++){ for($i = 1;$i <= 6;$i++){
//global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i}; //global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
if((${'itms'.$i})&&($itm0 == ${'itm'.$i})&&($itmk0 == ${'itmk'.$i})&&($itme0 == ${'itme'.$i})&&($itmsk0 == ${'itmsk'.$i})){ if((${'itms'.$i})&&($itm0 == ${'itm'.$i})&&($itmk0 == ${'itmk'.$i})&&($itme0 == ${'itme'.$i})&&($itmsk0 == ${'itmsk'.$i})&&($itmpara0 == ${'itmpara'.$i})){
${'itms'.$i} += $itms0; ${'itms'.$i} += $itms0;
$log .= "与包裹里的<span class=\"yellow\">$itm0</span>合并了。"; $log .= "与包裹里的<span class=\"yellow\">$itm0</span>合并了。";
$itm0 = $itmk0 = $itmsk0 = ''; $itm0 = $itmk0 = $itmsk0 = '';
$itme0 = $itms0 = 0; $itme0 = $itms0 = 0;
$itmpara0 = '';
$mode = 'command'; $mode = 'command';
return; return;
} }
...@@ -617,7 +618,7 @@ function itemdrop($item,&$data=NULL) { ...@@ -617,7 +618,7 @@ function itemdrop($item,&$data=NULL) {
} }
else else
{ {
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk ,pls) VALUES ('$itm', '$itmk', '$itme', '$itms', '$itmsk', '$pls')"); $db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk ,itmpara, pls) VALUES ('$itm', '$itmk', '$itme', '$itms', '$itmsk', '$itmpara', '$pls')");
$drop_iid = $db->insert_id(); $drop_iid = $db->insert_id();
$log .= "你丢弃了<span class=\"red\">$itm</span>。<br>"; $log .= "你丢弃了<span class=\"red\">$itm</span>。<br>";
check_add_searchmemory($drop_iid,'itm',$itm,$data); check_add_searchmemory($drop_iid,'itm',$itm,$data);
...@@ -729,7 +730,7 @@ function itemadd(&$data=NULL) ...@@ -729,7 +730,7 @@ function itemadd(&$data=NULL)
${'itms'.$i} = $itms0; ${'itms'.$i} = $itms0;
${'itmsk'.$i} = $itmsk0; ${'itmsk'.$i} = $itmsk0;
${'itmpara'.$i} = $itmpara0; ${'itmpara'.$i} = $itmpara0;
$itm0 = $itmk0 = $itmsk = $itmpara = ''; $itm0 = $itmk0 = $itmsk0 = $itmpara0 = '';
$itme0 = $itms0 = 0; $itme0 = $itms0 = 0;
$mode = 'command'; $mode = 'command';
return; return;
...@@ -1887,7 +1888,7 @@ function weapon_loss(&$pa,$hurtvalue,$force_imp=0,$check_sk=0) ...@@ -1887,7 +1888,7 @@ function weapon_loss(&$pa,$hurtvalue,$force_imp=0,$check_sk=0)
if($check_sk && !empty($pa['wepsk'])) unset_ex_from_array($pa,get_itmsk_array($pa['wepsk'])); if($check_sk && !empty($pa['wepsk'])) unset_ex_from_array($pa,get_itmsk_array($pa['wepsk']));
$pa['wep'] = '拳头'; $pa['wep_kind'] = 'N'; $pa['wepk'] = 'WN'; $pa['wep'] = '拳头'; $pa['wep_kind'] = 'N'; $pa['wepk'] = 'WN';
$pa['wepe'] = 0; $pa['weps'] = $nosta; $pa['wepsk'] = ''; $pa['wepe'] = 0; $pa['weps'] = $nosta; $pa['wepsk'] = ''; $pa['weppara'] = '';
return -1; return -1;
} }
} }
......
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