Commit aaa82d8f authored by hisuinohoshi's avatar hisuinohoshi

update vnmix

变化:
- 将自定义合成的待采纳部分转为数据库储存(记得运行一下vndbup.php);
- 优化了自定义合成的增编删减流程;
- 修改了提交自定义合成时添加道具属性的方式,并将可提交的属性扩容至最多30种;
- 修改了团队胜利时检测活跃玩家的方式;
parent 38f1a185
......@@ -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
......@@ -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'",
),
......
......@@ -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>',
);
?>
......@@ -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',
......
--
-- 表的结构 `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
......@@ -2,46 +2,39 @@
if(!defined('IN_ADMIN')) {
exit('Access Denied');
}
require config('vnworld',$gamecfg);
//require './include/game/itemplace.func.php';
include 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;
}
?>
......@@ -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;
......
......@@ -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;
......
......@@ -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
......
......@@ -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='')
{
......
......@@ -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()
{
......
......@@ -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);
......
<?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;
}
?>
......@@ -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}-->
......
......@@ -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>
&nbsp;
变更选择为:
<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>
......
<!-- 注意:大部分技能可以直接通过编辑配置文件完成 -->
<!-- 可能的、需要新建模板的情况:你的技能需要在面板内执行比较复杂的、单靠配置文件无法实现的操作 -->
<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;">&nbsp;</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
......@@ -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'}-->
......
......@@ -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'}-->
......
......@@ -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>
......
<!-- 注意:大部分技能可以直接通过编辑配置文件完成 -->
<!-- 可能的、需要新建模板的情况:你的技能需要在面板内执行比较复杂的、单靠配置文件无法实现的操作 -->
<!--{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
......@@ -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' => '头像',
......
......@@ -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>
&nbsp;<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}-->
&nbsp;<input type="radio" id="ep" name="exmode" value="$ep" checked><a onclick="$('ep').click();" href="javascript:void(0);">编辑</a>
&nbsp;<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
......@@ -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['istatus']!=1}-->
<form method="post" action="vn_postitem.php" name="vn_postitem" onsubmit="vn_postitem.php" style="margin: 0px">
<input type="hidden" name="editor" value="$cinfo['name']">
<input type="hidden" name="editor" value="$cuser">
<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>
......
......@@ -3,8 +3,8 @@
define('CURSCRIPT', 'vn_postitem');
require './include/common.inc.php';
require config('vnworld',$gamecfg);
include 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 errorlog;
goto error_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'])))
{ //参数非法,返回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();
}
//显示主界
elseif($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;
}
?>
<?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
......@@ -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;
foreach($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>";
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment