Commit ec76bd36 authored by hisuinohoshi's avatar hisuinohoshi

tooltip?

change{help.php;game.func.php:init_playerdata();battle.func.php:findcorpse();resource_1.php;npc_1.php}
bugfix:{element.func.php;elementmix_1.php}
一个可以但可能也不太可以的尝试。
在游戏主页面、发现尸体页面、游戏帮助页面加入了过滤条件以显示悬浮提示。把针对道具的悬浮提示与样式收进了对应的独立数组内。
但是也不怎么优雅。
而且现在打开帮助文件可能会很卡。……好像也没有很卡。
parent ef2bdbfc
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
$split_itmk_r = Array $split_itmk_r = Array
( (
//陷阱 //陷阱
'TN' => 0.3, 'T' => 0.3,
//(*拆解复合武器 x1.5) //(*拆解复合武器 x1.5)
'WGK' => 1.5, 'WGK' => 1.5,
'WCF' => 1.5, 'WCF' => 1.5,
......
...@@ -2599,7 +2599,7 @@ $npcinfo = array ...@@ -2599,7 +2599,7 @@ $npcinfo = array
'itme5' => 300, 'itme5' => 300,
'itms5' => 500, 'itms5' => 500,
'itmsk5' => 'v', 'itmsk5' => 'v',
'itm6' => '<span class="spitem" title="这个武器在主动攻击对手时,将可以复制对手的武器。注意:对手武器数值太高时会失败,后果自负!">临摹装置</span>', 'itm6' => '临摹装置',
'itmk6' => 'WC', 'itmk6' => 'WC',
'itme6' => 300, 'itme6' => 300,
'itms6' => 500, 'itms6' => 500,
...@@ -2790,7 +2790,7 @@ $npcinfo = array ...@@ -2790,7 +2790,7 @@ $npcinfo = array
'itme4' => 999, 'itme4' => 999,
'itms4' => '∞', 'itms4' => '∞',
'itmsk4' => 'Z', 'itmsk4' => 'Z',
'itm6' => '<span class="spitem" title="这个武器一定会对敌人造成350点伤害,但对防御非常高的敌人除外。">魔法蜂针</span>', 'itm6' => '魔法蜂针',
'itmk6' => 'WGK', 'itmk6' => 'WGK',
'itme6' => 350, 'itme6' => 350,
'itms6' => 350, 'itms6' => 350,
......
This diff is collapsed.
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
define('CURSCRIPT', 'help'); define('CURSCRIPT', 'help');
require './include/common.inc.php'; require './include/common.inc.php';
require './include/game.func.php';
$mixfile = config('mixitem',$gamecfg); $mixfile = config('mixitem',$gamecfg);
$shopfile = config('shopitem',$gamecfg); $shopfile = config('shopitem',$gamecfg);
...@@ -17,6 +18,88 @@ $writefile = GAME_ROOT.TPLDIR.'/mixhelp.htm'; ...@@ -17,6 +18,88 @@ $writefile = GAME_ROOT.TPLDIR.'/mixhelp.htm';
include_once config('npc',$gamecfg); include_once config('npc',$gamecfg);
for ($i=0; $i<=20; $i++) $p[$i]=$i; for ($i=0; $i<=20; $i++) $p[$i]=$i;
for ($i=1; $i<=6; $i++) $itemlst[$i]=$i; for ($i=1; $i<=6; $i++) $itemlst[$i]=$i;
foreach ($npcinfo as $i => $npcs)
{
if(!empty($npcs))
{
foreach (Array('arb','arh','ara','arf','art','itm0','itm1','itm2','itm3','itm4','itm5','itm6') as $value)
{
if($npcinfo[$i][$value]) $npcinfo[$i][$value] = parse_itm_desc($npcinfo[$i][$value]);
}
foreach (Array('arbk','arhk','arak','arfk','artk','itmk0','itmk1','itmk2','itmk3','itmk4','itmk5','itmk6') as $value)
{
if($npcinfo[$i][$value])
{
foreach($iteminfo as $info_key => $info_value)
{
if(strpos($npcinfo[$i][$value],$info_key)===0){
$npcinfo[$i][$value] = parse_itm_desc($info_key,'k');;
break;
}
}
}
}
foreach(Array('arbsk','arhsk','arask','arfsk','artsk','itmsk0','itmsk1','itmsk2','itmsk3','itmsk4','itmsk5','itmsk6') as $value)
{
if($npcinfo[$i][$value])
{
$npcinfo[$i][$value][$value.'_words'] = '';
$tmpsk = get_itmsk_array($npcinfo[$i][$value]);
foreach($tmpsk as $sk)
{
if(!empty($npcinfo[$i][$value][$value.'_words']))
{
$npcinfo[$i][$value.'_words'] .= "+".parse_itm_desc($sk,'sk');
}
else
{
$npcinfo[$i][$value.'_words'] = parse_itm_desc($sk,'sk');
}
}
}
}
foreach($npcs['sub'] as $n => $npc)
{
foreach(Array('wep','arb','arh','ara','arf','art','itm0','itm1','itm2','itm3','itm4','itm5','itm6') as $value)
{
if($npcinfo[$i]['sub'][$n][$value]) $npcinfo[$i]['sub'][$n][$value] = parse_itm_desc($npcinfo[$i]['sub'][$n][$value]);
}
foreach(Array('wepk','arbk','arhk','arak','arfk','artk','itmk0','itmk1','itmk2','itmk3','itmk4','itmk5','itmk6') as $value)
{
if($npcinfo[$i]['sub'][$n][$value])
{
foreach($iteminfo as $info_key => $info_value)
{
if(strpos($npcinfo[$i]['sub'][$n][$value],$info_key)===0){
$npcinfo[$i]['sub'][$n][$value] = parse_itm_desc($info_key,'k');;
break;
}
}
}
}
foreach(Array('wepsk','arbsk','arhsk','arask','arfsk','artsk','itmsk0','itmsk1','itmsk2','itmsk3','itmsk4','itmsk5','itmsk6') as $value)
{
if($npcinfo[$i]['sub'][$n][$value])
{
$npcinfo[$i]['sub'][$n][$value.'_words'] = '';
$tmpsk = get_itmsk_array($npcinfo[$i]['sub'][$n][$value]);
foreach($tmpsk as $sk)
{
if(!empty($npcinfo[$i]['sub'][$n][$value.'_words']))
{
$npcinfo[$i]['sub'][$n][$value.'_words'] .= "+".parse_itm_desc($sk,'sk');
}
else
{
$npcinfo[$i]['sub'][$n][$value.'_words'] = parse_itm_desc($sk,'sk');
}
}
}
}
}
}
}
// $ty1[1]=6; $ty1[2]=5; $ty1[3]=1; $ty1[4]=9; $ty1[5]=88; // $ty1[1]=6; $ty1[2]=5; $ty1[3]=1; $ty1[4]=9; $ty1[5]=88;
// $ty2[1]=11; // $ty2[1]=11;
// $ty3[1]=2; $ty3[2]=90; // $ty3[1]=2; $ty3[2]=90;
...@@ -42,21 +125,31 @@ if(filemtime($mixfile) > filemtime($writefile) || filemtime($shopfile) > filemti ...@@ -42,21 +125,31 @@ if(filemtime($mixfile) > filemtime($writefile) || filemtime($shopfile) > filemti
$mixitem = array(); $mixitem = array();
foreach($mixinfo as $mix){ foreach($mixinfo as $mix){
if($mix['class'] !== 'hidden'){ if($mix['class'] !== 'hidden'){
//名字
$mix['result'][0] = parse_itm_desc($mix['result'][0]);
//类别
foreach($iteminfo as $info_key => $info_value){ foreach($iteminfo as $info_key => $info_value){
if(strpos($mix['result'][1],$info_key)===0){ if(strpos($mix['result'][1],$info_key)===0){
$mixitmk = $info_value; $mixitmk = parse_itm_desc($info_key,'k');
break; break;
} }
} }
//属性
$mixitmsk = ''; $mixitmsk = '';
if(!empty($mix['result'][4]) && !is_numeric($mix['result'][4])){ if(!empty($mix['result'][4]) && !is_numeric($mix['result'][4])){
for ($j = 0; $j < strlen($mix['result'][4]); $j++) { /*for ($j = 0; $j < strlen($mix['result'][4]); $j++) {
$sub = substr($mix['result'][4],$j,1); $sub = substr($mix['result'][4],$j,1);
if(!empty($sub)){ if(!empty($sub)){
$mixitmsk .= $itemspkinfo[$sub].'+'; $mixitmsk .= $itemspkinfo[$sub].'+';
} }
} }
if(!empty($mixitmsk)){$mixitmsk = substr($mixitmsk,0,-1);} if(!empty($mixitmsk)){$mixitmsk = substr($mixitmsk,0,-1);}*/
$mix_sk = get_itmsk_array($mix['result'][4]); $mixitmsk = '';
foreach($mix_sk as $sk_value)
{
if(!empty($mixitmsk)) $mixitmsk .= '+'.parse_itm_desc($sk_value,'sk');
else $mixitmsk = parse_itm_desc($sk_value,'sk');
}
} }
$mixitem[$mix['class']][] = array('stuff' => $mix['stuff'], 'result' => array($mix['result'][0],$mixitmk,$mix['result'][2],$mix['result'][3],$mixitmsk)); $mixitem[$mix['class']][] = array('stuff' => $mix['stuff'], 'result' => array($mix['result'][0],$mixitmk,$mix['result'][2],$mix['result'][3],$mixitmsk));
} }
......
...@@ -4,7 +4,65 @@ if(!defined('IN_GAME')) { ...@@ -4,7 +4,65 @@ if(!defined('IN_GAME')) {
exit('Access Denied'); exit('Access Denied');
} }
//将sk转为数组格式 只会转换登记过的属性
function get_itmsk_array($sk_value)
{
global $itemspkinfo;
$ret = Array();
$i = 0;
while ($i < strlen($sk_value))
{
$sub = substr($sk_value,$i,1);
$i++;
if(!empty($sub) && array_key_exists($sub,$itemspkinfo)) array_push($ret,$sub);
}
return $ret;
}
//还原itmsk为字符串 $max_length:字符串长度上限
function get_itmsk_strlen($sk_value,$max_length=5)
{
global $itemspkinfo;
$ret = ''; $sk_count = 0;
foreach($sk_value as $sk)
{
if(array_key_exists($sk,$itemspkinfo))
{
$ret.=$sk;
$sk_count+=strlen($sk);
}
if($sk_count>=$max_length) break;
}
return $ret;
}
//为显示在主界面、尸体发现界面、游戏帮助界面的道具名、道具类、道具属性添加额外描述
function parse_itm_desc($n,$t='m')
{
global $iteminfo,$itemspkinfo;
global $iteminfo_tooltip,$itemkinfo_tooltip,$itemspkinfo_tooltip;
$s = "<span "; unset($p1); unset($p2);
switch($t)
{
//处理类别
case $t=='k':
if($itemkinfo_tooltip[$n]['title']) $p1 = "title=\"".$itemkinfo_tooltip[$n]['title']."\"";
if($itemkinfo_tooltip[$n]['class']) $p2 = "class=\"".$itemkinfo_tooltip[$n]['class']."\"";
$n = $iteminfo[$n];
break;
//处理属性
case $t=='sk':
if($itemspkinfo_tooltip[$n]['title']) $p1 = "title=\"".$itemspkinfo_tooltip[$n]['title']."\"";
if($itemspkinfo_tooltip[$n]['class']) $p2 = "class=\"".$itemspkinfo_tooltip[$n]['class']."\"";
$n = $itemspkinfo[$n];
break;
//处理名字
default:
if($iteminfo_tooltip[$n]['title']) $p1 = "title=\"".$iteminfo_tooltip[$n]['title']."\"";
if($iteminfo_tooltip[$n]['class']) $p2 = "class=\"".$iteminfo_tooltip[$n]['class']."\"";
}
$p3 = " >"; $e = "</span>";
$ret = $s.$p1.$p2.$p3.$n.$e;
return $ret;
}
function init_playerdata(){ function init_playerdata(){
global $lvl,$baseexp,$exp,$gd,$icon,$arbe,$arhe,$arae,$arfe,$weather,$fog,$weps,$arbs,$log,$upexp,$lvlupexp,$iconImg,$ardef; global $lvl,$baseexp,$exp,$gd,$icon,$arbe,$arhe,$arae,$arfe,$weather,$fog,$weps,$arbs,$log,$upexp,$lvlupexp,$iconImg,$ardef;
...@@ -35,39 +93,45 @@ function init_profile(){ ...@@ -35,39 +93,45 @@ function init_profile(){
global $itemspkinfo,$wepsk,$arbsk,$arhsk,$arask,$arfsk,$artsk,$itmsk0,$itmsk1,$itmsk2,$itmsk3,$itmsk4,$itmsk5,$itmsk6; global $itemspkinfo,$wepsk,$arbsk,$arhsk,$arask,$arfsk,$artsk,$itmsk0,$itmsk1,$itmsk2,$itmsk3,$itmsk4,$itmsk5,$itmsk6;
global $nospk,$wepsk_words,$arbsk_words,$arhsk_words,$arask_words,$arfsk_words,$artsk_words,$itmsk0_words,$itmsk1_words,$itmsk2_words,$itmsk3_words,$itmsk4_words,$itmsk5_words,$itmsk6_words; global $nospk,$wepsk_words,$arbsk_words,$arhsk_words,$arask_words,$arfsk_words,$artsk_words,$itmsk0_words,$itmsk1_words,$itmsk2_words,$itmsk3_words,$itmsk4_words,$itmsk5_words,$itmsk6_words;
global $wepk_words,$arbk_words,$arhk_words,$arak_words,$arfk_words,$artk_words,$itmk0_words,$itmk1_words,$itmk2_words,$itmk3_words,$itmk4_words,$itmk5_words,$itmk6_words; global $wepk_words,$arbk_words,$arhk_words,$arak_words,$arfk_words,$artk_words,$itmk0_words,$itmk1_words,$itmk2_words,$itmk3_words,$itmk4_words,$itmk5_words,$itmk6_words;
global $wep,$arb,$arh,$ara,$arf,$art,$itm0,$itm1,$itm2,$itm3,$itm4,$itm5,$itm6;
foreach (Array('wep','arb','arh','ara','arf','art','itm0','itm1','itm2','itm3','itm4','itm5','itm6') as $value)
{
${$value} = parse_itm_desc(${$value});
}
foreach (Array('wepk','arbk','arhk','arak','arfk','artk','itmk0','itmk1','itmk2','itmk3','itmk4','itmk5','itmk6') as $k_value) { foreach (Array('wepk','arbk','arhk','arak','arfk','artk','itmk0','itmk1','itmk2','itmk3','itmk4','itmk5','itmk6') as $k_value) {
if(${$k_value}){ if(${$k_value})
{
${$k_value.'_words'} = ''; ${$k_value.'_words'} = '';
foreach($iteminfo as $info_key => $info_value)
foreach($iteminfo as $info_key => $info_value){ {
if(strpos(${$k_value},$info_key)===0){ if(strpos(${$k_value},$info_key)===0){
${$k_value.'_words'} = $info_value; ${$k_value.'_words'} = parse_itm_desc($info_key,'k');
break; break;
} }
} }
} else { } else {
${$k_value.'_words'} = ''; ${$k_value.'_words'} = '';
} }
} }
foreach (Array('wepsk','arbsk','arhsk','arask','arfsk','artsk','itmsk0','itmsk1','itmsk2','itmsk3','itmsk4','itmsk5','itmsk6') as $sk_value) { foreach (Array('wepsk','arbsk','arhsk','arask','arfsk','artsk','itmsk0','itmsk1','itmsk2','itmsk3','itmsk4','itmsk5','itmsk6') as $sk_value) {
if(${$sk_value} && is_numeric(${$sk_value}) === false){ if(${$sk_value} && is_numeric(${$sk_value}) === false){
${$sk_value.'_words'} = ''; ${$sk_value.'_words'} = '';
for ($i = 0; $i < strlen($sk_value); $i++) { //取我数组斧来
$sub = substr(${$sk_value},$i,1); $tmpsk = get_itmsk_array(${$sk_value});
if(!empty($sub)){ foreach($tmpsk as $sk)
if(!empty(${$sk_value.'_words'})){ {
${$sk_value.'_words'} .= '+'.$itemspkinfo[$sub]; if(!empty(${$sk_value.'_words'}))
}else{ {
${$sk_value.'_words'} = $itemspkinfo[$sub]; ${$sk_value.'_words'} .= "+".parse_itm_desc($sk,'sk');
} }
} else
{
${$sk_value.'_words'} = parse_itm_desc($sk,'sk');
}
} }
} else { } else {
${$sk_value.'_words'} =$nospk; ${$sk_value.'_words'} =$nospk;
} }
......
...@@ -112,11 +112,15 @@ function findcorpse(&$w_pdata){ ...@@ -112,11 +112,15 @@ function findcorpse(&$w_pdata){
{ {
$main = 'battle'; $main = 'battle';
$log .= '你发现了<span class="red">'.$w_name.'</span>的尸体!<br>'; $log .= '你发现了<span class="red">'.$w_name.'</span>的尸体!<br>';
foreach (Array('wep','arb','arh','ara','arf','art','itm0','itm1','itm2','itm3','itm4','itm5','itm6') as $w_value)
{
${$w_value} = parse_itm_desc(${$w_value});
}
foreach (Array('w_wepk','w_arbk','w_arhk','w_arak','w_arfk','w_artk','w_itmk0','w_itmk1','w_itmk2','w_itmk3','w_itmk4','w_itmk5','w_itmk6') as $w_k_value) { foreach (Array('w_wepk','w_arbk','w_arhk','w_arak','w_arfk','w_artk','w_itmk0','w_itmk1','w_itmk2','w_itmk3','w_itmk4','w_itmk5','w_itmk6') as $w_k_value) {
if(${$w_k_value}){ if(${$w_k_value}){
foreach($iteminfo as $info_key => $info_value){ foreach($iteminfo as $info_key => $info_value){
if(strpos(${$w_k_value},$info_key)===0){ if(strpos(${$w_k_value},$info_key)===0){
${$w_k_value.'_words'} = $info_value; ${$w_k_value.'_words'} = parse_itm_desc($info_key,'k');
break; break;
} }
} }
...@@ -124,15 +128,19 @@ function findcorpse(&$w_pdata){ ...@@ -124,15 +128,19 @@ function findcorpse(&$w_pdata){
} }
foreach (Array('w_wepsk','w_arbsk','w_arhsk','w_arask','w_arfsk','w_artsk','w_itmsk0','w_itmsk1','w_itmsk2','w_itmsk3','w_itmsk4','w_itmsk5','w_itmsk6') as $w_sk_value) { foreach (Array('w_wepsk','w_arbsk','w_arhsk','w_arask','w_arfsk','w_artsk','w_itmsk0','w_itmsk1','w_itmsk2','w_itmsk3','w_itmsk4','w_itmsk5','w_itmsk6') as $w_sk_value) {
${$w_sk_value.'_words'} = ''; ${$w_sk_value.'_words'} = '';
if(${$w_sk_value} && ! is_numeric(${$w_sk_value})){ if(${$w_sk_value} && ! is_numeric(${$w_sk_value}))
{
for ($i = 0; $i < strlen($w_sk_value)-1; $i++) { $tmp_wsk = get_itmsk_array(${$w_sk_value});
foreach($tmp_wsk as $sk)
{
${$w_sk_value.'_words'} .= parse_itm_desc($sk,'sk');
}
/*for ($i = 0; $i < strlen($w_sk_value)-1; $i++) {
$sub = substr(${$w_sk_value},$i,1); $sub = substr(${$w_sk_value},$i,1);
if(!empty($sub)){ if(!empty($sub)){
${$w_sk_value.'_words'} .= $itemspkinfo[$sub]; ${$w_sk_value.'_words'} .= $itemspkinfo[$sub];
} }
} }*/
} }
} }
include template('corpse'); include template('corpse');
......
...@@ -33,21 +33,7 @@ ...@@ -33,21 +33,7 @@
$tinfo="已了解的特征:"; $tinfo="已了解的特征:";
foreach($temp_etags[$e_key] as $tk => $tarr) foreach($temp_etags[$e_key] as $tk => $tarr)
{ {
foreach($tarr as $tm) foreach($tarr as $tm) $tinfo.= $tk == 'dom' ? "[主]".$iteminfo[$tm]." " : "[次]".$iteminfo[$tm]." ";
{
if($tk == 'dom')
{
$tinfo.= "[主]".$iteminfo[$tm]." ";
}
else
{
//……这样真的好吗
$tt = $itemspkinfo[$tm];
$ta = mb_strpos($tt,'>',0,'utf-8')+1;
$tb = mb_strpos($tt,'</span>',0,'utf-8');
$tinfo.= "[次]".mb_substr($tt,$ta,$tb-$ta,'utf-8')." ";
}
}
} }
return $tinfo; return $tinfo;
} }
...@@ -806,7 +792,7 @@ ...@@ -806,7 +792,7 @@
$kind = substr($kind,0,1); //只用道具类别的首字母判断……这个叫什么?大类! $kind = substr($kind,0,1); //只用道具类别的首字母判断……这个叫什么?大类!
foreach($sk_value as $key_sk => $sk) foreach($sk_value as $key_sk => $sk)
{ {
//来点反人类的: //来点反人类的:TODO:这里有问题
//武器上不会生成“防御性”属性 //武器上不会生成“防御性”属性
if($kind=='W' && array_search($sk,$itmk_to_itmsk_tags['D'])) unset($sk_value[$key_sk]); if($kind=='W' && array_search($sk,$itmk_to_itmsk_tags['D'])) unset($sk_value[$key_sk]);
//防具、道具上不会生成“攻击性”属性 //防具、道具上不会生成“攻击性”属性
...@@ -1005,64 +991,19 @@ ...@@ -1005,64 +991,19 @@
return $tmp_arr; return $tmp_arr;
} }
//数组化itmsk 可能是四面的遗产 //数组化itmsk 可能是四面的遗产 //和还原itmsk为字符串一起挪到game.func.php里了
function get_itmsk_array($sk_value)
{
global $itemspkinfo;
$ret = Array();
$i = 0;
while ($i < strlen($sk_value))
{
$sub = substr($sk_value,$i,1);
$i++;
if(!empty($sub) && array_key_exists($sub,$itemspkinfo)) array_push($ret,$sub); //itmsk里怪东西不少 规范一些 只会加入登记过的属性
}
return $ret;
}
//还原itmsk为字符串 $max_length-字符串长度上限
function get_itmsk_strlen($sk_value,$max_length=5)
{
global $itemspkinfo;
$ret = ''; $sk_count = 0;
foreach($sk_value as $sk)
{
if(array_key_exists($sk,$itemspkinfo))
{
$ret.=$sk;
$sk_count+=strlen($sk);
}
if($sk_count>=$max_length) break;
}
return $ret;
}
//过滤杂项道具类别(可以作为一个通用型函数) //过滤杂项道具类别(可以作为一个通用型函数) //我好傻
//$check_dualwep:1=复合武器会返回一个带有2个武器类别的数组;0=不还原复合武器的类别
//在分解道具流程里,会先检查道具类别是否存在于$split_itmk_r内,不存在才会尝试使用该函数过滤掉乱七八糟的类型。
function filter_itemkind($kind,$check_dualwep=0) function filter_itemkind($kind,$check_dualwep=0)
{ {
global $iteminfo; global $iteminfo;
//武器: foreach($iteminfo as $info_key => $info_value)
switch($kind)
{ {
//武器 if(strpos($kind,$info_key)===0)
case strpos($kind,'W')===0: {
if($check_dualwep && strlen($kind)==3) $kind = $info_key;
{ //复合武器
$w1 = 'W'.substr($kind,1,1);
$w2 = 'W'.substr($kind,2,1);
$kind = Array($w1,$w2);
}
else
{ //可能只有游戏王卡牌了?
$kind = substr($kind,0,2);
}
break;
//饰品、药剂、强化药物、技能书、陷阱、回复道具 一锅端了吧
case (strpos($kind,'A')===0 || strpos($kind,'C')===0 || strpos($kind,'M')===0 || strpos($kind,'V')===0 || strpos($kind,'T')===0 || strpos($kind,'H')===0 || strpos($kind,'P')===0):
$kind = substr($kind,0,1);
break; break;
}
} }
return $kind; return $kind;
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
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