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
523809f3
Commit
523809f3
authored
Apr 14, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FEAT:Support $itmpara in mapitem, shopitem and mixitem
parent
571cfd7f
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
198 additions
and
80 deletions
+198
-80
doc/etc/20240719_itmpara_implementation.txt
doc/etc/20240719_itmpara_implementation.txt
+24
-0
doc/etc/20240719_itmpara_json_handling.txt
doc/etc/20240719_itmpara_json_handling.txt
+35
-0
include/game/itemmix.func.php
include/game/itemmix.func.php
+14
-8
include/system.func.php
include/system.func.php
+125
-72
No files found.
doc/etc/20240719_itmpara_implementation.txt
0 → 100644
View file @
523809f3
2024年7月19日 $itmpara 字段实现记录
在2024年7月19日,游戏中的物品添加了新的字段$itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。
以下是对应此字段的实现记录:
1. 地图物品(mapitem_1.php)
- 修改了system.func.php文件中的地图物品生成代码,添加了对$itmpara字段的支持
- 更新了SQL查询,将$itmpara字段添加到地图物品的插入语句中
- 允许在mapitem_1.php文件中为每个物品定义$itmpara字段
2. 商店物品(shopitem_1.php)
- 修改了system.func.php文件中的商店物品生成代码,添加了对$itmpara字段的支持
- 更新了SQL查询,将$itmpara字段添加到商店物品的插入语句中
- 允许在shopitem_1.php文件中为每个物品定义$itmpara字段
3. 合成物品(mixitem_1.php)
- 修改了itemmix.func.php文件中的$itmpara0变量处理,确保正确处理$itmpara字段
- 更新了mixitem_1.php文件中的物品定义,为每个物品添加了$itmpara字段
- 由于mixitem_1.php文件较大,只更新了部分物品,其余物品将在后续更新中完成
注意事项:
- 所有新添加的物品都应该包含$itmpara字段,即使该字段为空
- $itmpara字段应该是一个JSON字符串,表示一个键值对数组
- 可以使用get_itmpara()、get_single_itmpara()、set_itmpara()和del_single_itmpara()函数来操作$itmpara字段
doc/etc/20240719_itmpara_json_handling.txt
0 → 100644
View file @
523809f3
2024年7月19日 $itmpara 字段 JSON 处理实现记录
在2024年7月19日,游戏中的物品添加了新的字段$itmpara,该字段为一数组,可让物品有着数组中定义的键值的属性。
由于$itmpara可能包含JSON格式的数据,而JSON中的逗号会导致在使用逗号分隔的配置文件中出现问题,因此我们实现了一种特殊的处理方法来解决这个问题。
以下是对应此字段的实现记录:
1. 地图物品(mapitem_1.php)
- 修改了system.func.php文件中的地图物品生成代码,添加了对JSON对象中逗号的特殊处理
- 当检测到一行中包含JSON对象(以{开头,以}结尾)时,会先提取JSON内容,然后用占位符替换,再进行逗号分隔
- 分割后,如果itmpara字段是占位符,则替换回实际的JSON内容
2. 商店物品(shopitem_1.php)
- 修改了system.func.php文件中的商店物品生成代码,添加了对JSON对象中逗号的特殊处理
- 使用与地图物品相同的方法处理JSON对象中的逗号
3. 合成物品(mixitem_1.php)
- 由于mixitem_1.php文件中的$itmpara字段是直接在PHP数组中定义的,不需要特殊处理
注意事项:
- 这种方法不需要对JSON内容进行编码,保持了原始数据的可读性
- 不需要修改get_itmpara函数,因为JSON字符串会被原样传递
- 所有使用$itmpara的代码都不需要修改
示例:
1. 在mapitem_1.php或shopitem_1.php中定义带有JSON的$itmpara:
0,0,1,测试物品,WK,100,10,,{"DecreaseDamageRaw":100,"DecreaseDamagePercentage":10}
2. system.func.php会特殊处理这一行:
- 提取JSON内容:{"DecreaseDamageRaw":100,"DecreaseDamagePercentage":10}
- 替换为占位符:0,0,1,测试物品,WK,100,10,,JSON_PLACEHOLDER
- 分割字符串:[0, 0, 1, 测试物品, WK, 100, 10, , JSON_PLACEHOLDER]
- 检测到itmpara是占位符,替换回JSON内容
3. 最终,$itmpara会被正确设置为:{"DecreaseDamageRaw":100,"DecreaseDamagePercentage":10}
include/game/itemmix.func.php
View file @
523809f3
...
@@ -9,7 +9,7 @@ include_once GAME_ROOT.'./include/game/itemmain.func.php';
...
@@ -9,7 +9,7 @@ include_once GAME_ROOT.'./include/game/itemmain.func.php';
$mix_type
=
Array
(
'normal'
=>
'通常'
,
'sync'
=>
'同调'
,
'overlay'
=>
'超量'
);
$mix_type
=
Array
(
'normal'
=>
'通常'
,
'sync'
=>
'同调'
,
'overlay'
=>
'超量'
);
// 合成功能
// 合成功能
function
itemmix_rev
(
$mlist
,
$itemselect
=-
1
,
&
$data
=
NULL
)
function
itemmix_rev
(
$mlist
,
$itemselect
=-
1
,
&
$data
=
NULL
)
{
{
global
$log
,
$mode
,
$cmd
,
$main
,
$itemcmd
;
global
$log
,
$mode
,
$cmd
,
$main
,
$itemcmd
;
if
(
!
isset
(
$data
))
if
(
!
isset
(
$data
))
...
@@ -25,7 +25,7 @@ function itemmix_rev($mlist, $itemselect=-1, &$data=NULL)
...
@@ -25,7 +25,7 @@ function itemmix_rev($mlist, $itemselect=-1, &$data=NULL)
$mix_res
=
itemmix_get_result
(
$mlist
,
$data
);
$mix_res
=
itemmix_get_result
(
$mlist
,
$data
);
# 尝试进行合成操作时 合成操作计数+1
# 尝试进行合成操作时 合成操作计数+1
if
(
empty
(
$clbpara
[
'achvars'
][
'immix'
]))
$clbpara
[
'achvars'
][
'immix'
]
=
1
;
if
(
empty
(
$clbpara
[
'achvars'
][
'immix'
]))
$clbpara
[
'achvars'
][
'immix'
]
=
1
;
$mixitemname
=
array
();
$mixitemname
=
array
();
foreach
(
$mlist
as
$val
)
$mixitemname
[]
=
$
{
'itm'
.
$val
};
foreach
(
$mlist
as
$val
)
$mixitemname
[]
=
$
{
'itm'
.
$val
};
$itmstr
=
implode
(
' '
,
$mixitemname
);
$itmstr
=
implode
(
' '
,
$mixitemname
);
...
@@ -127,7 +127,7 @@ function itemmix_place_check($mlist,&$data=NULL)
...
@@ -127,7 +127,7 @@ function itemmix_place_check($mlist,&$data=NULL)
return
false
;
return
false
;
}
}
$main
=
'itemmix_tips'
;
$main
=
'itemmix_tips'
;
$mlist2
=
array_unique
(
$mlist
);
$mlist2
=
array_unique
(
$mlist
);
if
(
count
(
$mlist
)
!=
count
(
$mlist2
))
{
if
(
count
(
$mlist
)
!=
count
(
$mlist2
))
{
$log
.=
'相同道具不能进行合成!<br>'
;
$log
.=
'相同道具不能进行合成!<br>'
;
$mode
=
'itemmix'
;
$itemcmd
=
'itemmix'
;
$mode
=
'itemmix'
;
$itemcmd
=
'itemmix'
;
...
@@ -166,7 +166,7 @@ function itemmix_recipe_check($mixitem)
...
@@ -166,7 +166,7 @@ function itemmix_recipe_check($mixitem)
}
}
}
}
}
}
return
$res
;
return
$res
;
}
}
//查看是否符合同调要求
//查看是否符合同调要求
...
@@ -366,7 +366,12 @@ function itemmix_proc($mlist, $minfo, $itmstr, &$data=NULL)
...
@@ -366,7 +366,12 @@ function itemmix_proc($mlist, $minfo, $itmstr, &$data=NULL)
else
{
else
{
$itmsk0
=
''
;
$itmsk0
=
''
;
}
}
$itmpara0
=
$minfo
[
'result'
][
5
];
// Handle itmpara field
if
(
isset
(
$minfo
[
'result'
][
5
]))
$itmpara0
=
$minfo
[
'result'
][
5
];
else
{
$itmpara0
=
''
;
}
$uip
[
'mixcls'
]
=
!
empty
(
$minfo
[
'class'
])
?
$minfo
[
'class'
]
:
''
;
$uip
[
'mixcls'
]
=
!
empty
(
$minfo
[
'class'
])
?
$minfo
[
'class'
]
:
''
;
$uip
[
'mixtp'
]
=
$minfo
[
'type'
];
$uip
[
'mixtp'
]
=
$minfo
[
'type'
];
//合成成功
//合成成功
...
@@ -422,14 +427,14 @@ function itemmix_events(&$data=NULL)
...
@@ -422,14 +427,14 @@ function itemmix_events(&$data=NULL)
'鲜红的生血'
,
'真-红色的发圈'
,
'『红石电路』'
,
'【烈焰红唇】'
,
'红宝石方块'
,
'红莲魔龙 ★8'
);
'鲜红的生血'
,
'真-红色的发圈'
,
'『红石电路』'
,
'【烈焰红唇】'
,
'红宝石方块'
,
'红莲魔龙 ★8'
);
$royal_rose_stuff
=
$slip_list
[
array_rand
(
$slip_list
)];
$royal_rose_stuff
=
$slip_list
[
array_rand
(
$slip_list
)];
$royal_rose
=
Array
(
$royal_rose
=
Array
(
'class'
=>
'hidden'
,
'class'
=>
'hidden'
,
'stuff'
=>
array
(
'「皇家蔷薇」'
,
'龙虎旗帜'
,
$royal_rose_stuff
),
'stuff'
=>
array
(
'「皇家蔷薇」'
,
'龙虎旗帜'
,
$royal_rose_stuff
),
'result'
=>
array
(
'「猩红蔷薇」'
,
'WK'
,
179310
,
'∞'
,
'BNnrfcV'
),
'result'
=>
array
(
'「猩红蔷薇」'
,
'WK'
,
179310
,
'∞'
,
'BNnrfcV'
),
);
);
$gamevars
[
'random_mixlist'
][
'royal_rose'
]
=
$royal_rose
;
$gamevars
[
'random_mixlist'
][
'royal_rose'
]
=
$royal_rose
;
save_gameinfo
();
save_gameinfo
();
}
}
else
else
{
{
$royal_rose
=
$gamevars
[
'random_mixlist'
][
'royal_rose'
];
$royal_rose
=
$gamevars
[
'random_mixlist'
][
'royal_rose'
];
$royal_rose_stuff
=
$royal_rose
[
'stuff'
][
2
];
$royal_rose_stuff
=
$royal_rose
[
'stuff'
][
2
];
...
@@ -477,7 +482,8 @@ function itemmix_events(&$data=NULL)
...
@@ -477,7 +482,8 @@ function itemmix_events(&$data=NULL)
if
(
$itm0
==
'Untainted Glory'
){
if
(
$itm0
==
'Untainted Glory'
){
$log
.=
"<span class='minirainbow'>一道强光闪过——<br>
$log
.=
"<span class='minirainbow'>一道强光闪过——<br>
你背包中的物品一瞬间全部消失了!<br>这是获得无毁荣光的必要代价!</span><br>"
;
你背包中的物品一瞬间全部消失了!<br>这是获得无毁荣光的必要代价!</span><br>"
;
$itm1
=
$itmk1
=
$itmsk1
=
$itm2
=
$itmk2
=
$itmsk2
=
$itm3
=
$itmk3
=
$itmsk3
=
$itm4
=
$itmk4
=
$itmsk4
=
$itm5
=
$itmk5
=
$itmsk5
=
$itm6
=
$itmk6
=
$itmsk6
=
$itmpara0
=
$itmpara1
=
$itmpara2
=
$itmpara3
=
$itmpara4
=
$itmpara5
=
$itmpara6
=
0
;
''
;
$itm1
=
$itmk1
=
$itmsk1
=
$itm2
=
$itmk2
=
$itmsk2
=
$itm3
=
$itmk3
=
$itmsk3
=
$itm4
=
$itmk4
=
$itmsk4
=
$itm5
=
$itmk5
=
$itmsk5
=
$itm6
=
$itmk6
=
$itmsk6
=
''
;
$itmpara1
=
$itmpara2
=
$itmpara3
=
$itmpara4
=
$itmpara5
=
$itmpara6
=
''
;
$itme1
=
$itms1
=
$itme2
=
$itms2
=
$itme3
=
$itms3
=
$itme4
=
$itms4
=
$itme5
=
$itms5
=
$itme6
=
$itms6
=
0
;
$itme1
=
$itms1
=
$itme2
=
$itms2
=
$itme3
=
$itms3
=
$itme4
=
$itms4
=
$itme5
=
$itms5
=
$itme6
=
$itms6
=
0
;
}
}
return
;
return
;
...
...
include/system.func.php
View file @
523809f3
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