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
651a5455
Commit
651a5455
authored
Mar 19, 2023
by
Nemo Ma
Committed by
GitHub
Mar 19, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #73 from hikawiier/waaagh
update vnmix
parents
38f1a185
aaa82d8f
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
873 additions
and
965 deletions
+873
-965
dbup.php
dbup.php
+2
-4
gamedata/cache/clubskills_1.php
gamedata/cache/clubskills_1.php
+7
-2
gamedata/cache/vnworld_1.php
gamedata/cache/vnworld_1.php
+5
-4
gamedata/sql/all.sql
gamedata/sql/all.sql
+96
-90
gamedata/sql/vnworld.sql
gamedata/sql/vnworld.sql
+24
-0
include/admin/vnmixlist.php
include/admin/vnmixlist.php
+26
-119
include/game/itemmain.func.php
include/game/itemmain.func.php
+4
-3
include/game/itemplace.func.php
include/game/itemplace.func.php
+6
-19
include/game/revbattle.func.php
include/game/revbattle.func.php
+2
-1
include/game/revclubskills.func.php
include/game/revclubskills.func.php
+43
-19
include/resources.func.php
include/resources.func.php
+9
-0
include/system.func.php
include/system.func.php
+3
-2
include/vnworld/vnmix.func.php
include/vnworld/vnmix.func.php
+289
-0
templates/default/admin_vnmixlist.htm
templates/default/admin_vnmixlist.htm
+28
-27
templates/default/skill_c1_veteran.htm
templates/default/skill_c1_veteran.htm
+5
-2
templates/default/skill_c3_enchant.htm
templates/default/skill_c3_enchant.htm
+2
-10
templates/default/skill_c4_roar.htm
templates/default/skill_c4_roar.htm
+2
-2
templates/default/skill_c4_sniper.htm
templates/default/skill_c4_sniper.htm
+2
-2
templates/default/skill_c5_focus.htm
templates/default/skill_c5_focus.htm
+4
-2
templates/default/skill_temp.htm
templates/default/skill_temp.htm
+2
-12
templates/default/templates.lang.php
templates/default/templates.lang.php
+20
-0
templates/default/vn_postitem.htm
templates/default/vn_postitem.htm
+76
-66
templates/default/vn_records.htm
templates/default/vn_records.htm
+26
-23
vn_postitem.php
vn_postitem.php
+130
-518
vndbup.php
vndbup.php
+52
-0
vnworld.php
vnworld.php
+8
-38
No files found.
dbup.php
View file @
651a5455
...
...
@@ -68,6 +68,8 @@ $result = $db->query("DESCRIBE {$tablepre}winners teamMate");
if
(
!
$db
->
num_rows
(
$result
))
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners ADD teamMate text NOT NULL default '' AFTER teamPass"
);
$result
=
$db
->
query
(
"DESCRIBE
{
$tablepre
}
winners teamIcon"
);
if
(
!
$db
->
num_rows
(
$result
))
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners ADD teamIcon smallint unsigned NOT NULL default '0' AFTER teamMate"
);
$result
=
$db
->
query
(
"DESCRIBE
{
$tablepre
}
winners clbpara"
);
if
(
!
$db
->
num_rows
(
$result
))
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners ADD clbpara text NOT NULL AFTER teamMate"
);
//以下内容均为chatGPT生成,让我们对新时代的赛博苦力致以敬意:
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners MODIFY wep char(30) NOT NULL default ''"
);
...
...
@@ -160,10 +162,6 @@ if(!$db->num_rows($result)) $db->query("ALTER TABLE {$tablepre}users ADD daily v
//game表结构变动
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
game DROP gamevars"
);
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
game ADD gamevars text NOT NULL AFTER combonum"
);
$result
=
$db
->
query
(
"DESCRIBE
{
$tablepre
}
winners teamMate"
);
if
(
!
$db
->
num_rows
(
$result
))
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners ADD teamMate text NOT NULL default '' AFTER teamPass"
);
$result
=
$db
->
query
(
"DESCRIBE
{
$tablepre
}
winners teamIcon"
);
if
(
!
$db
->
num_rows
(
$result
))
$db
->
query
(
"ALTER TABLE
{
$tablepre
}
winners ADD teamIcon smallint unsigned NOT NULL default '0' AFTER teamMate"
);
echo
"Update Fish.<br>"
;
?>
\ No newline at end of file
gamedata/cache/clubskills_1.php
View file @
651a5455
...
...
@@ -13,7 +13,7 @@ $club_skillslist = Array
5
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c5_sneak'
,
'c5_caution'
,
'c5_review'
,
'c5_focus'
,
'c5_higheg'
,
'c5_double'
),
#'拆弹专家',
6
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c6_godluck'
,
'c6_godsend'
,
'c6_godbless'
,
'c6_godpow'
,
'c6_godeyes'
,
'c6_justice'
),
#'宛如疾风',
7
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c7_radar'
,
'c7_shield'
,
'c7_electric'
,
'c7_field'
,
'c7_overload'
,
'c7_emp'
),
#'锡安成员',
8
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'黑衣组织',
8
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c8_assassin'
,
'c8_infect'
,
'c8_infilt'
,
'c8_misty'
,
'c8_catalyst'
,
'c8_cooker'
),
#'黑衣组织',
9
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
,
'c9_spirit'
,
'c9_lb'
,
'c9_iceheart'
,
'c9_charge'
,
'c9_heartfire'
),
#'超能力者',
10
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'高速成长',
11
=>
Array
(
's_hp'
,
's_ad'
,
'f_heal'
),
#'富家子弟',
...
...
@@ -250,6 +250,9 @@ $cskills = Array
'svars'
=>
Array
(
'choice'
=>
''
,
//初始默认选择的单项防御
),
'lockdesc'
=>
Array
(
'lvl'
=>
'18级时解锁'
,
),
'unlock'
=>
Array
(
'lvl'
=>
'[:lvl:] >= 18'
,
),
...
...
@@ -299,7 +302,9 @@ $cskills = Array
'rangerate'
=>
Array
(
0
,
20
,
40
,
60
,
80
,
100
,
100
),
//超射程反击率
'countergain'
=>
Array
(
0
,
2
,
3
,
4
,
10
,
12
,
30
),
//基础反击率
),
'lockdesc'
=>
'武器不适用,持<span class="yellow">斩系武器</span>时生效'
,
'lockdesc'
=>
Array
(
'wepk+wep_kind'
=>
'武器不适用,持<span class="yellow">斩系武器</span>时生效'
,
),
'unlock'
=>
Array
(
'wepk+wep_kind'
=>
"[:wepk:] == 'WK' || [:wepk:] == 'WGK' || [:wepk:] == 'WKP' || [:wepk:] == 'WKF' || [:wepk:] == 'WFK' || [:wep_kind:] == 'K'"
,
),
...
...
gamedata/cache/vnworld_1.php
View file @
651a5455
...
...
@@ -10,12 +10,15 @@ $vnworld_notice = "喔!年轻人呦!你发现了一个不得了的地方呢
总之,在这里的员工回来之前,就请你自己先随便逛逛吧。<br>"
;
#玩家自定义合成相关:
//是否开启道具名的联想输入列表:(默认:1=开启)
$vnmix_name_assoc
=
1
;
//编辑或审批提交的合成列表需要的最低权限等级:(默认:5级)
$vnmix_editor_group
=
5
;
//提交一次合成需要消耗的切糕:(默认:200。0为不消耗)
$vnmix_c2_cost
=
200
;
//自定义合成最多可以添加几个属性(最多不能超过30个,默认:7个)
$vnmix_max_sk
=
7
;
//允许普通玩家选择的道具类别
$vn_iteminfo
=
Array
(
...
...
@@ -238,16 +241,14 @@ $vrclassinfo = Array
$vnmix_top_tips
=
'提示:每个配方至少需要两种合成素材,素材与道具名最长不可以超过30个字符。<br>将道具耐久设置为0时可以让耐久度变为“∞”。'
;
if
(
$vnmix_c2_cost
)
$vnmix_top_tips
.=
'每次提交需要消耗'
.
$vnmix_c2_cost
.
'份切糕。'
;
//显示在编辑合成与打印合成表页面上的提示信息
$stuff_tips
=
Array
(
'合成材料一'
,
'合成材料二'
,
'合成材料三'
,
'合成材料四'
,
'合成材料五'
,);
$result_tips
=
Array
(
'合成结果'
,
'道具用途'
,
'道具效果'
,
'道具耐久'
,
'属性1'
,
'属性2'
,
'属性3'
,
'属性4'
,
'属性5'
,
'道具分组'
);
$log_tips
=
Array
(
'道具属性'
,
'作者'
,
'提交状态'
);
$check_tips
=
Array
(
'<span class="yellow">提交中</span>'
,
'<span class="lime">已采纳</span>'
,
'<span class="red">未采纳</span>'
);
$check_infos
=
Array
(
0
=>
'<span class="yellow">成功保存了配方!</span><br>'
,
1
=>
'<span class="yellow">成功编辑了配方!</span><br>'
,
2
=>
'<span class="red">删除了配方。</span><br>'
,
3
=>
'<span class="yellow">成功变更了配方状态!</span><br>'
,
3
=>
'<span class="yellow">采纳了配方!</span><br>'
,
4
=>
'<span class="red">将配方状态变更为未采纳。</span><br>'
,
);
?>
gamedata/sql/all.sql
View file @
651a5455
...
...
@@ -113,13 +113,13 @@ DROP TABLE IF EXISTS `acbra2_mapitem`;
/*!40101 SET @saved_cs_client = @@character_set_client */
;
/*!40101 SET character_set_client = utf8 */
;
CREATE
TABLE
`acbra2_mapitem`
(
`iid`
mediumint
(
8
)
unsigned
NOT
NULL
AUTO_INCREMENT
,
`itm`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`pls`
tinyint
(
3
)
unsigned
NOT
NULL
DEFAULT
'0'
,
iid
mediumint
unsigned
NOT
NULL
auto_increment
,
itm
char
(
30
)
NOT
NULL
default
''
,
itmk
char
(
40
)
not
null
default
''
,
itme
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms
char
(
10
)
not
null
default
'0'
,
itmsk
char
(
40
)
not
null
default
''
,
pls
tinyint
unsigned
not
null
default
'0'
,
PRIMARY
KEY
(
`iid`
)
)
ENGINE
=
MyISAM
AUTO_INCREMENT
=
7726
DEFAULT
CHARSET
=
utf8
;
/*!40101 SET character_set_client = @saved_cs_client */
;
...
...
@@ -132,13 +132,13 @@ DROP TABLE IF EXISTS `acbra2_maptrap`;
/*!40101 SET @saved_cs_client = @@character_set_client */
;
/*!40101 SET character_set_client = utf8 */
;
CREATE
TABLE
`acbra2_maptrap`
(
`tid`
mediumint
(
8
)
unsigned
NOT
NULL
AUTO_INCREMENT
,
`itm`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`pls`
tinyint
(
3
)
unsigned
NOT
NULL
DEFAULT
'0'
,
tid
mediumint
unsigned
NOT
NULL
auto_increment
,
itm
char
(
30
)
NOT
NULL
default
''
,
itmk
char
(
40
)
not
null
default
''
,
itme
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms
char
(
10
)
not
null
default
'0'
,
itmsk
char
(
40
)
not
null
default
''
,
pls
tinyint
unsigned
not
null
default
'0'
,
PRIMARY
KEY
(
`tid`
)
)
ENGINE
=
MyISAM
AUTO_INCREMENT
=
185
DEFAULT
CHARSET
=
utf8
;
/*!40101 SET character_set_client = @saved_cs_client */
;
...
...
@@ -334,16 +334,16 @@ DROP TABLE IF EXISTS `acbra2_shopitem`;
/*!40101 SET @saved_cs_client = @@character_set_client */
;
/*!40101 SET character_set_client = utf8 */
;
CREATE
TABLE
`acbra2_shopitem`
(
`sid`
smallint
(
5
)
unsigned
NOT
NULL
AUTO_INCREMENT
,
`kind`
tinyint
(
3
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`num`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`price`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`area`
tinyint
(
3
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`item`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
sid
smallint
unsigned
NOT
NULL
auto_increment
,
kind
tinyint
unsigned
NOT
NULL
default
'0'
,
num
smallint
unsigned
NOT
NULL
default
'0'
,
price
smallint
unsigned
NOT
NULL
default
'0'
,
area
tinyint
unsigned
NOT
NULL
default
'0'
,
item
char
(
30
)
NOT
NULL
default
''
,
itmk
char
(
40
)
not
null
default
''
,
itme
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms
char
(
10
)
not
null
default
'0'
,
itmsk
char
(
40
)
not
null
default
''
,
PRIMARY
KEY
(
`sid`
),
KEY
`KIND`
(
`kind`
,
`area`
)
)
ENGINE
=
MyISAM
AUTO_INCREMENT
=
165
DEFAULT
CHARSET
=
utf8
;
...
...
@@ -370,7 +370,6 @@ CREATE TABLE `acbra2_users` (
`daily`
varchar
(
255
)
NOT
NULL
DEFAULT
''
,
`nick`
text
NOT
NULL
,
`nicks`
text
NOT
NULL
,
`volume`
smallint
(
3
)
unsigned
NOT
NULL
default
'20'
,
`validgames`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`wingames`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`gender`
char
(
1
)
NOT
NULL
DEFAULT
'0'
,
...
...
@@ -431,71 +430,78 @@ CREATE TABLE `acbra2_winners` (
`wf`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`teamID`
char
(
15
)
NOT
NULL
DEFAULT
''
,
`teamPass`
char
(
15
)
NOT
NULL
DEFAULT
''
,
`wep`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`wepk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`wepe`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`weps`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`wepsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arb`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`arbk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arbe`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`arbs`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`arbsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arh`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`arhk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arhe`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`arhs`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`arhsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`ara`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`arak`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arae`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`aras`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`arask`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arf`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`arfk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arfe`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`arfs`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`arfsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`art`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`artk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`arte`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`arts`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`artsk`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm0`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk0`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme0`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms0`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk0`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm1`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk1`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme1`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms1`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk1`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm2`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk2`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme2`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms2`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk2`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm3`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk3`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme3`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms3`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk3`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm4`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk4`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme4`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms4`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk4`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm5`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk5`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme5`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms5`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk5`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itm6`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`itmk6`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`itme6`
mediumint
(
8
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`itms6`
char
(
5
)
NOT
NULL
DEFAULT
'0'
,
`itmsk6`
char
(
5
)
NOT
NULL
DEFAULT
''
,
`teamMate`
text
NOT
NULL
default
''
,
`teamIcon`
char
(
15
)
smallint
unsigned
NOT
NULL
default
'0'
,
wep
char
(
30
)
NOT
NULL
default
''
,
wepk
char
(
40
)
not
null
default
''
,
wepe
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
weps
char
(
10
)
not
null
default
'0'
,
wepsk
char
(
40
)
not
null
default
''
,
wep2
char
(
30
)
NOT
NULL
default
''
,
wep2k
char
(
40
)
not
null
default
''
,
wep2e
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
wep2s
char
(
10
)
not
null
default
'0'
,
wep2sk
char
(
40
)
not
null
default
''
,
arb
char
(
30
)
NOT
NULL
default
''
,
arbk
char
(
40
)
not
null
default
''
,
arbe
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
arbs
char
(
10
)
not
null
default
'0'
,
arbsk
char
(
40
)
not
null
default
''
,
arh
char
(
30
)
NOT
NULL
default
''
,
arhk
char
(
40
)
not
null
default
''
,
arhe
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
arhs
char
(
10
)
not
null
default
'0'
,
arhsk
char
(
40
)
not
null
default
''
,
ara
char
(
30
)
NOT
NULL
default
''
,
arak
char
(
40
)
not
null
default
''
,
arae
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
aras
char
(
10
)
not
null
default
'0'
,
arask
char
(
40
)
not
null
default
''
,
arf
char
(
30
)
NOT
NULL
default
''
,
arfk
char
(
40
)
not
null
default
''
,
arfe
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
arfs
char
(
10
)
not
null
default
'0'
,
arfsk
char
(
40
)
not
null
default
''
,
art
char
(
30
)
NOT
NULL
default
''
,
artk
char
(
40
)
not
null
default
''
,
arte
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
arts
char
(
10
)
not
null
default
'0'
,
artsk
char
(
40
)
not
null
default
''
,
itm0
char
(
30
)
NOT
NULL
default
''
,
itmk0
char
(
40
)
not
null
default
''
,
itme0
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms0
char
(
10
)
not
null
default
'0'
,
itmsk0
char
(
40
)
not
null
default
''
,
itm1
char
(
30
)
NOT
NULL
default
''
,
itmk1
char
(
40
)
not
null
default
''
,
itme1
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms1
char
(
10
)
not
null
default
'0'
,
itmsk1
char
(
40
)
not
null
default
''
,
itm2
char
(
30
)
NOT
NULL
default
''
,
itmk2
char
(
40
)
not
null
default
''
,
itme2
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms2
char
(
10
)
not
null
default
'0'
,
itmsk2
char
(
40
)
not
null
default
''
,
itm3
char
(
30
)
NOT
NULL
default
''
,
itmk3
char
(
40
)
not
null
default
''
,
itme3
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms3
char
(
10
)
not
null
default
'0'
,
itmsk3
char
(
40
)
not
null
default
''
,
itm4
char
(
30
)
NOT
NULL
default
''
,
itmk4
char
(
40
)
not
null
default
''
,
itme4
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms4
char
(
10
)
not
null
default
'0'
,
itmsk4
char
(
40
)
not
null
default
''
,
itm5
char
(
30
)
NOT
NULL
default
''
,
itmk5
char
(
40
)
not
null
default
''
,
itme5
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms5
char
(
10
)
not
null
default
'0'
,
itmsk5
char
(
40
)
not
null
default
''
,
itm6
char
(
30
)
NOT
NULL
default
''
,
itmk6
char
(
40
)
not
null
default
''
,
itme6
int
(
10
)
unsigned
NOT
NULL
DEFAULT
'0'
,
itms6
char
(
10
)
not
null
default
'0'
,
itmsk6
char
(
40
)
not
null
default
''
,
`motto`
char
(
30
)
NOT
NULL
DEFAULT
''
,
`wmode`
tinyint
(
3
)
unsigned
NOT
NULL
DEFAULT
'0'
,
`vnum`
smallint
(
5
)
unsigned
NOT
NULL
DEFAULT
'0'
,
...
...
gamedata/sql/vnworld.sql
0 → 100644
View file @
651a5455
--
-- 表的结构 `bra_vnmixitem`
--
--
DROP
TABLE
IF
EXISTS
bra_vnmixitem
;
CREATE
TABLE
bra_vnmixitem
(
iid
mediumint
unsigned
NOT
NULL
auto_increment
,
creator
varchar
(
40
)
NOT
NULL
DEFAULT
''
,
istatus
int
(
10
)
unsigned
NOT
NULL
default
'0'
,
class
varchar
(
30
)
NOT
NULL
default
''
,
stf0
varchar
(
30
)
NOT
NULL
default
''
,
stf1
varchar
(
30
)
NOT
NULL
default
''
,
stf2
varchar
(
30
)
NOT
NULL
default
''
,
stf3
varchar
(
30
)
NOT
NULL
default
''
,
stf4
varchar
(
30
)
NOT
NULL
default
''
,
itm
varchar
(
30
)
NOT
NULL
default
''
,
itmk
varchar
(
40
)
not
null
default
''
,
itme
int
(
10
)
unsigned
NOT
NULL
default
'0'
,
itms
char
(
10
)
not
null
default
'0'
,
itmsk
varchar
(
40
)
not
null
default
''
,
PRIMARY
KEY
(
iid
)
)
ENGINE
=
MyISAM
;
\ No newline at end of file
include/admin/vnmixlist.php
View file @
651a5455
...
...
@@ -2,46 +2,39 @@
if
(
!
defined
(
'IN_ADMIN'
))
{
exit
(
'Access Denied'
);
}
requir
e
config
(
'vnworld'
,
$gamecfg
);
//require './include/game/itemplace
.func.php';
includ
e
config
(
'vnworld'
,
$gamecfg
);
include_once
GAME_ROOT
.
'./include/vnworld/vnmix
.func.php'
;
if
(
!
isset
(
$vncmd
)){
$vncmd
=
'
none
'
;}
if
(
!
isset
(
$vncmd
)){
$vncmd
=
''
;}
global
$gamecfg
;
$cache_file
=
config
(
'vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
{
include
$cache_file
;
$temp_vniteminfo
=
$vn_iteminfo
+
$vn_gm_iteminfo
;
include_once
(
$cache_file
);
$temp_mixinfo
=
$vn_mixinfo
;
if
(
isset
(
$vn_mixinfo
))
{
$temp_mixinfo
=
$vn_mixinfo
;
foreach
(
$temp_mixinfo
as
$vn_key
=>
$vn_arr
)
{
foreach
(
$vn_arr
as
$vn_type
=>
$vn_info
)
{
/*
if($vn_type == 'stuff')
if
(
$vn_type
==
'stuff'
)
{
// 格式化素材来源
foreach($vn_info as $sid => $snm)
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
$temp_mixinfo[$vn_key][$vn_type][$sid] = "<span tooltip=\"".get_item_place($snm)."\">".$snm."</span>"
;
if
(
empty
(
$vn_info
[
$i
]))
$temp_mixinfo
[
$vn_key
][
$vn_type
][
$i
]
=
'-'
;
}
}
*/
}
if
(
$vn_type
==
'result'
)
{
$temp_mixinfo
[
$vn_key
][
$vn_type
][
1
]
=
$temp_vniteminfo
[
$vn_info
[
1
]];
$sk_arr
=
Array
();
if
(
!
empty
(
$vn_info
[
4
]))
{
//$sk_arr = get_itmsk_array($vn_info[4]);
$temp_mixinfo
[
$vn_key
][
$vn_type
][
4
]
=
''
;
$temp_mixinfo
[
$vn_key
][
$vn_type
][
4
]
=
parse_info_desc
(
$vn_info
[
4
],
'sk'
,
$vn_info
[
1
]);
/*foreach($sk_arr as $sk_value)
{
if(!empty($temp_mixinfo[$vn_key][$vn_type][4])) $temp_mixinfo[$vn_key][$vn_type][4] .= '+'.parse_itm_desc($sk_value,'sk');
else $temp_mixinfo[$vn_key][$vn_type][4] = parse_itm_desc($sk_value,'sk');
}*/
}
}
}
...
...
@@ -67,117 +60,31 @@ if(strpos($vncmd ,'del')===0)
}
else
{
$vname
=
$flag
[
'name'
];
$vresult
=
$flag
[
'result'
][
0
];
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
users WHERE username='
$vname
'"
);
if
(
!
$db
->
num_rows
(
$result
))
// 将配方重新格式化
$earr
=
Array
();
// 格式化合成素材
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
$cmd_info
=
'配方的作者信息无效!请检查缓存文件。'
;
return
;
$earr
[
'stf'
.
$i
]
=
$flag
[
'stuff'
][
$i
];
}
$vdata
=
$db
->
fetch_array
(
$result
);
post_back_vn_cache_file
(
$vdata
,
$flag
);
// 格式化合成结果
$earr
[
'creator'
]
=
$flag
[
'name'
];
$earr
[
'class'
]
=
$flag
[
'class'
];
$earr
[
'itm'
]
=
$flag
[
'result'
][
0
];
$earr
[
'itmk'
]
=
$flag
[
'result'
][
1
];
$earr
[
'itme'
]
=
$flag
[
'result'
][
2
];
$earr
[
'itms'
]
=
$flag
[
'result'
][
3
];
$earr
[
'itmsk'
]
=
$flag
[
'result'
][
4
];
$earr
[
'istatus'
]
=
0
;
// 保存至数据库
$db
->
array_insert
(
"
{
$tablepre
}
vnmixitem"
,
$earr
);
}
adminlog
(
'回退了配方'
,
$vresult
);
$cmd_info
=
"已回退配方
{
$
vnid
}
!"
;
$cmd_info
=
"已回退配方
{
$
earr
[
'itm'
]
}
!"
;
return
;
}
include
template
(
'admin_vnmixlist'
);
//修改配方文件
function
edit_vn_mixilst
(
$varr
,
$t
)
{
global
$checkstr
,
$gamecfg
;
//先加锁
$lock_file
=
GAME_ROOT
.
'./gamedata/bak/vnmix2.lock'
;
if
(
file_exists
(
$lock_file
))
{
return
'有其他管理员正在进行编辑操作,请稍等一会儿再试!'
;
}
else
{
$cache_file
=
config
(
'vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
{
//加锁
writeover
(
$lock_file
,
' '
);
include_once
(
$cache_file
);
global
$vn_mixinfo
;
}
else
{
return
'合成配方文件不存在!不能进行编辑操作。'
;
}
}
if
(
$varr
===
'del'
&&
isset
(
$vn_mixinfo
[
$t
]))
{
$varr
=
$vn_mixinfo
[
$t
];
$varr
[
'status'
]
=
0
;
unset
(
$vn_mixinfo
[
$t
]);
}
sort
(
$vn_mixinfo
);
global
$checkstr
;
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$vn_mixinfo = '
.
var_export
(
$vn_mixinfo
,
1
)
.
";
\r\n
?>"
;
file_put_contents
(
$cache_file
,
$cont
,
LOCK_EX
);
//writeover($cache_file, $cont);
//chmod($cache_file,0777);
unlink
(
$lock_file
);
return
$varr
;
}
//为什么要把这个函数在这里又重写一遍?……因为引用已经乱套了……呃啊,杀了我吧!
function
post_back_vn_cache_file
(
$data
,
$arr
,
$t
=
NULL
)
{
global
$checkstr
,
$gamecfg
;
$lock_file
=
GAME_ROOT
.
'./gamedata/bak/vnmix.lock'
;
if
(
file_exists
(
$lock_file
))
{
//锁还在,返回一个报错信息
return
'有其他人正在提交或编辑合成,请稍后再试!<br>'
;
}
else
{
writeover
(
$lock_file
,
' '
);
}
$file
=
config
(
'queue_vnmixitem'
,
$gamecfg
);
if
(
!
file_exists
(
$file
))
{
$carr
=
Array
();
}
else
{
include_once
(
$file
);
}
//把字符串还原为数组
if
(
!
empty
(
$arr
[
'result'
][
4
]))
{
$arr
[
'result'
][
4
]
=
get_itmsk_array
(
$arr
[
'result'
][
4
]);
}
if
(
isset
(
$t
))
{
$arr
[
'name'
]
=
$carr
[
$t
][
'name'
];
$arr
[
'status'
]
=
$carr
[
$t
][
'status'
];
$carr
[
$t
]
=
$arr
;
}
else
{
$arr
[
'name'
]
=
$data
[
'username'
];
$carr
[]
=
$arr
;
}
sort
(
$carr
);
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$carr = '
.
var_export
(
$carr
,
1
)
.
";
\r\n
?>"
;
file_put_contents
(
$file
,
$cont
,
LOCK_EX
);
//writeover($file, $cont);
//chmod($file,0777);
unlink
(
$lock_file
);
return
0
;
}
?>
include/game/itemmain.func.php
View file @
651a5455
...
...
@@ -975,10 +975,11 @@ function itemmix($mlist, $itemselect=-1) {
return
;
}
include_once
config
(
'mixitem'
,
$gamecfg
);
include_once
config
(
'vnmixitem'
,
$gamecfg
);
//
include_once config('mixitem',$gamecfg);
//
include_once config('vnmixitem',$gamecfg);
$mixflag
=
false
;
if
(
!
empty
(
$vn_mixinfo
))
$mixinfo
=
array_merge
(
$mixinfo
,
$vn_mixinfo
);
$mixinfo
=
get_mixinfo
();
//if(!empty($vn_mixinfo)) $mixinfo = array_merge($mixinfo,$vn_mixinfo);
foreach
(
$mixinfo
as
$minfo
)
{
if
(
!
array_diff
(
$mixitem
,
$minfo
[
'stuff'
])
&&
!
array_diff
(
$minfo
[
'stuff'
],
$mixitem
)
&&
count
(
$mixitem
)
==
count
(
$minfo
[
'stuff'
])){
$mixflag
=
true
;
...
...
include/game/itemplace.func.php
View file @
651a5455
...
...
@@ -128,7 +128,8 @@ function get_item_place($which)
$result
.=
"
{
$area
}
禁起在商店中出售(
{
$price
}
元)
\r
"
;
}
}
include
config
(
'mixitem'
,
$gamecfg
);
//include config('mixitem',$gamecfg);
$mixinfo
=
get_mixinfo
();
foreach
(
$mixinfo
as
$lst
)
{
if
(
$lst
[
'result'
][
0
]
==
$which
||
$lst
[
'result'
][
0
]
==
$which
.
' '
)
...
...
@@ -137,22 +138,6 @@ function get_item_place($which)
break
;
}
}
if
(
file_exists
(
config
(
'vnmixitem'
,
$gamecfg
)))
{
include
config
(
'vnmixitem'
,
$gamecfg
);
foreach
(
$vn_mixinfo
as
$vlst
)
{
if
(
$vlst
[
'result'
][
0
]
==
$which
||
$vlst
[
'result'
][
0
]
==
$which
.
' '
)
{
$vresult
=
"通过合成获取
\r
"
;
if
(
strpos
(
$result
,
$vresult
)
===
false
)
{
$result
.=
$vresult
;
}
break
;
}
}
}
$file
=
config
(
'synitem'
,
$gamecfg
);
$synlist
=
openfile
(
$file
);
foreach
(
$synlist
as
$lst
)
...
...
@@ -206,7 +191,7 @@ function get_item_place($which)
{
if(file_exists(config('random'.$rnm,$gamecfg)))
{
include
_once
config('random'.$rnm,$gamecfg);
include config('random'.$rnm,$gamecfg);
foreach(Array('itmlow','itmmedium','itmhigh','antimeta') as $rlvl)
{
$item = explode("\r\n",$$rlvl);
...
...
@@ -243,7 +228,9 @@ function get_item_place($which)
function
get_item_npcdrop
(
$which
)
{
global
$npcinfo
,
$anpcinfo
,
$enpcinfo
,
$typeinfo
;
include
config
(
'npc'
,
1
);
include
config
(
'addnpc'
,
1
);
include
config
(
'evonpc'
,
1
);
$result
=
''
;
$nownpclist
=
$npcinfo
;
...
...
include/game/revbattle.func.php
View file @
651a5455
...
...
@@ -42,7 +42,8 @@
if
(
$unlock
)
{
if
(
get_skilltags
(
$sk
,
'unlock_battle_hidden'
))
continue
;
$sk_desc
.=
is_array
(
$cskills
[
$sk
][
'lockdesc'
])
?
$cskills
[
$sk
][
'lockdesc'
][
$unlock
]
:
$cskills
[
$sk
][
'lockdesc'
];
$sk_desc
.=
parse_skilllockdesc
(
$sk
,
$unlock
);
//$sk_desc .= is_array($cskills[$sk]['lockdesc']) ? $cskills[$sk]['lockdesc'][$unlock] : $cskills[$sk]['lockdesc'];
}
//再检查技能是否满足激活条件
else
...
...
include/game/revclubskills.func.php
View file @
651a5455
...
...
@@ -245,7 +245,7 @@
if
(
empty
(
$data
[
'clbpara'
][
'skill'
])
||
!
in_array
(
$sk
,
$data
[
'clbpara'
][
'skill'
]))
{
//echo "技能{$sk}未解锁<br>";
return
"
技能未解锁!<br>
"
;
return
"
noskill
"
;
}
if
(
!
empty
(
$cskills
[
$sk
][
'unlock'
]))
{
...
...
@@ -286,6 +286,48 @@
return
0
;
}
# 技能是否满足消耗条件,返回0时为可激活,否则返回对应的未满足条件 $sk:技能名;$data:角色数据
function
check_skill_cost
(
$sk
,
$data
)
{
global
$cskills
;
# 不满足激活条件输出的文本,先写在这里,之后挪到配置文件里
$cannot_active_log
=
Array
(
0
=>
'怒气不足,需要<span class="red">[:ragecost:]</span>点怒气'
,
);
# 检查技能需要消耗的怒气条件是否满足
$ragecost
=
get_skillvars
(
$sk
,
'ragecost'
);
if
(
$ragecost
&&
$data
[
'rage'
]
<
$ragecost
)
{
$clog
=
str_replace
(
'[:ragecost:]'
,
$ragecost
,
$cannot_active_log
[
0
]);
return
$clog
;
}
return
0
;
}
function
parse_skilllockdesc
(
$sk
,
$lock
)
{
global
$cskills
;
$cskill
=
$cskills
[
$sk
];
# 检查冷却时间
if
(
is_array
(
$lock
))
{
$cd
=
$lock
[
0
];
$lock
=
$lock
[
1
];
}
# 通用未解锁项目
if
(
$lock
==
'noskill'
||
!
isset
(
$cskill
[
'lockdesc'
]))
return
"技能未解锁或解锁条件不明!<br>"
;
# 返回对应的未解锁描述
if
(
is_array
(
$cskill
[
'lockdesc'
]))
{
$lockdesc
=
isset
(
$cskill
[
'lockdesc'
][
$lock
])
?
$cskill
[
'lockdesc'
][
$lock
]
:
"技能不可用,可能是因为:
{
$lock
}
<br>"
;
}
else
{
$lockdesc
=
$cskill
[
'lockdesc'
];
}
return
$lockdesc
;
}
function
parse_skillrules
(
$key
,
$prefix
=
"
\$
data"
,
$prefix2
=
"['clbpara']"
)
{
//传入值内有'-'号,代表是clbpara内的内容
...
...
@@ -327,24 +369,6 @@
return
$key
;
}
# 技能是否满足消耗条件,返回0时为可激活,否则返回对应的未满足条件 $sk:技能名;$data:角色数据
function
check_skill_cost
(
$sk
,
$data
)
{
global
$cskills
;
# 不满足激活条件输出的文本,先写在这里,之后挪到配置文件里
$cannot_active_log
=
Array
(
0
=>
'怒气不足,需要<span class="red">[:ragecost:]</span>点怒气'
,
);
# 检查技能需要消耗的怒气条件是否满足
$ragecost
=
get_skillvars
(
$sk
,
'ragecost'
);
if
(
$ragecost
&&
$data
[
'rage'
]
<
$ragecost
)
{
$clog
=
str_replace
(
'[:ragecost:]'
,
$ragecost
,
$cannot_active_log
[
0
]);
return
$clog
;
}
return
0
;
}
# 获取指定技能标签 $sk:技能名;$stag:要寻找的特定标签;(非必须)$para:$clbpara
function
get_skilltags
(
$sk
,
$stag
=
''
)
{
...
...
include/resources.func.php
View file @
651a5455
...
...
@@ -13,6 +13,15 @@ function get_equip_list()
return
$equip_list
;
}
# mixitem_1.php; vnmixitem_1.php;
function
get_mixinfo
()
{
include
config
(
"mixitem"
,
1
);
include
config
(
"vnmixitem"
,
1
);
if
(
!
empty
(
$vn_mixinfo
))
$mixinfo
=
array_merge
(
$mixinfo
,
$vn_mixinfo
);
return
$mixinfo
;
}
# achievement_1.php
function
get_achtype
()
{
...
...
include/system.func.php
View file @
651a5455
...
...
@@ -509,15 +509,16 @@ function gameover($time = 0, $mode = '', $winname = '') {
//锁定解除、幻境解离结局,检查是否为队伍获胜……
if
((
$winmode
==
3
||
$winmode
==
7
)
&&
!
empty
(
$pdata
[
'teamID'
]))
{
$team
=
$pdata
[
'teamID'
];
$team_mates
=
Array
(
$pdata
[
'name'
]);
$team
=
$pdata
[
'teamID'
];
$team_mates
=
Array
(
$pdata
[
'name'
]);
$team_ips
=
Array
(
$pdata
[
'ip'
]);
$tresult
=
$db
->
query
(
"SELECT name,ip FROM
{
$tablepre
}
players WHERE teamID='
$team
' AND type=0"
);
if
(
$db
->
num_rows
(
$tresult
)
>
1
)
{
while
(
$tpdata
=
$db
->
fetch_array
(
$tresult
))
{
if
(
!
in_array
(
$tpdata
[
'name'
],
$team_mates
)
&&
$tpdata
[
'ip'
]
!=
$pdata
[
'ip'
]
)
if
(
!
in_array
(
$tpdata
[
'name'
],
$team_mates
)
&&
!
in_array
(
$tpdata
[
'ip'
],
$team_ips
)
)
{
$team_mates
[]
=
$tpdata
[
'name'
];
$team_ips
[]
=
$tpdata
[
'ip'
];
//队伍获胜时 同队玩家也可以获得对应结局成就
include_once
GAME_ROOT
.
'./include/game/achievement.func.php'
;
check_end_achievement_rev
(
$tpdata
[
'name'
],
$winmode
);
...
...
include/vnworld/vnmix.func.php
0 → 100644
View file @
651a5455
<?php
if
(
!
defined
(
'IN_GAME'
))
{
exit
(
'Access Denied'
);
}
/*** 模块函数部分 ***/
# 格式化显示从数据库中读出的待审核的配方文件
function
parse_queue_vnmix_info
(
$carr
)
{
include_once
GAME_ROOT
.
'./include/game/itemplace.func.php'
;
// 格式化素材来源
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
if
(
!
empty
(
$carr
[
'stf'
.
$i
]))
{
$snm
=
$carr
[
'stf'
.
$i
];
$tooltipinfo
=
get_item_place
(
$snm
);
if
(
!
empty
(
$tooltipinfo
))
$carr
[
'stf'
.
$i
]
=
"<span tooltip=
\"
"
.
$tooltipinfo
.
"
\"
>"
.
$snm
.
"</span>"
;
}
}
// 格式化名称
$carr
[
'itm_desc'
]
=
parse_info_desc
(
$carr
[
'itm'
],
'm'
);
// 格式化类别
$carr
[
'itmk_desc'
]
=
parse_info_desc
(
$carr
[
'itmk'
],
'k'
);
// 合并显示类
$carr
[
'result'
]
=
$carr
[
'itmk_desc'
]
.
'/'
.
$carr
[
'itme'
]
.
'/'
.
$carr
[
'itms'
];
// 格式化属性
if
(
!
empty
(
$carr
[
'itmsk'
]))
{
$carr
[
'itmsk'
]
=
get_itmsk_array
(
$carr
[
'itmsk'
]);
$carr
[
'itmsk_desc'
]
=
parse_info_desc
(
$carr
[
'itmsk'
],
'sk'
,
$carr
[
'itmk'
]);
$carr
[
'result'
]
.=
'/'
.
$carr
[
'itmsk_desc'
];
}
return
$carr
;
}
# 从数据库中读取全部或指定待审核配方文件
function
get_queue_vnmix_list
(
$id
=
NULL
)
{
global
$db
,
$tablepre
;
if
(
isset
(
$id
))
{
$id
=
(
int
)
$id
;
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
vnmixitem WHERE iid=
{
$id
}
"
);
if
(
$db
->
num_rows
(
$result
))
{
return
$db
->
fetch_array
(
$result
);
}
}
else
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
vnmixitem "
);
if
(
$db
->
num_rows
(
$result
))
{
while
(
$t
=
$db
->
fetch_array
(
$result
,
MYSQLI_ASSOC
))
{
$carr
[
$t
[
'iid'
]]
=
$t
;
unset
(
$carr
[
$t
[
'iid'
]][
'iid'
]);
}
return
$carr
;
}
}
return
;
}
# 检查指定配方id是否存在
function
check_exists_queue_vnmix
(
$id
,
$name
,
$gmflag
=
0
)
{
$varr
=
get_queue_vnmix_list
(
$id
);
if
(
empty
(
$varr
))
return
'<span class="red">错误:该配方不存在!<br>'
;
if
(
empty
(
$gmflag
)
&&
$name
!=
$varr
[
'creator'
])
'<span class="red">错误:你没有权限编辑别人的配方!<br>'
;
return
$varr
;
}
# 检查配方内容合法性
function
check_post_queue_vmix
(
&
$arr
,
$gmflag
=
0
)
{
include
config
(
'vnworld'
,
$gamecfg
);
# 检查合成素材
$snums
=
0
;
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
if
(
!
empty
(
$arr
[
'stf'
.
$i
]))
{
$flag
=
check_post_queue_vitm
(
$arr
[
'stf'
.
$i
],
1
);
if
(
$flag
)
return
$flag
;
$snums
++
;
}
}
if
(
$snums
<
2
||
$snums
>
5
)
return
"合成素材数量非法,需要2-5种合成素材。<br>"
;
# 检查配方道具名
$flag
=
check_post_queue_vitm
(
$arr
[
'itm'
]);
if
(
$flag
)
return
$flag
;
# 检查道具用途
$flag
=
check_post_queue_vitmk
(
$arr
[
'itmk'
],
$gmflag
);
if
(
$flag
)
return
$flag
;
# 检查道具效果
$flag
=
check_post_queue_vitme
(
$arr
[
'itme'
]);
if
(
$flag
)
return
$flag
;
# 检查道具耐久
$flag
=
check_post_queue_vitms
(
$arr
[
'itms'
]);
if
(
$flag
)
return
$flag
;
# 检查道具属性
if
(
!
empty
(
$arr
[
'itmsk'
]))
{
$tmp_sk
=
get_itmsk_array
(
$arr
[
'itmsk'
]);
if
(
count
(
$tmp_sk
)
>
$vnmix_max_sk
)
return
"合成结果最多只能拥有
{
$vnmix_max_sk
}
种属性。<br>"
;
foreach
(
$tmp_sk
as
$sk
)
{
$flag
=
check_post_queue_vitmsk
(
$sk
,
$gmflag
);
if
(
$flag
)
return
$flag
;
}
}
return
;
}
# 检查配方道具名
function
check_post_queue_vitm
(
&
$itm
,
$stf
=
0
)
{
//检查道具名
$itm
=
preg_replace
(
'/[,\#;\p{Cc}]+|锋利的|电气|毒性|[\r\n]|-改|<|>|\"/u'
,
''
,
$itm
);
$itm
=
preg_replace
(
'/^\s+|\s+$/m'
,
''
,
$itm
);
if
(
!
$stf
&&
!
$itm
)
{
$vlog
.=
'<span class="red">错误:道具名不能为空。</span><br>'
;
return
$vlog
;
}
if
(
mb_strlen
(
$itm
,
'utf-8'
)
>
40
)
{
$vlog
.=
'<span class="red">错误:道具名长度超过了40个字符。</span><br>'
;
return
$vlog
;
}
return
;
}
# 检查道具用途
function
check_post_queue_vitmk
(
&
$itmk
,
$gmflag
=
0
)
{
include
config
(
'vnworld'
,
$gamecfg
);
$temp_vn_iteminfo
=
$gmflag
?
$vn_iteminfo
+
$vn_gm_iteminfo
:
$vn_iteminfo
;
if
(
!
isset
(
$itmk
)
||
!
isset
(
$temp_vn_iteminfo
[
$itmk
]))
{
$vlog
=
'<span class="red">错误:输入了无效的道具用途。</span><br>'
;
return
$vlog
;
}
return
;
}
# 检查道具效果
function
check_post_queue_vitme
(
&
$itme
)
{
//检查道具效果、耐久
if
(
$itme
<
1
||
$itme
>
16777214
)
{
$vlog
=
'<span class="red">错误:输入了无效的道具效果(道具效果范围:1~16777214)。</span><br>'
;
return
$vlog
;
}
return
;
}
# 检查道具耐久
function
check_post_queue_vitms
(
&
$itms
)
{
global
$nosta
;
//检查道具耐久
if
(
$itms
<
0
||
$itms
>
65535
)
{
$vlog
=
'<span class="red">错误:输入了无效的道具耐久(道具耐久范围:0~65535)。</span><br>'
;
return
$vlog
;
}
if
(
$itms
==
0
)
$itms
=
$nosta
;
return
;
}
# 检查道具属性
function
check_post_queue_vitmsk
(
$sk
,
$gmflag
=
0
)
{
include
config
(
'vnworld'
,
$gamecfg
);
$temp_vn_itemspkinfo
=
$gmflag
?
$vn_itemspkinfo
+
$vn_gm_itemspkinfo
:
$vn_itemspkinfo
;
if
(
!
isset
(
$temp_vn_itemspkinfo
[
$sk
]))
{
$vlog
=
"<span class='red'>错误:选择了无效的道具属性
{
$sk
}
。</span><br>"
;
return
$vlog
;
}
return
;
}
# 审核通过,将配方写入配方文件
function
writeover_vn_mixilst
(
$varr
=
Array
())
{
global
$checkstr
,
$gamecfg
;
$cache_file
=
config
(
'vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
include
$cache_file
;
else
$vn_mixinfo
=
Array
();
# 将未审批配方格式化
$narr
=
Array
();
$narr
[
'class'
]
=
isset
(
$varr
[
'class'
])
?
$varr
[
'class'
]
:
'item'
;
foreach
(
$varr
as
$key
=>
$arr
)
{
if
(
strpos
(
$key
,
'stf'
)
!==
false
)
{
$id
=
str_replace
(
"stf"
,
""
,
$key
);
if
(
!
empty
(
$arr
))
$narr
[
'stuff'
][
$id
]
=
$arr
;
}
elseif
(
strpos
(
$key
,
'itm'
)
!==
false
)
{
if
(
$key
==
'itm'
)
$narr
[
'result'
][
0
]
=
$arr
;
if
(
$key
==
'itmk'
)
$narr
[
'result'
][
1
]
=
$arr
;
if
(
$key
==
'itme'
)
$narr
[
'result'
][
2
]
=
$arr
;
if
(
$key
==
'itms'
)
$narr
[
'result'
][
3
]
=
$arr
;
if
(
$key
==
'itmsk'
)
$narr
[
'result'
][
4
]
=
$arr
;
}
else
{
$narr
[
$key
]
=
$arr
;
}
}
$narr
[
'name'
]
=
$varr
[
'creator'
];
unset
(
$narr
[
'iid'
]);
unset
(
$narr
[
'creator'
]);
unset
(
$narr
[
'istatus'
]);
# 向本地配方表中加入配方
$vn_mixinfo
[]
=
$narr
;
sort
(
$vn_mixinfo
);
global
$checkstr
;
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$vn_mixinfo = '
.
var_export
(
$vn_mixinfo
,
1
)
.
";
\r\n
?>"
;
file_put_contents
(
$cache_file
,
$cont
,
LOCK_EX
);
return
;
}
# 修改本地配方文件
function
edit_vn_mixilst
(
$varr
,
$t
)
{
global
$checkstr
,
$gamecfg
;
//先加锁
$lock_file
=
GAME_ROOT
.
'./gamedata/bak/vnmix2.lock'
;
if
(
file_exists
(
$lock_file
))
{
return
'有其他管理员正在进行编辑操作,请稍等一会儿再试!'
;
}
else
{
$cache_file
=
config
(
'vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
{
//加锁
writeover
(
$lock_file
,
' '
);
include_once
(
$cache_file
);
global
$vn_mixinfo
;
}
else
{
return
'合成配方文件不存在!不能进行编辑操作。'
;
}
}
if
(
$varr
===
'del'
&&
isset
(
$vn_mixinfo
[
$t
]))
{
$varr
=
$vn_mixinfo
[
$t
];
$varr
[
'status'
]
=
0
;
unset
(
$vn_mixinfo
[
$t
]);
}
sort
(
$vn_mixinfo
);
global
$checkstr
;
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$vn_mixinfo = '
.
var_export
(
$vn_mixinfo
,
1
)
.
";
\r\n
?>"
;
file_put_contents
(
$cache_file
,
$cont
,
LOCK_EX
);
//writeover($cache_file, $cont);
//chmod($cache_file,0777);
unlink
(
$lock_file
);
return
$varr
;
}
function
vn_adminlog
(
$op
,
$an1
=
''
,
$an2
=
''
,
$an3
=
''
){
global
$now
,
$cuser
;
$alfile
=
GAME_ROOT
.
'./gamedata/adminlog.php'
;
if
(
$op
){
$aldata
=
"
$now
,
$cuser
,
$op
,
$an1
,
$an2
,
$an3
,
\n
"
;
writeover
(
$alfile
,
$aldata
,
'ab+'
);
}
return
;
}
?>
templates/default/admin_vnmixlist.htm
View file @
651a5455
...
...
@@ -3,35 +3,36 @@
<input
type=
"hidden"
id=
"vncmd"
name=
"vncmd"
value=
"none"
>
<span
class=
"grey"
>
(回退操作可能存在延迟,如果提交了指令后界面没有变化,请等一会儿再刷新看看。)
</span><br>
<!--{if !empty($temp_mixinfo)}-->
<table
class=
"admin"
>
<tr>
<th
width=
"100px"
><span>
提交者
</span></th>
<th
width=
"60px"
><span>
道具分组
</span></th>
<th><span>
$stuff_tips[0]
</span></th>
<th><span>
$stuff_tips[1]
</span></th>
<th><span>
$stuff_tips[2]
</span></th>
<th><span>
$stuff_tips[3]
</span></th>
<th><span>
$stuff_tips[4]
</span></th>
<th
width=
"25px"
><span></span></th>
<th><span>
$result_tips[0]
</span></th>
<th
width=
"45px"
>
调整
<span></span></th>
<table
class=
"admin"
cellSpacing=
1
cellPadding=
4
>
<tr
style=
"text-align: center;"
>
<th
class=
"b1"
width=
"100px"
><span>
{lang vcreator}
</span></th>
<th
class=
"b1"
><span>
{lang vstatus}
</span></th>
<th
class=
"b1"
><span>
{lang stf0}
</span></th>
<th
class=
"b1"
><span>
{lang stf1}
</span></th>
<th
class=
"b1"
><span>
{lang stf2}
</span></th>
<th
class=
"b1"
><span>
{lang stf3}
</span></th>
<th
class=
"b1"
><span>
{lang stf4}
</span></th>
<th
class=
"b1"
width=
"25px"
><span></span></th>
<th
class=
"b1"
style=
"padding-left: 2px; padding-right: 2px;"
>
{lang vitm}
</th>
<th
class=
"b1"
style=
"padding-left: 3px; padding-right: 3px;"
>
{lang vitmsk}
</th>
<th
class=
"b1"
width=
"45px"
>
{lang veback}
<span></span></th>
</tr>
<!--{loop $temp_mixinfo $key $arr}-->
<tr>
<td
style=
"text-align: center;
"
>
$arr['name']
</td>
<td
style=
"text-align: center;
"
>
$vrclassinfo[$arr['class']][0]
</td>
<td
style=
"text-align: center;"
>
<!--{if isset($arr['stuff'][0])}-->
$arr['stuff'][0]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
style=
"text-align: center;"
>
<!--{if isset($arr['stuff'][1])}-->
$arr['stuff'][1]
<!--{else}-->
-
<!--{/if}-->
</span>
</td>
<td
style=
"text-align: center;"
>
<!--{if isset($arr['stuff'][2])}-->
$arr['stuff'][2]
<!--{else}-->
-
<!--{/if}-->
</span>
</td>
<td
style=
"text-align: center;"
>
<!--{if isset($arr['stuff'][3])}-->
$arr['stuff'][3]
<!--{else}-->
-
<!--{/if}-->
</span>
</td>
<td
style=
"text-align: center;"
>
<!--{if isset($arr['stuff'][4])}-->
$arr['stuff'][4]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
style=
"text-align: center;
"
>
→
</td>
<td
style=
"text-align: center;"
>
$arr['result'][0]/$arr['result'][1]/$arr['result'][2]/$arr['result'][3]
<!--{if isset($arr['result'][4])}-->
/$arr['result'][4]
<!--{/if}-->
</td>
<td
style=
"text-align: center;"
>
<!--<input type="submit" value="编辑" onclick="$('vncmd').value='edit_$key'">--
>
<input
type=
"submit"
value=
"回退"
onclick=
"$('vncmd').value='del_$key'"
>
</td>
</tr>
<tr>
<td
class=
"b3
"
>
$arr['name']
</td>
<td
class=
"b3
"
>
$vrclassinfo[$arr['class']][0]
</td>
<td
class=
"b3"
style=
"max-width:60px"
>
$arr['stuff'][0]
</td>
<td
class=
"b3"
style=
"max-width:60px"
>
$arr['stuff'][1]
</td>
<td
class=
"b3"
style=
"max-width:60px"
>
$arr['stuff'][2]
</td>
<td
class=
"b3"
style=
"max-width:60px"
>
$arr['stuff'][3]
</td>
<td
class=
"b3"
style=
"max-width:60px"
>
$arr['stuff'][4]
</td>
<td
class=
"b3
"
>
→
</td>
<td
class=
"b3"
>
$arr['result'][0]
</td>
<td
class=
"b3"
style=
"max-width:200px"
>
$arr['result'][1]/$arr['result'][2]/$arr['result'][3]
<!--{if !empty($arr['result'][4])}-->
/$arr['result'][4]
<!--{/if}-->
</td
>
<td
class=
"b3"
style=
"text-align:center;"
>
<input
type=
"submit"
value=
"回退"
onclick=
"$('vncmd').value='del_$key'"
>
</td>
</tr>
<!--{/loop}-->
</table>
<!--{else}-->
...
...
templates/default/skill_c1_veteran.htm
View file @
651a5455
...
...
@@ -15,7 +15,7 @@
<span
class=
"skilldesc"
>
<span
tooltip=
"满足条件时自动触发"
class=
"gold"
>
【被动技】
</span>
选择任一单体减半防御属性,你视为具有它。
<br>
当前选择是:
<span
class=
"yellow
b
"
>
<!--{if !empty($nchoice)}-->
$itemspkinfo[$nchoice]
<!--{else}-->
无
<!--{/if}-->
</span>
当前选择是:
<span
class=
"yellow"
>
<!--{if !empty($nchoice)}-->
$itemspkinfo[$nchoice]
<!--{else}-->
无
<!--{/if}-->
</span>
变更选择为:
<select
name=
"upgpara"
id=
"upgpara"
onchange=
"$('mode').value='revskpts';$('command').value='upgskill_c1_veteran';postCmd('gamecmd','command.php');this.disabled=true;"
>
...
...
@@ -40,12 +40,15 @@
</tr>
</table>
<!--{if $unlock_c1_veteran_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc('c1_veteran',$unlock_c1_veteran_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<span
class=
"yellow"
>
18级时解锁
</span>
<span
class=
"yellow"
>
$unlock_desc
</span>
</td>
</tr>
</table>
...
...
templates/default/skill_c3_enchant.htm
View file @
651a5455
<!-- 注意:大部分技能可以直接通过编辑配置文件完成 -->
<!-- 可能的、需要新建模板的情况:你的技能需要在面板内执行比较复杂的、单靠配置文件无法实现的操作 -->
<tr>
<td
class=
"b1"
width=
"40"
>
<span>
{$cskills['c3_enchant']['name']}
</span>
</td>
<td>
<!-- ↓↓↓ 存在解锁条件的技能才需要有这一部分 ↓↓↓ -->
<!--{eval $unlock_c3_enchant_flag = check_skill_unlock('c3_enchant',$uidata);}-->
<!--{if $unlock_c3_enchant_flag}-->
<div
style=
"position:relative; height:100%; width:100%;"
onmouseover=
"skill_unacquired_mouseover.call(this,event)"
onmouseout=
"skill_unacquired_mouseout.call(this,event)"
>
<div
class=
"skill_unacquired"
>
<!--{/if}-->
<!-- ↑↑↑ 存在解锁条件的技能才需要有这一部分 ↑↑↑ -->
<table
class=
"skilltable"
>
<tr>
<td
class=
"skilldesc_left b3"
>
<span
class=
"skilldesc"
>
<!-- 技能介绍,自己填任意内容或使用下面的方式 -->
<!--{eval $c3_enchant_desc = parse_skilldesc('c3_enchant',$uidata);}-->
{$c3_enchant_desc}
<span
style=
"height:4px; display:block;"
>
</span>
...
...
@@ -35,17 +30,15 @@
</td>
</tr>
</table>
<!-- ↓↓↓ 存在解锁条件的技能才需要有这一部分 ↓↓↓ -->
<!--{if $unlock_c3_enchant_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc('c3_enchant',$unlock_c3_enchant_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<span
class=
"yellow"
>
<!-- 未满足解锁条件时显示的文本,自己填或使用下面的方式 -->
<!--{eval $c3_enchant_lockdesc = $cskills['c3_enchant']['lockdesc'][$unlock_c3_enchant_flag];}-->
$c3_enchant_lockdesc
$unlock_desc
</span>
</td>
</tr>
...
...
@@ -53,6 +46,5 @@
</div>
</div>
<!--{/if}-->
<!-- ↑↑↑ 存在解锁条件的技能才需要有这一部分 ↑↑↑ -->
</td>
</tr>
\ No newline at end of file
templates/default/skill_c4_roar.htm
View file @
651a5455
...
...
@@ -26,14 +26,14 @@
</tr>
</table>
<!--{if $unlock_c4_roar_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc('c4_roar',$unlock_c4_roar_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<span
class=
"yellow"
>
<!--{eval $c4_roar_lockdesc = $cskills['c4_roar']['lockdesc'][$unlock_c4_roar_flag];}-->
$c4_roar_lockdesc
$unlock_desc
</span>
</td>
<!--{if !empty($unlock_c4_roar_flag) && $unlock_c4_roar_flag == 'skillpara|c4_roar-active'}-->
...
...
templates/default/skill_c4_sniper.htm
View file @
651a5455
...
...
@@ -26,14 +26,14 @@
</tr>
</table>
<!--{if $unlock_c4_sniper_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc('c4_sniper',$unlock_c4_sniper_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<span
class=
"yellow"
>
<!--{eval $c4_sniper_lockdesc = $cskills['c4_sniper']['lockdesc'][$unlock_c4_sniper_flag];}-->
$c4_sniper_lockdesc
$unlock_desc
</span>
</td>
<!--{if !empty($unlock_c4_sniper_flag) && $unlock_c4_sniper_flag == 'skillpara|c4_sniper-active'}-->
...
...
templates/default/skill_c5_focus.htm
View file @
651a5455
...
...
@@ -45,13 +45,15 @@
</tr>
</table>
<!--{if $unlock_skid_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc($skid,$unlock_skid_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<!--{eval $skid_lockdesc = $cskill['lockdesc'][$unlock_skid_flag];}-->
<span
class=
"yellow"
>
$skid_lockdesc
</span>
<span
class=
"yellow"
>
$unlock_desc
</span>
</td>
</tr>
</table>
...
...
templates/default/skill_temp.htm
View file @
651a5455
<!-- 注意:大部分技能可以直接通过编辑配置文件完成 -->
<!-- 可能的、需要新建模板的情况:你的技能需要在面板内执行比较复杂的、单靠配置文件无法实现的操作 -->
<!--{eval $cskill = $cskills[$skid];}-->
<!--{if isset($cskill['maxlvl'])}-->
<!--{eval $now_clvl = get_skilllvl($skid,$uidata); $max_lvl_flag = $now_clvl >= $cskill['maxlvl'] ? 1 : 0;}-->
...
...
@@ -11,13 +9,11 @@
<span>
{$cskill['name']}
</span>
</td>
<td>
<!-- ↓↓↓ 存在解锁条件的技能才需要有这一部分 ↓↓↓ -->
<!--{eval $unlock_flag = check_skill_unlock($skid,$uidata);}-->
<!--{if $unlock_flag}-->
<div
style=
"position:relative; height:100%; width:100%;"
onmouseover=
"skill_unacquired_mouseover.call(this,event)"
onmouseout=
"skill_unacquired_mouseout.call(this,event)"
>
<div
class=
"skill_unacquired"
>
<!--{/if}-->
<!-- ↑↑↑ 存在解锁条件的技能才需要有这一部分 ↑↑↑ -->
<table
class=
"skilltable"
>
<tr>
<td
class=
"skilldesc_left b3"
>
...
...
@@ -36,20 +32,15 @@
</td>
</tr>
</table>
<!-- ↓↓↓ 存在解锁条件的技能才需要有这一部分 ↓↓↓ -->
<!--{if $unlock_flag}-->
<!--{eval $unlock_desc = parse_skilllockdesc($skid,$unlock_flag);}-->
</div>
<div
class=
"skill_unacquired_hint"
>
<table
class=
"skilltable"
>
<tr>
<td
valign=
"center"
align=
"center"
>
<span
class=
"yellow"
>
<!-- 未满足解锁条件时显示的文本,自己填或使用下面的方式 -->
<!--{if is_array($unlock_flag)}-->
<!--{eval $unlock_cd = $unlock_flag[1]; $unlock_flag = $unlock_flag[0]; $unlock_flag = str_replace("[:cd:]","$unlock_cd",$unlock_flag);}-->
<!--{/if}-->
<!--{eval $unlock_flag = is_array($cskill['lockdesc']) ? $cskill['lockdesc'][$unlock_flag] : $cskill['lockdesc']; $unlock_flag = isset($unlock_cd) ? str_replace("[:cd:]","$unlock_cd",$unlock_flag) : $unlock_flag;}-->
$unlock_flag
$unlock_desc
</span>
</td>
</tr>
...
...
@@ -57,6 +48,5 @@
</div>
</div>
<!--{/if}-->
<!-- ↑↑↑ 存在解锁条件的技能才需要有这一部分 ↑↑↑ -->
</td>
</tr>
\ No newline at end of file
templates/default/templates.lang.php
View file @
651a5455
...
...
@@ -84,7 +84,27 @@ $language = array
'tutorial'
=>
'游戏教程'
,
'enterturorial'
=>
'观看游戏教程'
,
'nexttutorial'
=>
'下一篇教程'
,
# vnworld
'vcreator'
=>
'作者'
,
'vstatus'
=>
'提交状态'
,
'viclass'
=>
'道具分组'
,
'stf0'
=>
'合成材料一'
,
'stf1'
=>
'合成材料二'
,
'stf2'
=>
'合成材料三'
,
'stf3'
=>
'合成材料四'
,
'stf4'
=>
'合成材料五'
,
'stf5'
=>
'合成材料六'
,
'vitm'
=>
'合成结果'
,
'vitmk'
=>
'道具用途'
,
'vitme'
=>
'道具效果'
,
'vitms'
=>
'道具耐久'
,
'vitmsk'
=>
'物品属性'
,
'veitmsk'
=>
'编辑物品属性'
,
'vedit'
=>
'编辑'
,
'veback'
=>
'回退'
,
# in-game
'name'
=>
'姓名'
,
'gender'
=>
'性别'
,
'icon'
=>
'头像'
,
...
...
templates/default/vn_postitem.htm
View file @
651a5455
...
...
@@ -8,27 +8,27 @@
<span
class=
"yellow"
><div
id=
"vmixc2"
>
所持切糕数:$udata['credits2']
</div></span>
<table>
<tr>
<td
class=
"b1"
height=
20px
><span>
$stuff_tips[0]
</span></td>
<td
class=
"b1"
><span>
$stuff_tips[1]
</span></td>
<td
class=
"b1"
><span>
$stuff_tips[2]
</span></td>
<td
class=
"b1"
><span>
$stuff_tips[3]
</span></td>
<td
class=
"b1"
><span>
$stuff_tips[4]
</span></td>
<td
class=
"b1"
height=
20px
><span>
{lang stf0}
</span></td>
<td
class=
"b1"
><span>
{lang stf1}
</span></td>
<td
class=
"b1"
><span>
{lang stf2}
</span></td>
<td
class=
"b1"
><span>
{lang stf3}
</span></td>
<td
class=
"b1"
><span>
{lang stf4}
</span></td>
</tr>
<tr>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vsname0"
list=
"vsnamelist"
value=
"<!--{if !empty($
uvs0)}-->$uvs0
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
<input
type=
"text"
name=
"vsname0"
list=
"vsnamelist"
value=
"<!--{if !empty($
carr['stf0'])}-->$carr['stf0']
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vsname1"
list=
"vsnamelist"
value=
"<!--{if !empty($
uvs1)}-->$uvs1
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
<input
type=
"text"
name=
"vsname1"
list=
"vsnamelist"
value=
"<!--{if !empty($
carr['stf1'])}-->$carr['stf1']
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vsname2"
list=
"vsnamelist"
value=
"<!--{if !empty($
uvs2)}-->$uvs2
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
<input
type=
"text"
name=
"vsname2"
list=
"vsnamelist"
value=
"<!--{if !empty($
carr['stf2'])}-->$carr['stf2']
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vsname3"
list=
"vsnamelist"
value=
"<!--{if !empty($
uvs3)}-->$uvs3
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
<input
type=
"text"
name=
"vsname3"
list=
"vsnamelist"
value=
"<!--{if !empty($
carr['stf3'])}-->$carr['stf3']
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vsname4"
list=
"vsnamelist"
value=
"<!--{if !empty($
uvs4)}-->$uvs4
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
<input
type=
"text"
name=
"vsname4"
list=
"vsnamelist"
value=
"<!--{if !empty($
carr['stf4'])}-->$carr['stf4']
<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
</tr>
</table>
...
...
@@ -36,76 +36,56 @@
<table>
<tr>
<td
class=
"b1"
width=
20px
></td>
<td
class=
"b1"
><span>
$result_tips[0]
</span></td>
<td
class=
"b1"
><span>
$result_tips[1]
</span></td>
<td
class=
"b1"
><span>
$result_tips[2]
</span></td>
<td
class=
"b1"
><span>
$result_tips[3]
</span></td>
<td
class=
"b1"
><span>
$result_tips[4]
</span></td>
<td
class=
"b1"
><span>
$result_tips[5]
</span></td>
<td
class=
"b1"
><span>
$result_tips[6]
</span></td>
<td
class=
"b1"
><span>
$result_tips[7]
</span></td>
<td
class=
"b1"
><span>
$result_tips[8]
</span></td>
<td
class=
"b1"
><span>
$result_tips[9]
</span></td>
<td
class=
"b1"
><span>
{lang viclass}
</span></td>
<td
class=
"b1"
><span>
{lang vitm}
</span></td>
<td
class=
"b1"
><span>
{lang vitmk}
</span></td>
<td
class=
"b1"
><span>
{lang vitme}
</span></td>
<td
class=
"b1"
><span>
{lang vitms}
</span></td>
<td
class=
"b1"
><span>
{lang vitmsk}
</span></td>
<td
class=
"b1"
><span>
{lang veitmsk}
</span></td>
</tr>
<tr>
<td
class=
"b3"
width=
20px
>
↪
</td>
<td
class=
"b3"
>
<input
type=
"text"
name=
"vrname"
list=
"vsnamelist"
value=
"<!--{if !empty($uvrn)}-->$uvrn<!--{else}-->请输入道具名<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<select
name=
"vrk"
>
<!--{loop $temp_vn_iteminfo $k $info}-->
<option
value=
"$k"
<!
--
{
if
$
k=
==$uvrk}--
>
selected
<!--{/if}-->
>$info
<select
name=
"vrck"
>
<!--{eval $tmpck = !empty($carr['class']) ? $carr['class'] : 'item';}-->
<!--{loop $vrclassinfo $ck $vcarr}-->
<option
value=
"$ck"
<!
--
{
if
$
ck=
==$carr['class']}--
>
selected
<!--{/if}-->
>$vcarr[0]
<!--{/loop}-->
</select>
</td>
<td
class=
"b3"
>
<input
type=
"number"
name=
"vre"
style=
"width:45px"
value=
"$uvre"
min=
"1"
max=
"16777214"
oninput=
"if(value>16777214)value=16777214;if(value<1)value=1"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<input
type=
"number"
name=
"vrs"
style=
"width:45px"
value=
"$uvrs"
min=
"0"
max=
"65535"
oninput=
"if(value>65535)value=65535;if(value<0)value=0"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<select
name=
"vrsk0"
>
<!--{loop $temp_vn_itemspkinfo $sk $skinfo}-->
<option
value=
"$sk"
<!
--
{
if
$
sk=
==$uvrsk0}--
>
selected
<!--{/if}-->
>$skinfo
<!--{/loop}-->
</select>
<input
type=
"text"
name=
"vrname"
list=
"vsnamelist"
value=
"<!--{if !empty($carr['itm'])}-->$carr['itm']<!--{else}-->在此填写道具名<!--{/if}-->"
maxlength=
"30"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<select
name=
"vrsk1"
>
<!--{loop $temp_vn_itemspkinfo $sk $skinfo}-->
<option
value=
"$sk"
<!
--
{
if
$
sk=
==$uvrsk1}--
>
selected
<!--{/if}-->
>$skinfo
<select
name=
"vrk"
>
<!--{eval $tmpk = !empty($carr['itmk']) ? $carr['itmk'] : 'Y';}-->
<!--{loop $temp_vn_iteminfo $k $info}-->
<option
value=
"$k"
<!
--
{
if
$
k=
==$carr['itmk']}--
>
selected
<!--{/if}-->
>$info
<!--{/loop}-->
</select>
</td>
<td
class=
"b3"
>
<select
name=
"vrsk2"
>
<!--{loop $temp_vn_itemspkinfo $sk $skinfo}-->
<option
value=
"$sk"
<!
--
{
if
$
sk=
==$uvrsk2}--
>
selected
<!--{/if}-->
>$skinfo
<!--{/loop}-->
</select>
<td
class=
"b3"
>
<input
type=
"number"
name=
"vre"
style=
"width:45px"
value=
"$carr['itme']"
min=
"1"
max=
"16777214"
oninput=
"if(value>16777214)value=16777214;if(value<1)value=1"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</td>
<td
class=
"b3"
>
<select
name=
"vrsk3"
>
<!--{loop $temp_vn_itemspkinfo $sk $skinfo}-->
<option
value=
"$sk"
<!
--
{
if
$
sk=
==$uvrsk3}--
>
selected
<!--{/if}-->
>$skinfo
<!--{/loop}-->
</select>
<span
tooltip2=
"输入值为0时耐久度为“∞”"
>
<input
type=
"number"
name=
"vrs"
style=
"width:45px"
value=
"$carr['itms']"
min=
"0"
max=
"65535"
oninput=
"if(value>65535)value=65535;if(value<0)value=0"
onkeydown=
"if(event.keyCode==13){event.preventDefault();}"
>
</span>
</td>
<td
class=
"b3"
>
<select
name=
"vrsk4"
>
<!--{loop $temp_vn_itemspkinfo $sk $skinfo}-->
<option
value=
"$sk"
<!
--
{
if
$
sk=
==$uvrsk4}--
>
selected
<!--{/if}-->
>$skinfo
<!--{/loop}-->
</select>
<td
class=
"b3"
style=
"min-width: 200px;"
>
<div
id=
"tmpsk"
>
<!--{if !empty($carr['itmsk_desc'])}-->
{$carr['itmsk_desc']}
<!--{/if}-->
</div>
<input
type=
"hidden"
id=
"vrsk"
name=
"vrsk"
value=
"{$carr['itmsk']}"
>
</td>
<td
class=
"b3"
>
<select
name=
"vrck"
>
<!--{loop $vrclassinfo $ck $vcarr}-->
<option
value=
"$ck"
<!
--
{
if
$
ck=
==$uvrck}--
>
selected
<!--{/if}-->
>$vcarr[0]
<span
tooltip2=
"删除最后一个添加的属性"
><input
type=
"button"
value=
"-"
onclick=
"changeVrskResult(-1);"
></span>
<select
id=
"evrsk"
name=
"evrsk"
>
<!--{eval $tmpk = !empty($carr['itmk']) ? $carr['itmk'] : 'Y';}-->
<!--{loop $temp_vn_itemspkinfo $sk $info}-->
<option
value=
"$sk"
>
$info
</option>
<!--{/loop}-->
</select>
<span
tooltip2=
"添加当前选择的属性"
><input
type=
"button"
value=
"+"
onclick=
"changeVrskResult();"
></span>
</td>
</tr>
</table>
...
...
@@ -119,14 +99,14 @@
<br>
<div
id=
"vmixlog"
>
$vmixlog
</div>
<div
id=
"vmixprint"
></div>
<!--{if isset($
editid
)}-->
<!--{eval $ep='ep
'.$editid;$dp='dp'.$editid;$c1='cs'.$editid.'+1';$c2='cs
'.$editid.'+2';}-->
<!--{if isset($
self_edit_flag
)}-->
<!--{eval $ep='ep
+'.$editid;$dp='dp+'.$editid;$c1='cs+'.$editid.'+1';$c2='cs+
'.$editid.'+2';}-->
<!--{if ($udata['groupid']>=$vnmix_editor_group||$udata['username']==$gamefounder)}-->
<input
type=
"radio"
id=
"c1"
name=
"exmode"
value=
"$c1"
><a
onclick=
"$('c1').click();"
href=
"javascript:void(0);"
>
审核通过
</a>
<input
type=
"radio"
id=
"c2"
name=
"exmode"
value=
"$c2
"
><a
onclick=
"$('c2').click();"
href=
"javascript:void(0);"
>
审核不通过
</a>
<input
type=
"radio"
id=
"c1"
name=
"exmode"
value=
"$c1"
style=
"margin-left: 10px;"
><a
onclick=
"$('c1').click();"
href=
"javascript:void(0);"
>
审核通过
</a>
<input
type=
"radio"
id=
"c2"
name=
"exmode"
value=
"$c2"
style=
"margin-left: 10px;
"
><a
onclick=
"$('c2').click();"
href=
"javascript:void(0);"
>
审核不通过
</a>
<!--{/if}-->
<input
type=
"radio"
id=
"ep"
name=
"exmode"
value=
"$ep
"
checked
><a
onclick=
"$('ep').click();"
href=
"javascript:void(0);"
>
编辑
</a>
<input
type=
"radio"
id=
"dp"
name=
"exmode"
value=
"$dp
"
><a
onclick=
"$('dp').click();"
href=
"javascript:void(0);"
><span
class=
"red"
>
删除(该操作不可撤销!)
</span></a>
<input
type=
"radio"
id=
"ep"
name=
"exmode"
value=
"$ep"
style=
"margin-left: 10px;
"
checked
><a
onclick=
"$('ep').click();"
href=
"javascript:void(0);"
>
编辑
</a>
<input
type=
"radio"
id=
"dp"
name=
"exmode"
value=
"$dp"
style=
"margin-left: 10px;
"
><a
onclick=
"$('dp').click();"
href=
"javascript:void(0);"
><span
class=
"red"
>
删除(该操作不可撤销!)
</span></a>
<br>
<!--{/if}-->
<br>
...
...
@@ -134,5 +114,35 @@
<a
href=
"vnworld.php"
><input
type=
"button"
value=
"返回"
></a>
<br>
</form>
<script>
function
changeVrskResult
(
mode
=
0
)
{
var
sk
=
$
(
'
vrsk
'
).
value
;
var
tsk
=
sk
?
$
(
'
tmpsk
'
).
innerHTML
:
''
;
var
key
=
$
(
'
evrsk
'
).
selectedIndex
;
var
arr
=
$
(
'
evrsk
'
).
options
;
if
(
!
mode
&&
sk
.
length
>=
7
)
{
window
.
alert
(
"
不能添加超过7个属性
"
);
return
;
}
if
(
key
||
mode
<
0
)
{
var
skarr
=
sk
.
length
>
0
?
sk
.
split
(
''
)
:
[];
var
tarr
=
tsk
.
length
>
0
?
tsk
.
split
(
'
+
'
)
:
[];
if
(
!
mode
)
{
skarr
.
push
(
arr
[
key
].
value
);
tarr
.
push
(
arr
[
key
].
text
);
}
else
{
skarr
.
pop
();
tarr
.
pop
();
}
$
(
'
vrsk
'
).
value
=
skarr
.
join
(
''
);
$
(
'
tmpsk
'
).
innerHTML
=
tarr
.
join
(
'
+
'
);
}
}
</script>
</center>
{template footer}
\ No newline at end of file
templates/default/vn_records.htm
View file @
651a5455
...
...
@@ -6,42 +6,45 @@
<span
class=
"grey"
>
(提交合成可能存在延迟,如果发现页面上没有显示,请等一会儿再刷新看看。)
</span><br>
<a
href=
"vn_postitem.php"
><input
type=
"button"
value=
"创建一个新的合成"
></a>
<br><br>
<!--{if !empty($
temp_
carr)}-->
<table>
<!--{if !empty($carr)}-->
<table
cellSpacing=
3
cellPadding=
2
>
<tr>
<td
class=
"b1"
height=
20px
width=
"100px"
>
$log_tips[1]
</td>
<td
class=
"b1"
width=
"60px"
>
$result_tips[9]
</td>
<td
class=
"b1"
width=
"100px"
>
$stuff_tips[0]
</td>
<td
class=
"b1"
width=
"100px"
>
$stuff_tips[1]
</td>
<td
class=
"b1"
width=
"100px"
>
$stuff_tips[2]
</td>
<td
class=
"b1"
width=
"100px"
>
$stuff_tips[3]
</td>
<td
class=
"b1"
width=
"100px"
>
$stuff_tips[4]
</td>
<td
class=
"b1"
height=
20px
width=
"100px"
>
{lang vcreator}
</td>
<td
class=
"b1"
>
{lang vstatus}
</td>
<td
class=
"b1"
width=
"60px"
>
{lang viclass}
</td>
<td
class=
"b1"
>
{lang stf0}
</td>
<td
class=
"b1"
>
{lang stf1}
</td>
<td
class=
"b1"
>
{lang stf2}
</td>
<td
class=
"b1"
>
{lang stf3}
</td>
<td
class=
"b1"
>
{lang stf4}
</td>
<td
class=
"b1"
width=
"25px"
></td>
<td
class=
"b1"
style=
"padding-left: 5px; padding-right: 5px;"
>
$result_tips[0]
</td>
<td
class=
"b1"
style=
"padding-left: 2px; padding-right: 2px;"
>
{lang vitm}
</td>
<td
class=
"b1"
style=
"padding-left: 3px; padding-right: 3px;"
>
{lang vitmsk}
</td>
<td
class=
"b1"
width=
"45px"
>
编辑
</td>
<td
class=
"b1"
>
$log_tips[2]
</td>
</tr>
<!--{loop $
temp_
carr $cid $cinfo}-->
<!--{loop $carr $cid $cinfo}-->
<tr>
<td
class=
"b3"
>
$cinfo['name']
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][0])}-->
$vrclassinfo[$cinfo['class']][0]
<!--{else}-->
$vrclassinfo['item'][0]
<!--{/if}-->
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][0])}-->
$cinfo['stuff'][0]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][1])}-->
$cinfo['stuff'][1]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][2])}-->
$cinfo['stuff'][2]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][3])}-->
$cinfo['stuff'][3]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
class=
"b3"
>
<!--{if isset($cinfo['stuff'][4])}-->
$cinfo['stuff'][4]
<!--{else}-->
-
<!--{/if}-->
</td>
<td
class=
"b3"
>
$cinfo['creator']
</td>
<td
class=
"b3"
>
$check_tips[$cinfo['istatus']]
</td>
<td
class=
"b3"
>
$vrclassinfo[$cinfo['class']][0]
</td>
<td
class=
"b3"
style=
"max-width:100px"
>
$cinfo['stf0']
</td>
<td
class=
"b3"
style=
"max-width:100px"
>
$cinfo['stf1']
</td>
<td
class=
"b3"
style=
"max-width:100px"
>
$cinfo['stf2']
</td>
<td
class=
"b3"
style=
"max-width:100px"
>
$cinfo['stf3']
</td>
<td
class=
"b3"
style=
"max-width:100px"
>
$cinfo['stf4']
</td>
<td
class=
"b3"
>
→
</td>
<td
class=
"b3"
>
$cinfo['result'][0]
</td>
<td
class=
"b3"
>
$cinfo['itm_desc']
</td>
<td
class=
"b3"
style=
"max-width:200px"
>
$cinfo['result']
</td>
<td
class=
"b3"
>
<!--{if ($cinfo['
name']==$udata['username']||$udata['groupid']>=$vnmix_editor_group||$udata['username']==$gamefounder) && $cinfo['
status']!=1}-->
<!--{if ($cinfo['
creator']==$udata['username']||$udata['groupid']>=$vnmix_editor_group||$udata['username']==$gamefounder) && $cinfo['i
status']!=1}-->
<form
method=
"post"
action=
"vn_postitem.php"
name=
"vn_postitem"
onsubmit=
"vn_postitem.php"
style=
"margin: 0px"
>
<input
type=
"hidden"
name=
"editor"
value=
"$c
info['name']
"
>
<input
type=
"hidden"
name=
"editor"
value=
"$c
user
"
>
<input
type=
"hidden"
name=
"editid"
value=
"$cid"
>
<input
type=
"submit"
name=
"vnmode"
value=
"编辑"
>
</form>
<!--{/if}-->
</td>
<td
class=
"b3"
>
$check_tips[$cinfo['status']]
</td>
</tr>
<!--{/loop}-->
</table>
...
...
vn_postitem.php
View file @
651a5455
...
...
@@ -3,8 +3,8 @@
define
(
'CURSCRIPT'
,
'vn_postitem'
);
require
'./include/common.inc.php'
;
requir
e
config
(
'vnworld'
,
$gamecfg
);
includ
e
config
(
'vnworld'
,
$gamecfg
);
include_once
GAME_ROOT
.
'./include/vnworld/vnmix.func.php'
;
/*** 登陆检测 ***/
if
(
!
$cuser
||!
$cpass
)
{
gexit
(
$_ERROR
[
'no_login'
],
__file__
,
__line__
);
}
...
...
@@ -14,564 +14,176 @@ if(!$db->num_rows($result)) { gexit($_ERROR['login_check'],__file__,__line__); }
$udata
=
$db
->
fetch_array
(
$result
);
if
(
$udata
[
'password'
]
!=
$cpass
)
{
gexit
(
$_ERROR
[
'wrong_pw'
],
__file__
,
__line__
);
}
if
(
$udata
[
'groupid'
]
<=
0
)
{
gexit
(
$_ERROR
[
'user_ban'
],
__file__
,
__line__
);
}
/*** 登陆检测结束 ***/
//可能有隐患
global
$gamefounder
;
$gmflag
=
(
$udata
[
'groupid'
]
>=
$vnmix_editor_group
||
$udata
[
'username'
]
==
$gamefounder
)
?
1
:
0
;
/*** 登陆检测结束 ***/
/*** 页面判定部分 ***/
if
(
!
isset
(
$vnmode
)){
$vnmode
=
'none'
;}
$vmixlog
=
''
;
$vmixlog
=
''
;
$flag
=
NULL
;
$carr
=
Array
(
'class'
=>
'item'
,
'itm'
=>
'请填写道具名'
,
'itmk'
=>
'Y'
,
'itme'
=>
0
,
'itms'
=>
0
,
'itmsk'
=>
''
,
);
if
(
!
isset
(
$vnmode
))
$vnmode
=
''
;
# 编辑指定配方,参数初始化
if
(
isset
(
$_POST
[
'editid'
])
||
isset
(
$_POST
[
'editor'
]))
{
if
(
$_POST
[
'editor'
]
!=
$cuser
)
gexit
(
"编辑者参数非法!"
,
__file__
,
__line__
);
$carr
=
check_exists_queue_vnmix
(
$_POST
[
'editid'
],
$_POST
[
'editor'
],
$gmflag
);
if
(
!
is_array
(
$carr
))
gexit
(
$flag
,
__file__
,
__line__
);
if
(
$carr
[
'itms'
]
==
$nosta
)
$carr
[
'itms'
]
=
0
;
if
(
!
empty
(
$carr
[
'itmsk'
]))
{
$carr
[
'itmsk_desc'
]
=
parse_info_desc
(
get_itmsk_array
(
$carr
[
'itmsk'
]),
'sk'
,
$carr
[
'itmk'
]);
}
else
{
$carr
[
'itmsk'
]
=
''
;
$carr
[
'itmsk_desc'
]
=
'-'
;
}
$self_edit_flag
=
1
;
}
//初始化显示用参数
for
(
$i
=
0
;
$i
<=
4
;
$i
++
)
# 传入了增删查改指令,初始化对应ID
if
(
isset
(
$exmode
)
)
{
$
{
'uvs'
.
$i
}
=
''
;
$
{
'uvrsk'
.
$i
}
=
0
;
$exarr
=
explode
(
'+'
,
$exmode
);
$exmode
=
$exarr
[
0
];
$edit_id
=
(
int
)
$exarr
[
1
];
// 检查是否存在ID
if
(
!
isset
(
$edit_id
))
gexit
(
"关键参数缺失,无法对配方进行编辑。"
,
__file__
,
__line__
);
// 再检查一次要删除的配方是否存在
$earr
=
check_exists_queue_vnmix
(
$edit_id
,
$udata
[
'username'
],
$gmflag
);
if
(
!
is_array
(
$earr
))
gexit
(
$earr
,
__file__
,
__line__
);
// 检查审核配方的状态合法性
if
(
$exmode
==
'cs'
)
{
if
(
!
$gmflag
)
gexit
(
"你没有权限编辑配方状态!"
,
__file__
,
__line__
);
if
(
empty
(
$exarr
[
2
]))
gexit
(
"关键参数缺失,无法对配方进行审核。"
,
__file__
,
__line__
);
$edit_st
=
(
int
)
$exarr
[
2
];
}
}
$uvrn
=
''
;
$uvrk
=
0
;
$uvre
=
1
;
$uvrs
=
0
;
$uvrck
=
'item'
;
//
初始化允许选择的道具类别、属性
#
初始化允许选择的道具类别、属性
$temp_vn_iteminfo
=
$gmflag
?
$vn_iteminfo
+
$vn_gm_iteminfo
:
$vn_iteminfo
;
$temp_vn_itemspkinfo
=
$gmflag
?
$vn_itemspkinfo
+
$vn_gm_itemspkinfo
:
$vn_itemspkinfo
;
//是否道具名开启
联想功能 需要使用sp_ilist.php先生成道具名词库
# 是否开启道具名
联想功能 需要使用sp_ilist.php先生成道具名词库
if
(
$vnmix_name_assoc
)
{
$in_file
=
config
(
'itmlist'
,
$gamecfg
);
if
(
!
file_exists
(
$in_file
))
{
require
'sp_ilist.php'
;
get_itm_namelist
();
}
include_once
(
$in_file
);
include
(
$in_file
);
$temp_item_namelist
=
$item_namelist
;
}
//提交编辑
if
(
isset
(
$exmode
)
&&
strpos
(
$exmode
,
'ep'
)
===
0
)
if
(
isset
(
$exmode
))
{
$edit_id
=
substr
(
$exmode
,
2
);
if
(
!
isset
(
$edit_id
))
{
$edit_id
=
NULL
;
$vlog
=
"<span class='red'>错误:关键参数缺失,无法对配方进行编辑。</span><br>"
;
goto
error_edit2
;
}
//重复检查一次要编辑的配方是否存在
$flag
=
0
;
$flag
=
check_keys_in_vn_cache_file
(
$edit_id
,
$udata
[
'username'
]);
if
(
$flag
&&
!
is_array
(
$flag
))
{
$vlog
=
$flag
;
goto
error_edit2
;
}
$edit_name
=
$flag
[
'name'
];
$edit_result
=
$flag
[
'result'
][
0
];
unset
(
$flag
);
//通过检查,打包。
$flag
=
filter_post_mixlist
(
$vsname0
,
$vsname1
,
$vsname2
,
$vsname3
,
$vsname4
,
$vrname
,
$vrk
,
$vre
,
$vrs
,
$vrsk0
,
$vrsk1
,
$vrsk2
,
$vrsk3
,
$vrsk4
,
$vrck
);
if
(
$flag
&&
!
is_array
(
$flag
)
||
((
!
isset
(
$flag
[
'result'
]))
||
!
isset
(
$flag
[
'stuff'
])))
{
//有非法参数,报错
$vlog
=
$flag
;
goto
error_edit2
;
}
else
{
//通过检查,保存回文件
if
(
$edit_name
!==
$udata
[
'username'
])
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
users WHERE username='
$edit_name
'"
);
if
(
!
$db
->
num_rows
(
$result
))
{
$vlog
=
"<span class='red'>错误:输入了错误的配方作者
{
$edit_name
}
。'</span><br>"
;
goto
error_edit2
;
}
$odata
=
$db
->
fetch_array
(
$result
);
$nm
=
$odata
[
'username'
];
$flag
=
post_in_vn_cache_file
(
$odata
,
$flag
,
$edit_id
);
unset
(
$odata
);
}
else
{
$flag
=
post_in_vn_cache_file
(
$udata
,
$flag
,
$edit_id
);
}
# 提交编辑
if
(
$exmode
==
'ep'
)
{
// 打包
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
$earr
[
'stf'
.
$i
]
=
$
{
'vsname'
.
$i
};
$earr
[
'itm'
]
=
$vrname
;
$earr
[
'itmk'
]
=
$vrk
;
$earr
[
'itme'
]
=
$vre
;
$earr
[
'itms'
]
=
$vrs
;
$earr
[
'itmsk'
]
=
$vrsk
;
$earr
[
'class'
]
=
$vrck
;
// 执行各项参数合法性检查
$flag
=
check_post_queue_vmix
(
$earr
,
$gmflag
);
if
(
$flag
)
{
//返回占线信息
$vlog
=
$flag
;
}
else
{
if
(
$gmflag
)
vn_adminlog
(
'编辑了配方'
,
$edit_result
);
$vlog
.=
'<span class="yellow">成功编辑了配方!</span><br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=1'
;
}
}
error_edit2
:
$vdata
[
'innerHTML'
][
'vmixprint'
]
=
$vlog
;
ob_clean
();
$jgamedata
=
compatible_json_encode
(
$vdata
);
echo
$jgamedata
;
ob_end_flush
();
}
//提交删除
elseif
(
isset
(
$exmode
)
&&
strpos
(
$exmode
,
'dp'
)
===
0
)
{
$edit_id
=
substr
(
$exmode
,
2
);
if
(
!
isset
(
$edit_id
))
{
$edit_id
=
NULL
;
$vlog
=
"<span class='red'>错误:关键参数缺失,无法删除配方。</span><br>"
;
goto
error_del
;
}
$flag
=
0
;
//先检查要删除的配方合法性
$flag
=
check_keys_in_vn_cache_file
(
$edit_id
,
$udata
[
'username'
]);
if
(
$flag
&&
!
is_array
(
$flag
))
{
$vmixlog
=
$flag
;
goto
error_del
;
}
else
{
$edit_name
=
$flag
[
'name'
];
$edit_result
=
$flag
[
'result'
][
0
];
unset
(
$flag
);
if
(
$edit_name
!==
$udata
[
'username'
])
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
users WHERE username='
$edit_name
'"
);
if
(
!
$db
->
num_rows
(
$result
))
$vlog
=
$flag
;
goto
error_flag
;
}
// 通过检查,更新对应配方
$db
->
array_update
(
"
{
$tablepre
}
vnmixitem"
,
$earr
,
"iid = '
$edit_id
'"
);
// 保存对应log
if
(
$gmflag
)
vn_adminlog
(
'编辑了配方'
,
$edit_result
);
$vlog
.=
'<span class="yellow">成功编辑了配方!</span><br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=1'
;
goto
error_flag
;
}
# 提交删除
elseif
(
$exmode
==
'dp'
)
{
$db
->
query
(
"DELETE FROM
{
$tablepre
}
vnmixitem WHERE iid = '
$edit_id
'"
);
if
(
$gmflag
)
vn_adminlog
(
'删除了配方'
,
$edit_result
);
$vlog
=
'删除了配方。<br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=2'
;
goto
error_flag
;
}
# 提交审核
elseif
(
$exmode
==
'cs'
)
{
# 通过审核、保存配方至本地文件
if
(
$edit_st
==
1
)
{
# 提交前再进行一遍合法性校验
$flag
=
check_post_queue_vmix
(
$earr
,
$gmflag
);
if
(
$flag
)
{
$vlog
=
"<span class='red'>错误:输入了错误的配方作者
{
$edit_name
}
。'</span><br>"
;
goto
error_
edit2
;
$vlog
=
$flag
;
goto
error_
flag
;
}
$odata
=
$db
->
fetch_array
(
$result
);
$
flag
=
post_in_vn_cache_file
(
$odata
,
'del'
,
$edit_id
);
unset
(
$odata
)
;
writeover_vn_mixilst
(
$earr
);
$
db
->
query
(
"DELETE FROM
{
$tablepre
}
vnmixitem WHERE iid = '
$edit_id
'"
);
$vdata
[
'url'
]
=
'vnworld.php?vtips=3&vcs='
.
$edit_st
.
''
;
}
# 审核不通过
else
{
$flag
=
post_in_vn_cache_file
(
$udata
,
'del'
,
$edit_id
);
}
if
(
$flag
)
{
$vlog
=
$flag
;
}
else
{
if
(
$gmflag
)
vn_adminlog
(
'删除了配方'
,
$edit_result
);
$vlog
=
'删除了配方。<br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=2'
;
$db
->
query
(
"UPDATE
{
$tablepre
}
vnmixitem SET istatus = '
$edit_st
' WHERE iid = '
$edit_id
'"
);
$vdata
[
'url'
]
=
'vnworld.php?vtips=4&vcs='
.
$edit_st
.
''
;
}
if
(
$gmflag
)
vn_adminlog
(
'改变了以下配方状态'
,
$edit_result
,
$edit_st
);
$vlog
=
'成功变更了配方状态。<br>'
;
goto
error_flag
;
}
error_del
:
$vdata
[
'innerHTML'
][
'vmixprint'
]
=
$vlog
;
ob_clean
();
$jgamedata
=
compatible_json_encode
(
$vdata
);
echo
$jgamedata
;
ob_end_flush
();
}
//提交审核
elseif
(
isset
(
$exmode
)
&&
strpos
(
$exmode
,
'cs'
)
===
0
)
{
$edit
=
explode
(
'+'
,
substr
(
$exmode
,
2
));
$edit_id
=
$edit
[
0
];
$change_status
=
$edit
[
1
];
if
(
!
isset
(
$edit_id
)
||
!
isset
(
$change_status
))
{
$edit
=
$edit_id
=
$change_status
=
NULL
;
$vlog
=
"<span class='red'>错误:关键参数缺失,无法改变配方的审核状态。</span><br>"
;
goto
error_s
;
}
if
(
!
$gmflag
)
{
$edit
=
$edit_id
=
$change_status
=
NULL
;
$vlog
=
"<span class='red'>错误:你没有权限审核配方。'</span><br>"
;
goto
error_s
;
}
$flag
=
0
;
//先检查要改变状态的配方合法性
$flag
=
check_keys_in_vn_cache_file
(
$edit_id
,
$udata
[
'username'
]);
if
(
$flag
&&
!
is_array
(
$flag
))
{
$vmixlog
=
$flag
;
goto
error_s
;
}
else
{
$edit_name
=
$flag
[
'name'
];
$edit_result
=
$flag
[
'result'
][
0
];
unset
(
$flag
);
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
users WHERE username='
$edit_name
'"
);
if
(
!
$db
->
num_rows
(
$result
))
{
$vlog
=
"<span class='red'>错误:输入了错误的配方作者。'</span><br>"
;
goto
error_s
;
}
$odata
=
$db
->
fetch_array
(
$result
);
$flag
=
post_in_vn_cache_file
(
$odata
,
'chs'
.
$change_status
,
$edit_id
);
unset
(
$odata
);
if
(
$flag
)
{
$vlog
=
$flag
;
}
else
{
if
(
$gmflag
)
vn_adminlog
(
'改变了以下配方状态'
,
$edit_result
,
$change_status
);
$vlog
=
'成功变更了配方状态。<br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=3&vcs='
.
$change_status
.
''
;
}
}
error_s
:
$vdata
[
'innerHTML'
][
'vmixprint'
]
=
$vlog
;
ob_clean
();
$jgamedata
=
compatible_json_encode
(
$vdata
);
echo
$jgamedata
;
ob_end_flush
();
}
elseif
(
$vnmode
==
'编辑'
)
//哇靠!从总览界面传回来的编辑申请。感觉怪怪的
{
if
(
!
isset
(
$editid
)
||
(
!
isset
(
$editor
)
&&!
$gmflag
))
{
$editid
=
$editor
=
NULL
;
$vmixlog
=
"<span class='red'>错误:输入了错误的参数,无法进入编辑模式。</span><br>"
;
goto
error_edit1
;
}
if
(
$editor
!==
$udata
[
'username'
]
&&
!
$gmflag
)
{
$editid
=
$editor
=
NULL
;
$vmixlog
=
"<span class='red'>错误:你没有权限编辑别人提交的配方。</span><br>"
;
goto
error_edit1
;
}
$flag
=
check_keys_in_vn_cache_file
(
$editid
,
$editor
);
if
(
$flag
&&
!
is_array
(
$flag
))
{
$vmixlog
=
$flag
;
}
else
{
//向界面传递要编辑的内容
$edit_arr
=
$flag
;
for
(
$i
=
0
;
$i
<=
4
;
$i
++
)
{
if
(
isset
(
$edit_arr
[
'stuff'
][
$i
]))
$
{
'uvs'
.
$i
}
=
$edit_arr
[
'stuff'
][
$i
];
if
(
isset
(
$edit_arr
[
'result'
][
4
][
$i
]))
$
{
'uvrsk'
.
$i
}
=
$edit_arr
[
'result'
][
4
][
$i
];
}
$uvrn
=
$edit_arr
[
'result'
][
0
];
$uvrk
=
$edit_arr
[
'result'
][
1
];
$uvre
=
$edit_arr
[
'result'
][
2
];
$uvrs
=
$edit_arr
[
'result'
][
3
]
==
'∞'
?
0
:
$edit_arr
[
'result'
][
3
];
$uvrck
=
isset
(
$edit_arr
[
'class'
])
?
$edit_arr
[
'class'
]
:
'item'
;
}
error_edit1
:
include
template
(
'vn_postitem'
);
}
//提交保存
# 新建配方
elseif
(
$vnmode
==
'postmode'
)
{
$
flag
=
false
;
$c2
=
$udata
[
'credits2'
];
$cid
=
$udata
[
'uid'
];
$vrlist
=
Array
();
$
c2
=
$udata
[
'credits2'
];
$earr
=
Array
();
//检查钱够不够
if
(
$c2
<
$vnmix_c2_cost
)
{
$vlog
=
'<span class="red">错误:切糕不足。提交一次合成需要消耗:'
.
$vnmix_c2_cost
.
'。</span><br>'
;
goto
error
lo
g
;
goto
error
_fla
g
;
}
//检查参数合法性并打包
$flag
=
filter_post_mixlist
(
$vsname0
,
$vsname1
,
$vsname2
,
$vsname3
,
$vsname4
,
$vrname
,
$vrk
,
$vre
,
$vrs
,
$vrsk0
,
$vrsk1
,
$vrsk2
,
$vrsk3
,
$vrsk4
,
$vrck
);
if
(
$flag
&&
!
is_array
(
$flag
)
||
((
!
isset
(
$flag
[
'result'
]))
||
!
isset
(
$flag
[
'stuff'
])))
{
//参数非法,返回log
$vlog
=
$flag
;
errorlog
:
}
else
// 打包
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
$earr
[
'stf'
.
$i
]
=
$
{
'vsname'
.
$i
};
$earr
[
'itm'
]
=
$vrname
;
$earr
[
'itmk'
]
=
$vrk
;
$earr
[
'itme'
]
=
$vre
;
$earr
[
'itms'
]
=
$vrs
;
$earr
[
'itmsk'
]
=
$vrsk
;
$earr
[
'class'
]
=
$vrck
;
// 执行各项参数合法性检查
$flag
=
check_post_queue_vmix
(
$earr
,
$gmflag
);
if
(
$flag
)
{
//参数合法,将配方导入缓存文件
$flag
=
post_in_vn_cache_file
(
$udata
,
$flag
);
if
(
$flag
)
{
//文件有锁,返回一个占线提示
$vlog
=
$flag
;
}
else
{
//成功提交,结算切糕
$c2
-=
$vnmix_c2_cost
;
$db
->
query
(
"UPDATE
{
$tablepre
}
users SET credits2='
$c2
' WHERE uid='
$cid
'"
);
$vlog
.=
'<span class="yellow">成功保存了配方!当前切糕数:'
.
$c2
.
'</span><br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=0'
;
}
}
$vlog
=
$flag
;
goto
error_flag
;
}
// 参数合法,补全剩余参数
$earr
[
'creator'
]
=
$udata
[
'username'
];
$earr
[
'istatus'
]
=
0
;
// 保存至数据库
$db
->
array_insert
(
"
{
$tablepre
}
vnmixitem"
,
$earr
);
// 结算切糕
$c2
-=
$vnmix_c2_cost
;
$db
->
query
(
"UPDATE
{
$tablepre
}
users SET credits2='
$c2
' WHERE uid='
$cid
'"
);
$vlog
.=
'<span class="yellow">成功保存了配方!当前切糕数:'
.
$c2
.
'</span><br>'
;
$vdata
[
'url'
]
=
'vnworld.php?vtips=0'
;
goto
error_flag
;
}
# ajax
elseif
(
!
empty
(
$vdata
))
{
error_flag
:
$vdata
[
'innerHTML'
][
'vmixprint'
]
=
$vlog
;
ob_clean
();
$jgamedata
=
compatible_json_encode
(
$vdata
);
echo
$jgamedata
;
ob_end_flush
();
}
//显示主界
面
else
if
(
$vnmode
==
'none'
)
# 主页
面
else
{
include
template
(
'vn_postitem'
);
}
/*** 模块函数部分 ***/
//调用2个函数将提交的合成数据保存进本地文件。
function
post_in_vn_cache_file
(
$data
,
$arr
,
$t
=
NULL
)
{
$carr
=
load_vn_cache_file
();
if
(
$carr
<
0
)
{
return
'<span class="red">有其他人正在提交合成,请等一会儿再试!</span><br>'
;
}
//根据uid输入提交的内容
if
(
$arr
===
'del'
)
{
if
(
isset
(
$carr
[
$t
]))
{
unset
(
$carr
[
$t
]);
}
else
{
unlock_vn_cache_file
();
return
'<span class="red">错误:要删除的配方不存在!</span><br>'
;
}
}
elseif
(
strpos
(
$arr
,
'chs'
)
===
0
)
{
$arr
=
substr
(
$arr
,
3
);
if
(
isset
(
$carr
[
$t
]))
{
$carr
[
$t
][
'status'
]
=
$arr
;
if
(
$arr
==
1
)
{
writeover_vn_mixilst
(
$carr
[
$t
]);
unset
(
$carr
[
$t
]);
}
}
else
{
unlock_vn_cache_file
();
return
'<span class="red">错误:要审核的配方不存在!'
.
$t
.
count
(
$carr
[
$data
[
'uid'
]][
$t
])
.
'</span><br>'
;
}
}
else
{
if
(
isset
(
$t
))
{
$arr
[
'name'
]
=
$carr
[
$t
][
'name'
];
$arr
[
'status'
]
=
$carr
[
$t
][
'status'
];
$carr
[
$t
]
=
$arr
;
}
else
{
$arr
[
'name'
]
=
$data
[
'username'
];
$carr
[]
=
$arr
;
}
}
sort
(
$carr
);
writeover_vn_cache_file
(
$carr
);
return
0
;
}
//检查某条配方是否存在于某人的提交中
function
check_keys_in_vn_cache_file
(
$num
,
$name
)
{
global
$gamecfg
,
$gmflag
;
$cache_file
=
config
(
'queue_vnmixitem'
,
$gamecfg
);
if
(
!
file_exists
(
$cache_file
))
{
return
'<span class="red">严重错误:缓存文件不存在,请联系管理员!<br>'
;
}
include_once
(
$cache_file
);
if
(
!
isset
(
$carr
[
$num
]))
{
return
'<span class="red">错误:该配方不存在!<br>'
;
}
if
(
!
$gmflag
&&
$carr
[
$num
][
'name'
]
!==
$name
)
{
return
'<span class="red">错误:你没有权限编辑别人的配方!<br>'
;
}
return
$carr
[
$num
];
}
//打开本地缓存文件
function
load_vn_cache_file
()
{
global
$gamecfg
;
//加锁,文件被打开时其他玩家不能提交合成,防止冲突……但是不一定有用就是了。
$lock_file
=
GAME_ROOT
.
'./gamedata/bak/vnmix.lock'
;
if
(
file_exists
(
$lock_file
))
{
//锁还在,返回一个报错信息
return
-
1
;
}
else
{
//加锁
writeover
(
$lock_file
,
' '
);
//返回获取到的本地缓存数组
$cache_file
=
config
(
'queue_vnmixitem'
,
$gamecfg
);
if
(
!
file_exists
(
$cache_file
))
writeover_vn_cache_file
();
require
(
$cache_file
);
return
$carr
;
}
}
//写入本地缓存文件
function
writeover_vn_cache_file
(
$carr
=
Array
())
{
global
$checkstr
,
$gamecfg
;
$cache_file
=
config
(
'queue_vnmixitem'
,
$gamecfg
);
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$carr = '
.
var_export
(
$carr
,
1
)
.
";
\r\n
?>"
;
//writeover($cache_file, $cont);
//chmod($cache_file,0777);
file_put_contents
(
$cache_file
,
$cont
,
LOCK_EX
);
unlock_vn_cache_file
();
return
;
}
//写入配方文件
function
writeover_vn_mixilst
(
$varr
=
Array
())
{
global
$checkstr
,
$gamecfg
;
$cache_file
=
config
(
'vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
{
include_once
(
$cache_file
);
}
else
{
$vn_mixinfo
=
Array
();
}
$narr
=
Array
();
$narr
[
'class'
]
=
isset
(
$varr
[
'class'
])
?
$varr
[
'class'
]
:
'item'
;
foreach
(
$varr
as
$key
=>
$arr
)
{
if
(
$key
==
'stuff'
)
{
foreach
(
$arr
as
$s_key
=>
$s_name
)
{
$narr
[
'stuff'
][]
=
$s_name
;
}
}
elseif
(
$key
==
'result'
)
{
foreach
(
$arr
as
$r_key
=>
$r_value
)
{
if
(
$r_key
==
4
)
{
foreach
(
$r_value
as
$sk_value
)
if
(
isset
(
$sk_value
))
$narr
[
'result'
][
4
]
.=
$sk_value
;
}
else
{
$narr
[
'result'
][
$r_key
]
=
$r_value
;
}
}
}
}
$narr
[
'name'
]
=
$varr
[
'name'
];
$vn_mixinfo
[]
=
$narr
;
sort
(
$vn_mixinfo
);
global
$checkstr
;
$cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$cont
.=
'$vn_mixinfo = '
.
var_export
(
$vn_mixinfo
,
1
)
.
";
\r\n
?>"
;
file_put_contents
(
$cache_file
,
$cont
,
LOCK_EX
);
//writeover($cache_file, $cont);
//chmod($cache_file,0777);
//unlock_vn_cache_file();
return
;
}
function
unlock_vn_cache_file
()
{
//完成流程后解锁文件
$lock_file
=
GAME_ROOT
.
'./gamedata/bak/vnmix.lock'
;
unlink
(
$lock_file
);
}
//检查输入的素材合法性。非法返回log,合法返回一个打包好的数组。
function
filter_post_mixlist
(
$vsname0
,
$vsname1
,
$vsname2
,
$vsname3
,
$vsname4
,
$vrname
,
$vrk
,
$vre
,
$vrs
,
$vrsk0
,
$vrsk1
,
$vrsk2
,
$vrsk3
,
$vrsk4
,
$vrck
)
{
global
$gmflag
,
$temp_vn_iteminfo
,
$temp_vn_itemspkinfo
,
$result_tips
,
$vrclassinfo
;
$vlog
=
''
;
$slist
=
Array
();
$sklist
=
Array
();
//检查道具用途
if
(
!
isset
(
$vrk
)
||
!
isset
(
$temp_vn_iteminfo
[
$vrk
]))
{
$vlog
=
'<span class="red">错误:输入了无效的'
.
$result_tips
[
1
]
.
'。</span><br>'
;
return
$vlog
;
}
if
(
!
isset
(
$vrck
)
||
!
isset
(
$vrclassinfo
[
$vrck
]))
{
$vlog
=
'<span class="red">错误:输入了无效的'
.
$result_tips
[
9
]
.
'。</span><br>'
;
return
$vlog
;
}
//检查道具效果、耐久
if
(
$vre
<
1
||
$vre
>
16777214
)
{
$vlog
=
'<span class="red">错误:输入了无效的'
.
$result_tips
[
2
]
.
'('
.
$result_tips
[
2
]
.
'范围:1~16777214)。</span><br>'
;
return
$vlog
;
}
if
(
$vrs
<
0
||
$vrs
>
65535
)
{
$vlog
=
'<span class="red">错误:输入了无效的'
.
$result_tips
[
3
]
.
'('
.
$result_tips
[
3
]
.
'范围:0~65535)。</span><br>'
;
return
$vlog
;
}
//检查道具名
$vrname
=
preg_replace
(
'/[,\#;\p{Cc}]+|锋利的|电气|毒性|[\r\n]|-改|<|>|\"/u'
,
''
,
$vrname
);
$vrname
=
preg_replace
(
'/^\s+|\s+$/m'
,
''
,
$vrname
);
if
(
empty
(
$vrname
)
||
mb_strlen
(
$vrname
,
'utf-8'
)
>
30
)
{
$vlog
.=
'<span class="red">错误:'
.
$result_tips
[
0
]
.
'的名称为空或长度超过了30个字符。</span><br>'
;
return
$vlog
;
}
//检查合成素材、属性
for
(
$s
=
0
;
$s
<=
4
;
$s
++
)
{
//检查属性合法性
if
(
!
isset
(
$temp_vn_itemspkinfo
[
$
{
'vrsk'
.
$s
}]))
{
$vlog
=
'<span class="red">错误:输入了无效的'
.
$result_tips
[(
$s
+
4
)]
.
'。</span><br>'
;
return
$vlog
;
}
else
{
if
(
$
{
'vrsk'
.
$s
}
!=
'none'
&&
!
in_array
(
$
{
'vrsk'
.
$s
},
$sklist
))
$sklist
[]
=
$
{
'vrsk'
.
$s
};
}
//检查素材名
$
{
'vsname'
.
$s
}
=
preg_replace
(
'/[,\#;\p{Cc}]+|锋利的|电气|毒性|[\r\n]|-改|<|>|\"/u'
,
''
,
$
{
'vsname'
.
$s
});
//只过滤以首格空格开头或以尾部空格结尾的部分,不改变后面内容里的空格
$
{
'vsname'
.
$s
}
=
preg_replace
(
'/^\s+|\s+$/m'
,
''
,
$
{
'vsname'
.
$s
});
if
(
empty
(
$
{
'vsname'
.
$s
})
||
mb_strlen
(
$
{
'vsname'
.
$s
},
'utf-8'
)
>
30
)
{
//$vlog .= '<span class="red">错误:'.$stuff_tips[$s].'的名称为空或长度超过了30个字符。</span><br>';
}
else
{
if
(
count
(
$slist
)
<
5
)
$slist
[]
=
$
{
'vsname'
.
$s
};
}
}
if
(
count
(
$slist
)
<
2
)
{
$vlog
.=
'<span class="red">错误:至少要添加2种符合条件的合成素材。(素材名称不能为空,且长度不能超过30个字符)</span><br>'
;
return
$vlog
;
}
//通过合法性检测 导入新配方
$newarr
=
Array
();
//导入合成分类
$newarr
[
'class'
]
=
$vrck
;
//导入合成素材
foreach
(
$slist
as
$st
)
$newarr
[
'stuff'
][]
=
$st
;
//导入合成结果
$newarr
[
'result'
][
0
]
=
$vrname
;
$newarr
[
'result'
][
1
]
=
$vrk
;
$newarr
[
'result'
][
2
]
=
(
int
)
$vre
;
$newarr
[
'result'
][
3
]
=
(
int
)
$vrs
==
0
?
'∞'
:
(
int
)
$vrs
;
//导入合成属性
foreach
(
$sklist
as
$sk
)
$newarr
[
'result'
][
4
][]
=
$sk
;
//打上检疫标签
$newarr
[
'status'
]
=
0
;
return
$newarr
;
}
function
vn_adminlog
(
$op
,
$an1
=
''
,
$an2
=
''
,
$an3
=
''
){
global
$now
,
$cuser
;
$alfile
=
GAME_ROOT
.
'./gamedata/adminlog.php'
;
if
(
$op
){
$aldata
=
"
$now
,
$cuser
,
$op
,
$an1
,
$an2
,
$an3
,
\n
"
;
writeover
(
$alfile
,
$aldata
,
'ab+'
);
}
return
;
}
?>
vndbup.php
0 → 100644
View file @
651a5455
<?php
define
(
'CURSCRIPT'
,
'dbup'
);
require
'./include/common.inc.php'
;
if
(
!
$cuser
||!
$cpass
)
{
gexit
(
$_ERROR
[
'no_login'
],
__file__
,
__line__
);
}
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
users WHERE username='
$cuser
'"
);
if
(
!
$db
->
num_rows
(
$result
))
{
gexit
(
$_ERROR
[
'login_check'
],
__file__
,
__line__
);
}
$udata
=
$db
->
fetch_array
(
$result
);
if
(
$udata
[
'password'
]
!=
$cpass
)
{
gexit
(
$_ERROR
[
'wrong_pw'
],
__file__
,
__line__
);
}
elseif
((
$udata
[
'groupid'
]
<=
1
)
&&
(
$cuser
!==
$gamefounder
))
{
gexit
(
$_ERROR
[
'no_admin'
],
__file__
,
__line__
);
}
$query
=
$db
->
query
(
"SHOW TABLES LIKE '
{
$tablepre
}
vnmixitem'"
,
'SILENT'
);
//print_r($query);
if
(
!
$db
->
num_rows
(
$query
))
{
$sqldir
=
GAME_ROOT
.
'./gamedata/sql/'
;
$sql
=
file_get_contents
(
"
{
$sqldir
}
vnworld.sql"
);
$sql
=
str_replace
(
"
\r
"
,
"
\n
"
,
str_replace
(
'bra_'
,
' '
.
$tablepre
,
$sql
));
$db
->
queries
(
$sql
);
echo
"Mysql Update Fish.<br>"
;
}
else
{
echo
"No Update.<br>"
;
}
$vcdir
=
config
(
'queue_vnmixitem'
,
1
);
if
(
file_exists
(
$vcdir
))
{
include
$vcdir
;
foreach
(
$carr
as
$key
=>
$arr
)
{
$vr
=
Array
();
$vr
[
'class'
]
=
$arr
[
'class'
]
?:
'item'
;
$vr
[
'istatus'
]
=
$arr
[
'status'
];
$vr
[
'creator'
]
=
$arr
[
'name'
];
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
$vr
[
'stf'
.
$i
]
=
$arr
[
'stuff'
][
$i
]
?:
''
;
}
$vr
[
'itm'
]
=
$arr
[
'result'
][
0
]
?:
''
;
$vr
[
'itmk'
]
=
$arr
[
'result'
][
1
]
?:
''
;
$vr
[
'itme'
]
=
$arr
[
'result'
][
2
]
?:
''
;
$vr
[
'itms'
]
=
$arr
[
'result'
][
3
]
?:
''
;
$vr
[
'itmsk'
]
=
$arr
[
'result'
][
4
]
?
implode
(
''
,
$arr
[
'result'
][
4
])
:
''
;
$db
->
array_insert
(
"
{
$tablepre
}
vnmixitem"
,
$vr
);
}
echo
"Old data clear.<br>"
;
}
?>
\ No newline at end of file
vnworld.php
View file @
651a5455
...
...
@@ -20,51 +20,21 @@ if($udata['groupid'] <= 0) { gexit($_ERROR['user_ban'], __file__, __line__); }
$vtips
=
isset
(
$_GET
[
'vtips'
])
?
$check_infos
[
$_GET
[
'vtips'
]]
:
''
;
if
(
!
isset
(
$vnmode
)){
$vnmode
=
'none'
;}
global
$gamefounder
;
global
$gamefounder
;
if
(
$vnmode
==
'none'
)
{
//读取提交过的历史记录。
$cache_file
=
config
(
'queue_vnmixitem'
,
$gamecfg
);
if
(
file_exists
(
$cache_file
))
include_once
GAME_ROOT
.
'./include/vnworld/vnmix.func.php'
;
$carr
=
get_queue_vnmix_list
();
if
(
!
empty
(
$carr
))
{
$temp_vniteminfo
=
$vn_iteminfo
+
$vn_gm_iteminfo
;
require
(
$cache_file
);
if
(
isset
(
$carr
))
foreach
(
$carr
as
$cid
=>
$cinfo
)
{
$
temp_carr
=
$carr
;
for
each
(
$temp_carr
as
$cid
=>
$cinfo
)
$
carr
[
$cid
]
=
parse_queue_vnmix_info
(
$cinfo
)
;
for
(
$i
=
0
;
$i
<
5
;
$i
++
)
{
// 格式化素材来源
foreach
(
$cinfo
[
'stuff'
]
as
$sid
=>
$snm
)
{
include_once
config
(
'npc'
,
$gamecfg
);
include_once
config
(
'addnpc'
,
$gamecfg
);
include_once
config
(
'evonpc'
,
$gamecfg
);
$tooltipinfo
=
get_item_place
(
$snm
);
if
(
!
empty
(
$tooltipinfo
))
{
$temp_carr
[
$cid
][
'stuff'
][
$sid
]
=
"<span tooltip=
\"
"
.
$tooltipinfo
.
"
\"
>"
.
$snm
.
"</span>"
;
}
$tooltipinfo
=
''
;
}
// 格式化名称
$cinfo
[
'result'
][
0
]
=
parse_info_desc
(
$cinfo
[
'result'
][
0
],
'm'
);
// 格式化类别
$cinfo
[
'result'
][
1
]
=
parse_info_desc
(
$cinfo
[
'result'
][
1
],
'k'
);
// 格式化属性
if
(
isset
(
$cinfo
[
'result'
][
4
])
&&
is_array
(
$cinfo
[
'result'
][
4
]))
{
$temp_carr
[
$cid
][
'spkinfo'
]
=
parse_info_desc
(
$cinfo
[
'result'
][
4
],
'sk'
,
$cinfo
[
'result'
][
1
]);
/*foreach($cinfo['result'][4] as $sk)
{
if(!empty($temp_carr[$cid]['spkinfo'])) $temp_carr[$cid]['spkinfo'] .= '+'.parse_itm_desc($sk,'sk');
else $temp_carr[$cid]['spkinfo'] = parse_info_desc($sk,'sk');
}*/
}
// 汇总合成结果至一段内
$temp_carr
[
$cid
][
'result'
][
0
]
=
$cinfo
[
'result'
][
0
]
.
'/'
.
$cinfo
[
'result'
][
1
]
.
'/'
.
$cinfo
[
'result'
][
2
]
.
'/'
.
$cinfo
[
'result'
][
3
];
if
(
isset
(
$temp_carr
[
$cid
][
'spkinfo'
]))
$temp_carr
[
$cid
][
'result'
][
0
]
.=
'/'
.
$temp_carr
[
$cid
][
'spkinfo'
];
if
(
empty
(
$carr
[
$cid
][
'stf'
.
$i
]))
$carr
[
$cid
][
'stf'
.
$i
]
=
"<span class='grey'>-</span>"
;
}
}
}
...
...
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