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
2fce5e88
Commit
2fce5e88
authored
Apr 14, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
itmpara fix
parent
523809f3
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
283 additions
and
80 deletions
+283
-80
doc/etc/20240719_itmpara_fix_exchange_issue.txt
doc/etc/20240719_itmpara_fix_exchange_issue.txt
+66
-0
doc/etc/20240719_itmpara_fix_inventory_clear.txt
doc/etc/20240719_itmpara_fix_inventory_clear.txt
+62
-0
doc/etc/20240719_itmpara_fix_itmpara0_clear.txt
doc/etc/20240719_itmpara_fix_itmpara0_clear.txt
+51
-0
doc/etc/20240719_itmpara_fix_weppara_clear.txt
doc/etc/20240719_itmpara_fix_weppara_clear.txt
+19
-0
include/game/item.dice.php
include/game/item.dice.php
+1
-1
include/game/item.weapon.php
include/game/item.weapon.php
+9
-5
include/game/itemmain.func.php
include/game/itemmain.func.php
+75
-74
No files found.
doc/etc/20240719_itmpara_fix_exchange_issue.txt
0 → 100644
View file @
2fce5e88
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` 值会被正确保留。
doc/etc/20240719_itmpara_fix_inventory_clear.txt
0 → 100644
View file @
2fce5e88
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` 字段影响后续的物品操作。
doc/etc/20240719_itmpara_fix_itmpara0_clear.txt
0 → 100644
View file @
2fce5e88
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` 属性。
doc/etc/20240719_itmpara_fix_weppara_clear.txt
0 → 100644
View file @
2fce5e88
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` 字段会被正确清零,避免新装备的武器或装备继承之前的属性。
include/game/item.dice.php
View file @
2fce5e88
...
@@ -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>'
;
...
...
include/game/item.weapon.php
View file @
2fce5e88
...
@@ -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>"
;
}
}
}
}
include/game/itemmain.func.php
View file @
2fce5e88
This diff is collapsed.
Click to expand it.
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