Commit 9b06ccd1 authored by Nemo Ma's avatar Nemo Ma Committed by GitHub

Merge pull request #56 from hikawiier/waaagh

rev achievement phase 0.8
parents 35c0db81 6d5d0a17
This diff is collapsed.
......@@ -6,11 +6,12 @@ if(!defined('IN_GAME')) exit('Access Denied');
# 社团变更时可获得的技能清单:
$club_skillslist = Array
(
1 => Array('s_hp','s_ad','f_heal','c1_def','c1_crit','c1_sneak','c1_burnsp','c1_bjack','c1_veteran'), #'铁拳无敌',
1 => Array('s_hp','s_ad','f_heal','c1_def','c1_crit','c1_stalk','c1_burnsp','c1_bjack','c1_veteran'), #'铁拳无敌',
2 => Array('s_hp','s_ad','f_heal','c2_butcher','c2_intuit','c2_raiding','c2_master','c2_annihil'), #'见敌必斩',
3 => Array('s_hp','s_ad','f_heal','c3_pitchpow','c3_enchant','c3_potential','c3_hawkeye','c3_offset','c3_numerous'), #'灌篮高手',
4 => Array('s_hp','s_ad','f_heal','c4_stable','c4_break','c4_aiming','c4_loot','c4_roar','c4_sniper','c4_headshot'), #'狙击鹰眼',
5 => Array('s_hp','s_ad','f_heal'), #'拆弹专家',
5 => Array('s_hp','s_ad','f_heal'),
//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'), #'宛如疾风',
7 => Array('s_hp','s_ad','f_heal'), #'锡安成员',
8 => Array('s_hp','s_ad','f_heal'), #'黑衣组织',
......@@ -20,7 +21,7 @@ $club_skillslist = Array
12 => Array('s_hp','s_ad','f_heal'), #'全能骑士',
13 => Array('s_hp','s_ad','f_heal'), #'根性兄贵',
14 => Array('s_hp','s_ad','f_heal'), #'肌肉兄贵',
15 => Array('s_hp','s_ad','f_heal'), #'<span class="L5">L5状态</span>',
15 => Array('f_heal'), #'<span class="L5">L5状态</span>',
16 => Array('s_hp','s_ad','f_heal'), #'全能骑士',
17 => Array('f_heal'), #'走路萌物',
18 => Array('s_hp','s_ad','f_heal'), #'天赋异禀',
......@@ -55,6 +56,7 @@ $cskills_tags = Array
'active' => '<span tooltip="在主动启动后才会产生效果" class="gold">【主动技】</span>',
//'cd' => '<span tooltip="隐藏标签:有此标签的技能会在载入时检查是否处于冷却状态" class="gold">【冷却技】</span>',
'openning' => '<span tooltip="仅在先制发现敌人时可用" class="gold">【开幕技】</span>',
'limit' => '<span tooltip="每局游戏内可发动次数有限" class="gold">【限次技】</span>',
//'buff' => '<span tooltip="隐藏标签:代表这是一个临时性状态" class="gold">【状态】</span>',
//'unlock_battle_hidden' => '<span tooltip="隐藏标签:未解锁时不会在战斗界面显示" class="gold">【隐藏】</span>',
);
......@@ -177,7 +179,7 @@ $cskills = Array
'wepk+wep_kind' => "[:wepk:] == 'WP' || [:wepk:] == 'WCP' || [:wepk:] == 'WKP' || [:wep_kind:] == 'P'",
),
),
'c1_sneak' => Array
'c1_stalk' => Array
(
'name' => '偷袭',
'tags' => Array('battle','opening'),
......@@ -487,10 +489,10 @@ $cskills = Array
(
'name' => '枭眼',
'tags' => Array('passive'),
'desc' => '如果你的武器射程不小于敌人,你对其先制攻击率<span class="yellow">+[:activer:]%</span>,<br>
'desc' => '如果你的武器射程不小于敌人,你对其先制攻击率<span class="yellow">+[:actgain:]%</span>,<br>
其攻击你时命中率<span class="yellow">-[:accloss:]%</span>,连击命中率惩罚<span class="yellow">+[:rbloss:]%</span>',
'vars' => Array(
'activer' => 10,
'actgain' => 10,
'accloss' => 12,
'rbloss' => 8,
),
......@@ -540,7 +542,7 @@ $cskills = Array
(
'name' => '百出',
'tags' => Array('passive'),
'desc' => '持投系武器时物理伤害<span class="yellow b">+([:dmgr:]×[:skillpara|c3_enchant-active_t:])%</span><br>
'desc' => '持投系武器时物理伤害<span class="yellow b">+([:dmgr:]×[^skillpara|c3_enchant-active_t^])%</span><br>
其中<span class="yellow">×</span>后的数值是你发动<span class="yellow">“附魔”</span>的次数<br>',
'vars' => Array(
'dmgr' => 2,
......@@ -730,6 +732,125 @@ $cskills = Array
'wepk+wep_kind' => "[:wepk:] == 'WG' || [:wepk:] == 'WJ' || [:wepk:] == 'WGK' || [:wepk:] == 'WDG' || [:wep_kind:] == 'G' || [:wep_kind:] == 'J'",
),
),
'c5_sneak' => Array
(
'name' => '潜行',
'tags' => Array('passive'),
'desc' => '你的隐蔽率提高<span class="yellow">[:hidegain:]%</span>,主动攻击时先攻率提高<span class="yellow">[:actgain:]%</span>',
'maxlvl' => 5,
'cost' => Array(2,3,3,4,4,-1),
'input' => '升级',
'log' => '<span class="yellow">技能「潜行」升级成功。</span><br>',
'status' => Array('skillpara|c5_sneak-lvl'),
'effect' => Array(
0 => Array('skillpara|c5_sneak-lvl' => '+=::1',),
),
'svars' => Array('lvl' => 0),
'vars' => Array(
'hidegain' => Array(0,2,4,6,8,10),
'actgain' => Array(0,2,4,6,8,10),
),
),
'c5_caution' => Array
(
'name' => '谨慎',
'tags' => Array('passive'),
'desc' => '你的陷阱回避率提高<span class="yellow">[:evgain:]%</span>,陷阱重复使用率提高<span class="yellow">[:reugain:]%</span>',
'maxlvl' => 5,
'cost' => Array(2,2,2,3,3,-1),
'input' => '升级',
'log' => '<span class="yellow">技能「谨慎」升级成功。</span><br>',
'status' => Array('skillpara|c5_caution-lvl'),
'effect' => Array(
0 => Array('skillpara|c5_caution-lvl' => '+=::1',),
),
'svars' => Array('lvl' => 0),
'vars' => Array(
'evgain' => Array(0,2,4,6,8,10),
'reugain' => Array(0,4,8,12,16,20),
),
),
'c5_review' => Array
(
'name' => '反思',
'tags' => Array('passive'),
'desc' => '使用爆系武器时,<br>即使攻击没有命中,也可以获得[:expgain:]点经验值',
'vars' => Array(
'expgain' => 1,
),
'lockdesc' => Array(
'wepk+wep_kind' => '武器不适用,持<span class="yellow">爆系武器</span>时生效',
),
'unlock' => Array(
'wepk+wep_kind' => "[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF' || (!empty([:wep_kind:]) && [:wep_kind:] == 'D')",
),
),
'c5_focus' => Array
(
'name' => '专注',
'tags' => Array('passive'),
'desc' => '你可随意于下列三个状态间切换:',
'svars' => Array(
'choice' => 0,
),
'vars' => Array(
'meetgain' => 15,
'itmgain' => 15,
),
'lockdesc' => Array(
'lvl' => '3级时解锁',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 3',
),
),
'c5_higheg' => Array
(
'name' => '高能',
'tags' => Array('battle'),
'desc' => '本次攻击中爆炸属性伤害无视一切加成减成<br>
使用爆系武器方可发动,消耗<span class="yellow">[:ragecost:]</span>点怒气。',
'bdesc' => '本次攻击中爆炸属性伤害无视一切加成减成;消耗<span class="red">[:ragecost:]</span>怒气',
'vars' => Array(
'ragecost' => 40,
),
'lockdesc' => Array(
'lvl' => '6级时解锁',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">爆系武器</span>时生效',
),
'unlock' => Array(
'lvl' => '[:lvl:] >= 6',
'wepk+wep_kind' => "[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF' || (!empty([:wep_kind:]) && [:wep_kind:] == 'D')",
),
),
'c5_double' => Array
(
'name' => '双响',
'tags' => Array('battle','limit'),
'desc' => '本局已发动<span class="yellow">[^skillpara|c5_double-active_t^]/[:maxactive_t:]次</span><br>使用爆系武器方可发动,连续攻击[:chase_t:]次。',
'bdesc' => '本次战斗你将连续攻击[:chase_t:]次;本局已发动<span class="yellow">[^skillpara|c5_double-active_t^]/[:maxactive_t:]</span>次',
'svars' => Array(
'active_t' => 0,
),
'vars' => Array(
'ragecost' => 0,
'chase_t' => 2,
'maxactive_t' => 2,
),
'pvars' => Array(
'skillpara|c5_double-active_t',
),
'lockdesc' => Array(
'skillpara|c5_double-active_t' => '已无法发动该技能',
'lvl' => '19级时解锁',
'wepk+wep_kind' => '武器不适用,持<span class="yellow">爆系武器</span>时生效',
),
'unlock' => Array(
'skillpara|c5_double-active_t' => '[:skillpara|c5_double-active_t:] < 2',
'lvl' => '[:lvl:] >= 19',
'wepk+wep_kind' => "[:wepk:] == 'WD' || [:wepk:] == 'WDG' || [:wepk:] == 'WDF' || (!empty([:wep_kind:]) && [:wep_kind:] == 'D')",
),
),
'tl_cstick' => Array
(
'name' => '抡尸',
......
......@@ -33,6 +33,8 @@ $weather_attack_modifier = Array(10,10,0,-5,-10,-20,-15,0,0,7,20,-7,-20,-5,-10,-
$weather_defend_modifier = Array(10,30,0,0,-3,-15,-10,0,-20,-30,-50,-5,-20,-3,-20,5,-30,30);
//天气对发现率的影响
$weather_find_r = Array(10,20,0,-2,-3,-10,-7,5,-10,-20,0,-7,-5,-30,-5,-20,0,20);
//天气对躲避率的影响
$weather_hide_r = Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
//天气对先制率的影响
$weather_active_r = Array(10,20,0,-5,-10,-20,-15,0,-7,-10,-10,-5,0,-5,-20,-5,0,20);
......@@ -45,6 +47,8 @@ $pose_attack_modifier = Array(0,100,0,-25,25,-50,50,-777);
$pose_defend_active = 0;
//姿态对防御力的影响(单位:百分比加算)
$pose_defend_modifier = Array(0,25,0,-25,-50,-50,-466,777);
//姿态对躲避率的影响
$pose_hide_modifier = Array(0,-25,0,-10,10,-25,-40,-40,0);
//姿态对先制率的影响(单位:百分比加算)(计算方式:进攻方姿态先制率-防守方姿态先制率)
$pose_active_modifier = Array(0,0,50,0,25,-25,5,-100);
//姿态对反击率的影响(单位:百分比加算)
......@@ -59,6 +63,8 @@ $tactic_attack_modifier = Array(0,20,-25,25,-50);
$tactic_defend_active = 0;
//应战策略对防御力的加成(单位:百分比加算)
$tactic_defend_modifier = Array(0,-20,50,-25,0);
//应战策略对躲避率的影响
$tactic_hide_modifier = Array(0,0,0,-15,15);
//应战策略对先制率的影响(单位:百分比加算)
$tactic_active_modifier = Array(0,0,0,0,0);
//应战策略对反击率的影响(单位:百分比加算)
......@@ -73,9 +79,21 @@ $pls_attack_modifier = Array(
//场景对防御力的加成(单位:百分比加算)
$pls_defend_modifier = Array(
// 无月 端点 RF高 雪镇 索拉 指挥 梦幻 清水 白穗 墓地 麦斯 对天 夏镇 三体 光坂 守矢 常林 常高 秋镇 精灵 春镇 圣G 初始 幻想 永恒 妖精 冰封 花菱 FARG 风祭 格纳 和田 SCP 雏菊 英灵
0, -10, 0, 0, -10, 0, 0, 0, 0, 0, -10, 5, 0, -10, 0, 0, 5, 0, 0, 0, 0, 0, -10, -10, -10, 0, 0, 0, 5, 5, 5, 0, 0, -5, 0
0, -10, 0, 0, -10, 0, 0, 0, 0, 0, -10, 5, 0, -10, 0, 0, 5, 0, 0, 0, 0, 0, -10, -10, -10, 0, 0, 0, 5, 5, 5, 0, 0, -5, 0
// 0, -10, 10, 0, 0, 0, 0, 0, 0, 0, 0, -10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 0
);
//场景对遇敌率的修正
$pls_find_modifier = Array(
// 无月 端点 RF高 雪镇 索拉 指挥 梦幻 清水 白穗 墓地 麦斯 对天 夏镇 三体 光坂 守矢 常林 常高 秋镇 精灵 春镇 圣G 初始 幻想 永恒 妖精 冰封 花菱 FARG 风祭 格纳 和田 SCP 雏菊 英灵
20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 20
// 10, 0, 0, 10, -10, 10, 0, 10, -10, 0, 10, 0, 0, -10, 0, -10, -10, -10, 0, 10, 0, 10
);
//场景对隐蔽率的修正
$pls_hide_modifier = Array(
// 无月 端点 RF高 雪镇 索拉 指挥 梦幻 清水 白穗 墓地 麦斯 对天 夏镇 三体 光坂 守矢 常林 常高 秋镇 精灵 春镇 圣G 初始 幻想 永恒 妖精 冰封 花菱 FARG 风祭 格纳 和田 SCP 雏菊 英灵
0, 0, 5, 5, 0, 0, 0, 0, 0, -10, 0, 0, 5, 0, 10, 0, -10, 5, 5, 0, 5, 5, 0, 0, 0, 0, 0, 15, -10,- 10, 0, 0, -10, 0, 0
// 10, 0, 0, 10, -10, 10, 0, 10, -10, 0, 10, 0, 0, -10, 0, -10, -10, -10, 0, 10, 0, 10
);
//各种攻击方式可能导致受伤的部位
$infatt = Array('N' => 'bhaf', 'P' => 'bhaf', 'K' =>'bhaf', 'G' =>'bhaf', 'C'=> 'bhaf', 'D' => 'bhaf', 'F'=> 'bhaf', 'J'=> 'bhaf');
//各种攻击方式可能导致受伤的部位
......
......@@ -220,6 +220,8 @@ CREATE TABLE `acbra2_players` (
`wf` smallint unsigned not null default '0',
`teamID` char(15) not null default '',
`teamPass` char(15) not null default '',
teamMate text NOT NULL default '',
teamIcon smallint unsigned NOT NULL default '0',
getitem text NOT NULL default '',
itembag text NOT NULL default '',
itmnum smallint unsigned NOT NULL default '0',
......
img/t_0.gif

1.39 KB

......@@ -51,6 +51,10 @@ $result = $db->query("DESCRIBE {$tablepre}winners mss");
if(!$db->num_rows($result)) $db->query("ALTER TABLE {$tablepre}winners ADD mss smallint unsigned NOT NULL default '0' AFTER ss");
$result = $db->query("DESCRIBE {$tablepre}winners skillpoint");
if(!$db->num_rows($result)) $db->query("ALTER TABLE {$tablepre}winners ADD skillpoint smallint unsigned NOT NULL default '0' AFTER nick");
$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");
//以下内容均为chatGPT生成,让我们对新时代的赛博苦力致以敬意:
$db->query("ALTER TABLE {$tablepre}winners MODIFY wep char(30) NOT NULL default ''");
......
......@@ -34,7 +34,7 @@ if($urcmd){
$resultinfo = '第'.$startno.'条-第'.$endno.'条记录';
}
}
if($urcmd == 'ban' || $urcmd == 'unban' || $urcmd == 'del') {
if($urcmd == 'ban' || $urcmd == 'unban' || $urcmd == 'del' || $urcmd == 'checkach') {
$operlist = $gfaillist = $ffaillist = array();
for($i=0;$i<$showlimit;$i++){
if(isset(${'user_'.$i})) {
......@@ -46,6 +46,35 @@ if($urcmd == 'ban' || $urcmd == 'unban' || $urcmd == 'del') {
$urdata[$i]['groupid'] = 1;
}elseif($urcmd == 'del'){
unset($urdata[$i]);
}elseif($urcmd == 'checkach'){
$adata = $urdata[$i]; $n = $urdata[$i]['username'];
$adata['achrev'] = json_decode($adata['achrev'],true);
$new_ach = Array(); $cpl = Array(); $prc = Array();
//手动变化成就储存结构
if(!empty($adata['achievement']) && empty($adata['achrev']))
{
include_once GAME_ROOT.'./include/game/achievement.func.php';
$alist = get_achlist();
foreach($alist as $a => $aarr)
{
if($a <= 57)
{
$cpl[$a]=check_achievement($a,$n);
$prc[$a]=fetch_achievement($a,$n);
//新成就储存结构内,只会保存有进度的成就
if(!empty($cpl[$a]) || !empty($prc[$a]))
{
// 到达999阶段的成就 替换为配置中预设的达成等级
if($cpl[$a] == 999) $cpl[$a] = $aarr['lvl'] ?: count($aarr['name']);
$new_ach[$a]['l'] = $cpl[$a] ?: 0;
$new_ach[$a]['v'] = $prc[$a] ?: 0;
}
}
}
$new_ach = json_encode($new_ach);
$db->query("UPDATE {$tablepre}users SET achrev='$new_ach' WHERE username='".$n."'" );
}
//$new_ach = '';
}
// adminlog('banur',$urdata[$i]['username']);
}elseif(isset($urdata[$i]) && $urdata[$i]['uid'] == ${'user_'.$i}){
......@@ -66,8 +95,10 @@ if($urcmd == 'ban' || $urcmd == 'unban' || $urcmd == 'del') {
}elseif($urcmd == 'del'){
$operword = '删除';
$qryword = "DELETE FROM {$tablepre}users ";
}elseif($urcmd == 'checkach'){
$cmd_info .= " 帐户 $opernames 调整了成就储存结构";
}
if($operlist){
if($operlist && $urcmd != 'checkach'){
$qrywhere = '('.implode(',',array_keys($operlist)).')';
$opernames = implode(',',($operlist));
$db->query("$qryword WHERE uid IN $qrywhere");
......
This diff is collapsed.
......@@ -279,7 +279,7 @@ function combat($active = 1, $wep_kind = '') {
$log .= npc_chat ( $w_type,$w_name, 'death' );
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_battle_achievement($name,$w_type,$w_name,$wep_temp);
check_battle_achievement_rev($pa,$pd);
if(!$w_type){
if($w_rp < 80){
......
......@@ -2151,7 +2151,7 @@ function itemuse($itmn) {
}
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_item_achievement($name,$i,$ie,$is,$ik,$isk);
check_item_achievement_rev($name,$i,$ie,$is,$ik,$isk);
$mode = 'command';
return;
......
......@@ -834,7 +834,7 @@ function itemmix($mlist, $itemselect=-1) {
//检查成就
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_mixitem_achievement($name,$itm0);
check_mixitem_achievement_rev($name,$itm0);
itemget();
}
......
......@@ -1619,18 +1619,47 @@
function get_skill_inf(&$pa,$sk,$times,$type=0)
{
# 受到眩晕效果
}
// 获取pd面对pa时的躲避率
function get_hide_r_rev(&$pa,&$pd,$mode=0)
{
global $weather_hide_r,$pls_hide_modifier,$pose_hide_modifier,$tactic_hide_modifier;
# 获取基础躲避率
$hide_r = 0;
# 计算天气对躲避率的修正
$wth_r = $weather_hide_r[$weather] ?: 0 ;
# 计算地点对躲避率的修正
//$pls_r = $pls_hide_modifier[$pd['pls']] ?: 0 ;
$pls_r = 0;//暂时不应用地点躲避率 等遇敌率也重做之后再说
# 计算pd姿态对于躲避率的修正:
$pose_r = $pose_hide_modifier[$pd['pose']] ?: 0;
# 计算pd策略对于躲避率的修正:
$tac_r = $tactic_hide_modifier[$pd['tactic']] ?: 0;
# 基础汇总:
$hide_r += $wth_ar + $pose_r + $tac_r;
include_once GAME_ROOT.'./include/game/clubskills.func.php';
# 计算社团技能对躲避率的系数修正(旧):
$hide_r *= get_clubskill_bonus_hide($pd['club'],$pd['skills']);
# 计算社团技能对躲避率的定值修正:
$hide_r = get_clbskill_hide_rate_fix($pa,$pd,$hide_r);
//echo "hide_r = {$hide_r}<br>";
return $hide_r;
}
//获取pa对pd的先制攻击概率,
// 获取pa对pd的先制攻击概率
// $mode 0-标准战斗 1-鏖战 2-追击(追击&鏖战基础先制率不受天气姿态影响)
function get_active_r_rev(&$pa,&$pd,$mode=0)
{
global $log,$active_obbs,$weather,$gamecfg,$chase_active_obbs;
include config('combatcfg',$gamecfg);
# 获取基础先攻率:
if(!$mode)
{
# 获取基础先攻率:
$active_r = $active_obbs;
# 计算天气对先攻率的修正:
$wth_ar = $weather_active_r[$weather] ?: 0;
......@@ -1647,26 +1676,25 @@
# 计算追击状态下pa对pd的先攻加成。默认:战场距离*10%
if($mode == 2) $range_ar += get_battle_range($pa,$pd,1) * 10;
}
# 计算社团技能对于先攻率的系数修正(旧):
$active_r *= get_clubskill_bonus_active($pa['club'],$pa['skills'],$pd['club'],$pd['skills']);
# 计算社团技能对于先攻率的定值修正(新):
$active_r = get_clbskill_active_rate_fix($pa,$pd,$active_r);
# 计算先攻率上下限:
$active_r = max(min($active_r,96),4);
# 计算pa身上的异常状态对先攻率的修正:(pd身上的异常状态不会影响pa的先制率,这个机制以后考虑改掉)
$inf_ar = 1;
if(!empty($pa['inf']))
{
$inf_ar = 1;
foreach ($inf_active_p as $inf_ky => $value)
{
if(strpos($pa['inf'], $inf_ky)!==false){$inf_ar *= $value;}
}
$active_r *= $inf_ar;
}
# 计算社团技能对于先攻率的修正:
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$clbskill_ar = 1;
$clbskill_ar *= get_clubskill_bonus_active($pa['club'],$pa['skills'],$pd['club'],$pd['skills']);
# 计算社团技能对于先攻率的修正(新):
$clbskill_ar *= get_clbskill_activerate($pa,$pd);
# 修正汇总:
$active_r = round($active_r * $clbskill_ar * $inf_ar);
# 计算先攻率上下限:
$active_r = max(min($active_r,96),4);
# 计算pd身上的特殊异常(技能类)对先攻率的修正:
if(!empty($pd['clbpara']['skill']))
{
......@@ -1677,7 +1705,8 @@
$active_r = 100;
}
}
//echo 'active:'.$active_r.' <br>';
//echo 'active = '.$active_r.' <br>';
return $active_r;
}
......@@ -1697,7 +1726,7 @@
return 0;
}
# 被偷袭无法反击
if(isset($pa['bskill_c1_sneak']))
if(isset($pa['bskill_c1_stalk']))
{
$pd['cannot_counter_log'] = "{$pd['nm']}无法反击!";
return 0;
......
......@@ -62,7 +62,7 @@
{
$sk_dice = diceroll(99);
# 「偷袭」或「闷棍」技能生效时,「猛击」必定触发;
$sk_obbs = isset($pa['bskill_c1_sneak'])||isset($pa['bskill_c1_bjack']) ? 100 : get_skillvars('c1_crit','rate');
$sk_obbs = isset($pa['bskill_c1_stalk'])||isset($pa['bskill_c1_bjack']) ? 100 : get_skillvars('c1_crit','rate');
# 成功触发时
if($sk_dice < $sk_obbs)
{
......@@ -92,10 +92,22 @@
return;
}
# 获取社团技能对先攻率(pa是否先攻pd)的修正(新)
function get_clbskill_activerate(&$pa,&$pd)
# 获取社团技能对躲避率(pd是否躲避pa)的定值修正(新)
function get_clbskill_hide_rate_fix(&$pa,&$pd,$r)
{
#pd持有「潜行」时的效果判定:
if(!check_skill_unlock('c5_sneak',$pd))
{
$sk_lvl = get_skilllvl('c5_sneak',$pd);
$sk_r = get_skillvars('c5_sneak','hidegain',$sk_lvl);
$r += $sk_r;
}
return $r;
}
# 获取社团技能对先攻率(pa是否先攻pd)的定值修正(新)
function get_clbskill_active_rate_fix(&$pa,&$pd,$r)
{
$r = 1;
# pa持有「枭眼」时的效果判定:
if(!check_skill_unlock('c3_hawkeye',$pa))
{
......@@ -104,8 +116,8 @@
$pd['wep_range'] = get_wep_range($pd);
if($pa['wep_range'] >= $pd['wep_range'])
{
$sk_r = get_skillvars('c3_hawkeye','activer');
$r += $sk_r/100;
$sk_r = get_skillvars('c3_hawkeye','actgain');
$r += $sk_r;
}
}
# pd持有「枭眼」时的效果判定:
......@@ -116,10 +128,17 @@
$pd['wep_range'] = get_wep_range($pd);
if($pa['wep_range'] < $pd['wep_range'])
{
$sk_r = get_skillvars('c3_hawkeye','activer');
$r -= $sk_r/100;
$sk_r = get_skillvars('c3_hawkeye','actgain');
$r -= $sk_r;
}
}
# pa持有「潜行」时的效果判定:(只在主动发现敌人时应用)
if(!check_skill_unlock('c5_sneak',$pa))
{
$sk_lvl = get_skilllvl('c5_sneak',$pa);
$sk_r = get_skillvars('c5_sneak','actgain',$sk_lvl);
$r += $sk_r;
}
return $r;
}
......
......@@ -621,7 +621,7 @@
$skey_value = parse_skillrules($pvar);
$skey_value = eval("return $skey_value;");
# 置换对应内容
$sk_desc = str_replace("[:{$pvar}:]",$skey_value,$sk_desc);
$sk_desc = str_replace("[^{$pvar}^]",$skey_value,$sk_desc);
}
else
{
......
......@@ -807,7 +807,7 @@
if(!$pa['type'])
{
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_battle_achievement($pa['name'],$pd['type'],$pd['name'],$pa['wep_name']);
check_battle_achievement_rev($pa,$pd);
}
# 保存游戏进行状态
include_once GAME_ROOT.'./include/system.func.php';
......
......@@ -533,7 +533,7 @@ function discover($schmode = 0) {
if($mode_dice < $schmode)
{
//echo "进入遇敌判定<br>";
global $pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
global $pdata,$pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
global $clbstatusa,$clbstatusb,$clbstatusc,$clbstatusd,$clbstatuse;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pls='$pls' AND pid!='$pid'");
......@@ -553,6 +553,7 @@ function discover($schmode = 0) {
//移除了重复调用discover()的设定,尝试用一种正常一点的办法确保敌人/尸体发现率符合基础设定值,不然现在的尸体确实太难摸了。
//现在触发遇敌事件只会返回三种结果:1、发现尸体;2、发现敌人、3、敌人隐藏起来;所以实际的尸体发现率=$enemyrate*$corpse_obbs
$meetman_flag = 0;
include_once GAME_ROOT.'./include/game/revattr.func.php';
foreach($enemyarray as $enum)
{
$db->data_seek($result, $enum);
......@@ -588,9 +589,10 @@ function discover($schmode = 0) {
if ((!$edata['type'])&&($artk=='XX')&&(($edata['artk']!='XX')||($edata['art']!=$name))&&($gamestate<50)) continue;
if (($artk!='XX')&&($edata['artk']=='XX')&&($gamestate<50)) continue;
//计算活人发现率
$hide_r = get_hide_r($weather,$pls,$edata['pose'],$edata['tactic'],$edata['club'],$edata['inf']);
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$hide_r *= get_clubskill_bonus_hide($edata['club'],$edata['skills']);
//$hide_r = get_hide_r($weather,$pls,$edata['pose'],$edata['tactic'],$edata['club'],$edata['inf']);
//include_once GAME_ROOT.'./include/game/clubskills.func.php';
//$hide_r *= get_clubskill_bonus_hide($edata['club'],$edata['skills']);
$hide_r = get_hide_r_rev($pdata,$edata);
$enemy_dice = rand(0,99);
$meetman_flag = $enemy_dice<($find_obbs - $hide_r) ? 1 : -1;
break;
......@@ -630,7 +632,6 @@ function discover($schmode = 0) {
//if ($active_r>96) $active_r=96;
//include_once GAME_ROOT.'./include/game/dice.func.php';
include_once GAME_ROOT.'./include/game/revbattle.func.php';
include_once GAME_ROOT.'./include/game/revattr.func.php';
//获取并保存当前玩家数据
$sdata = current_player_save();
//刷新敌人时效性状态
......
......@@ -327,7 +327,7 @@ function syncro($sb){
else {addnews($now,'overmix',get_title_desc($nick).' '.$name,$itm0);}
//检查成就
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_mixitem_achievement($name,$itm0);
check_mixitem_achievement_rev($name,$itm0);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
return;
......
......@@ -29,6 +29,7 @@ function gameerrorhandler($code, $msg, $file, $line){
function gexit($message = '',$file = '', $line = 0) {
global $charset,$title,$extrahead,$allowcsscache,$errorinfo;
global $gameversion,$cuser,$cpass;
include template('error');
exit();
}
......
......@@ -506,6 +506,24 @@ function gameover($time = 0, $mode = '', $winname = '') {
} else {//最后幸存、锁定解除、核爆全灭,需要记录优胜者资料
$result = $db->query("SELECT * FROM {$tablepre}players WHERE name='$winner' AND type=0");
$pdata = $db->fetch_array($result);
//锁定解除、幻境解离结局,检查是否为队伍获胜……
if(($winmode == 3 || $winmode == 7) && !empty($pdata['teamID']))
{
$team = $pdata['teamID']; $team_mates = Array($pdata['name']);
$tresult = $db->query("SELECT name 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))
{
$team_mates[] = $tpdata['name'];
//队伍获胜时 同队玩家也可以获得对应结局成就
check_end_achievement_rev($tpdata['name'],$winmode,1);
}
}
}
}
$result2 = $db->query("SELECT motto FROM {$tablepre}users WHERE username='$winner'");
$pdata['motto'] = $db->result($result2, 0);
$result3 = $db->query("SELECT name,killnum FROM {$tablepre}players WHERE type=0 order by killnum desc, lvl desc limit 1");
......@@ -519,12 +537,14 @@ function gameover($time = 0, $mode = '', $winname = '') {
$pdata['getime'] = $time;
$pdata['hdmg'] = $hdamage;
$pdata['hdp'] = $hplayer;
$db->query("INSERT INTO {$tablepre}winners (gid,nick,name,pass,type,endtime,gd,sNo,icon,club,hp,mhp,sp,msp,ss,mss,att,def,pls,lvl,`exp`,money,bid,inf,rage,pose,tactic,killnum,killnum2,state,wp,wk,wg,wc,wd,wf,teamID,teamPass,wep,wepk,wepe,weps,arb,arbk,arbe,arbs,arh,arhk,arhe,arhs,ara,arak,arae,aras,arf,arfk,arfe,arfs,art,artk,arte,arts,itm0,itmk0,itme0,itms0,itm1,itmk1,itme1,itms1,itm2,itmk2,itme2,itms2,itm3,itmk3,itme3,itms3,itm4,itmk4,itme4,itms4,itm5,itmk5,itme5,itms5,itm6,itmk6,itme6,itms6,motto,wmode,vnum,gtime,gstime,getime,hdmg,hdp,hkill,hkp,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5,itmsk6) VALUES ('".$gamenum."','".$pdata['nick']."','".$pdata['name']."','".$pdata['pass']."','".$pdata['type']."','".$pdata['endtime']."','".$pdata['gd']."','".$pdata['sNo']."','".$pdata['icon']."','".$pdata['club']."','".$pdata['hp']."','".$pdata['mhp']."','".$pdata['sp']."','".$pdata['msp']."','".$pdata['ss']."','".$pdata['mss']."','".$pdata['att']."','".$pdata['def']."','".$pdata['pls']."','".$pdata['lvl']."','".$pdata['exp']."','".$pdata['money']."','".$pdata['bid']."','".$pdata['inf']."','".$pdata['rage']."','".$pdata['pose']."','".$pdata['tactic']."','".$pdata['killnum']."','".$pdata['killnum2']."','".$pdata['state']."','".$pdata['wp']."','".$pdata['wk']."','".$pdata['wg']."','".$pdata['wc']."','".$pdata['wd']."','".$pdata['wf']."','".$pdata['teamID']."','".$pdata['teamPass']."','".$pdata['wep']."','".$pdata['wepk']."','".$pdata['wepe']."','".$pdata['weps']."','".$pdata['arb']."','".$pdata['arbk']."','".$pdata['arbe']."','".$pdata['arbs']."','".$pdata['arh']."','".$pdata['arhk']."','".$pdata['arhe']."','".$pdata['arhs']."','".$pdata['ara']."','".$pdata['arak']."','".$pdata['arae']."','".$pdata['aras']."','".$pdata['arf']."','".$pdata['arfk']."','".$pdata['arfe']."','".$pdata['arfs']."','".$pdata['art']."','".$pdata['artk']."','".$pdata['arte']."','".$pdata['arts']."','".$pdata['itm0']."','".$pdata['itmk0']."','".$pdata['itme0']."','".$pdata['itms0']."','".$pdata['itm1']."','".$pdata['itmk1']."','".$pdata['itme1']."','".$pdata['itms1']."','".$pdata['itm2']."','".$pdata['itmk2']."','".$pdata['itme2']."','".$pdata['itms2']."','".$pdata['itm3']."','".$pdata['itmk3']."','".$pdata['itme3']."','".$pdata['itms3']."','".$pdata['itm4']."','".$pdata['itmk4']."','".$pdata['itme4']."','".$pdata['itms4']."','".$pdata['itm5']."','".$pdata['itmk5']."','".$pdata['itme5']."','".$pdata['itms5']."','".$pdata['itm6']."','".$pdata['itmk6']."','".$pdata['itme6']."','".$pdata['itms6']."','".$pdata['motto']."','".$pdata['wmode']."','".$pdata['vnum']."','".$pdata['gtime']."','".$pdata['gstime']."','".$pdata['getime']."','".$pdata['hdmg']."','".$pdata['hdp']."','".$pdata['hkill']."','".$pdata['hkp']."','".$pdata['wepsk']."','".$pdata['arbsk']."','".$pdata['arhsk']."','".$pdata['arask']."','".$pdata['arfsk']."','".$pdata['artsk']."','".$pdata['itmsk0']."','".$pdata['itmsk1']."','".$pdata['itmsk2']."','".$pdata['itmsk3']."','".$pdata['itmsk4']."','".$pdata['itmsk5']."','".$pdata['itmsk6']."')");
$pdata['teamMate'] = !empty($team_mates) ? json_encode($team_mates) : '';
$pdata['teamIcon'] = !empty($team_mates) ? 1 : 0;
$db->query("INSERT INTO {$tablepre}winners (gid,nick,name,pass,type,endtime,gd,sNo,icon,club,hp,mhp,sp,msp,ss,mss,att,def,pls,lvl,`exp`,money,bid,inf,rage,pose,tactic,killnum,killnum2,state,wp,wk,wg,wc,wd,wf,teamID,teamPass,teamMate,teamIcon,wep,wepk,wepe,weps,arb,arbk,arbe,arbs,arh,arhk,arhe,arhs,ara,arak,arae,aras,arf,arfk,arfe,arfs,art,artk,arte,arts,itm0,itmk0,itme0,itms0,itm1,itmk1,itme1,itms1,itm2,itmk2,itme2,itms2,itm3,itmk3,itme3,itms3,itm4,itmk4,itme4,itms4,itm5,itmk5,itme5,itms5,itm6,itmk6,itme6,itms6,motto,wmode,vnum,gtime,gstime,getime,hdmg,hdp,hkill,hkp,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5,itmsk6) VALUES ('".$gamenum."','".$pdata['nick']."','".$pdata['name']."','".$pdata['pass']."','".$pdata['type']."','".$pdata['endtime']."','".$pdata['gd']."','".$pdata['sNo']."','".$pdata['icon']."','".$pdata['club']."','".$pdata['hp']."','".$pdata['mhp']."','".$pdata['sp']."','".$pdata['msp']."','".$pdata['ss']."','".$pdata['mss']."','".$pdata['att']."','".$pdata['def']."','".$pdata['pls']."','".$pdata['lvl']."','".$pdata['exp']."','".$pdata['money']."','".$pdata['bid']."','".$pdata['inf']."','".$pdata['rage']."','".$pdata['pose']."','".$pdata['tactic']."','".$pdata['killnum']."','".$pdata['killnum2']."','".$pdata['state']."','".$pdata['wp']."','".$pdata['wk']."','".$pdata['wg']."','".$pdata['wc']."','".$pdata['wd']."','".$pdata['wf']."','".$pdata['teamID']."','".$pdata['teamPass']."','".$pdata['teamMate']."','".$pdata['teamIcon']."','".$pdata['wep']."','".$pdata['wepk']."','".$pdata['wepe']."','".$pdata['weps']."','".$pdata['arb']."','".$pdata['arbk']."','".$pdata['arbe']."','".$pdata['arbs']."','".$pdata['arh']."','".$pdata['arhk']."','".$pdata['arhe']."','".$pdata['arhs']."','".$pdata['ara']."','".$pdata['arak']."','".$pdata['arae']."','".$pdata['aras']."','".$pdata['arf']."','".$pdata['arfk']."','".$pdata['arfe']."','".$pdata['arfs']."','".$pdata['art']."','".$pdata['artk']."','".$pdata['arte']."','".$pdata['arts']."','".$pdata['itm0']."','".$pdata['itmk0']."','".$pdata['itme0']."','".$pdata['itms0']."','".$pdata['itm1']."','".$pdata['itmk1']."','".$pdata['itme1']."','".$pdata['itms1']."','".$pdata['itm2']."','".$pdata['itmk2']."','".$pdata['itme2']."','".$pdata['itms2']."','".$pdata['itm3']."','".$pdata['itmk3']."','".$pdata['itme3']."','".$pdata['itms3']."','".$pdata['itm4']."','".$pdata['itmk4']."','".$pdata['itme4']."','".$pdata['itms4']."','".$pdata['itm5']."','".$pdata['itmk5']."','".$pdata['itme5']."','".$pdata['itms5']."','".$pdata['itm6']."','".$pdata['itmk6']."','".$pdata['itme6']."','".$pdata['itms6']."','".$pdata['motto']."','".$pdata['wmode']."','".$pdata['vnum']."','".$pdata['gtime']."','".$pdata['gstime']."','".$pdata['getime']."','".$pdata['hdmg']."','".$pdata['hdp']."','".$pdata['hkill']."','".$pdata['hkp']."','".$pdata['wepsk']."','".$pdata['arbsk']."','".$pdata['arhsk']."','".$pdata['arask']."','".$pdata['arfsk']."','".$pdata['artsk']."','".$pdata['itmsk0']."','".$pdata['itmsk1']."','".$pdata['itmsk2']."','".$pdata['itmsk3']."','".$pdata['itmsk4']."','".$pdata['itmsk5']."','".$pdata['itmsk6']."')");
}
//检查成就
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_end_achievement($winner,$winmode);
check_end_achievement_rev($winner,$winmode);
rs_sttime();//重置游戏开始时间和当前游戏状态
......
<table>
<tr>
<!--{eval $alvl = $cpl[$aid]; $rlvl = $alvl == 999 ? $alist[$aid]['lvl']-1 : $alvl;}-->
<td>
<!--{if file_exists("img/ach/".$aid."_".$alvl.".gif") }-->
<!-- 存在预设的对应阶段图标 -->
<img src="img/ach/{$aid}_{$alvl}.gif">
<!--{elseif file_exists("img/ach/".$aid."_".$rlvl.".gif") }-->
<!-- 完成后的成就,不存在完成阶段图标,但是存在上一阶段图标 -->
<img src="img/ach/{$aid}_{$rlvl}.gif">
<!--{elseif $alvl && file_exists("img/ach/".$aid.".gif") }-->
<!-- 没有定义阶段,但是有通用阶段图标 -->
<img src="img/ach/{$aid}.gif">
<!--{else}-->
<!-- 否则使用默认图标 -->
<!--{if !empty($alvl) }-->
<img src="img/achievement_0.gif">
<!--{else}-->
<img src="img/achievement_not_done.gif">
<!--{/if}-->
<!--{/if}-->
</td>
<td valign="top" align="left">
<!-- 当前阶段成就名 -->
<!--{if empty($alist[$aid]['name'][$alvl]) }-->
<b>{$alist[$aid]['name'][$rlvl]}</b>
<!--{else}-->
<b>{$alist[$aid]['name'][$alvl]}</b>
<!--{/if}-->
<!--{if !empty($alist[$aid]['lvldesc'][$alvl]) }-->
<!-- 存在预设的对应阶段的完成状态描述文本 -->
{$alist[$aid]['lvlname'][$alvl]}
<!--{else}-->
<!-- 否则使用默认描述文本 -->
<!--{if ($alvl == $alist[$aid]['lvl']) }-->
<span class="lime">[完成]</span>
<!--{elseif (!empty($alvl))}-->
<span class="clan">[进行中]</span>
<!--{else}-->
<span class="red">[未完成]</span>
<!--{/if}-->
<!--{/if}-->
<br>
<!-- 当前阶段成就完成情况 -->
<font color="yellow">
<!--{if !empty($alist[$aid]['request'][$alvl]) }-->
<!--{eval $areq = $alist[$aid]['request'][$alvl]; $areq = str_replace("[:request:]",$prc[$aid],$areq);}-->
{$areq}
<!--{else}-->
目前进度:{$prc[$aid]}次
<!--{/if}-->
</font>
<br>
<!-- 当前阶段达成奖励 -->
<font color="olive">
奖励:
<!--{if $alist[$aid]['c1'][$rlvl] }-->
积分{$alist[$aid]['c1'][$rlvl]}
<!--{/if}-->
<!--{if $alist[$aid]['c2'][$rlvl] }-->
切糕{$alist[$aid]['c2'][$rlvl]}
<!--{/if}-->
<!--{if $alist[$aid]['title'][$rlvl] }-->
<span class="evergreen">称号 {$alist[$aid]['title'][$rlvl]}</span>
<!--{/if}-->
</font>
<br>
<!-- 当前阶段达成需求描述 -->
{$alist[$aid]['desc'][$rlvl]}
</td>
</tr>
</table>
......@@ -31,6 +31,7 @@
<th>头像</th>
<th>社团</th>
<th>成就</th>
<th>成就(新)</th>
<th>称号表</th>
<th>口头禅</th>
<th>杀人留言</th>
......@@ -59,6 +60,7 @@
<td><input type="text" name="icon_$n" size="2" maxlength="2" value="$ur['icon']" disabled="true"></td>
<td>{$clubinfo[$ur['club']]}</td>
<td><input type="text" name="achievement_$n" size="20" maxlength="400" value="$ur['achievement']" disabled="true"></td>
<td><input type="text" name="achrev_$n" size="20" maxlength="400" value="$ur['achrev']" disabled="true"></td>
<td><input type="text" name="nicks_$n" size="20" maxlength="300" value="$ur['nicks']" disabled="true"></td>
<td><input type="text" name="motto_$n" size="20" maxlength="60" value="$ur['motto']" disabled="true"></td>
<td><input type="text" name="killmsg_$n" size="20" maxlength="20" value="$ur['killmsg']" disabled="true"></td>
......@@ -85,6 +87,7 @@
<td><input type="text" name="icon_$n" size="2" maxlength="2" value="$ur['icon']"></td>
<td>{$clubinfo[$ur['club']]}</td>
<td><input type="text" name="achievement_$n" size="20" maxlength="400" value="$ur['achievement']"></td>
<td><textarea name="achrev_$n" style="overflow:auto">$ur['achrev']</textarea></td>
<td><input type="text" name="nicks_$n" size="20" maxlength="300" value="$ur['nicks']"></td>
<td><input type="text" name="motto_$n" size="20" maxlength="60" value="$ur['motto']"></td>
<td><input type="text" name="killmsg_$n" size="20" maxlength="60" value="$ur['killmsg']"></td>
......@@ -97,10 +100,11 @@
<!--{/loop}-->
<tr>
<td colspan=2><input type="checkbox" name="user_all" onchange="for(i=0; i<=$n;i++){if(! $('user_'+i).disabled){if(this.checked==true){$('user_'+i).checked=true}else{$('user_'+i).checked=false}}}">全选</td>
<td colspan=12 style="text-align:center;">
<td colspan=16 style="text-align:center;">
<input type="submit" name="submit" value="封停选中玩家" onclick="$('urcmd').value='ban'">
<input type="submit" name="submit" value="解封选中玩家" onclick="$('urcmd').value='unban'">
<input type="submit" name="submit" value="删除选中玩家" onclick="$('urcmd').value='del'">
<input type="submit" name="submit" value="更新选中玩家的成就结构" onclick="$('urcmd').value='checkach'">
</td>
</tr>
<!--{/if}-->
......
<table><tr>
<td>
<!--{if ($cpl[16]) }--><img src="img/ach/16.gif"><!--{else}--><img src="img/achievement_not_done.gif"><!--{/if}-->
</td>
<td valign="top" align="left">
<b>只是运气好而已</b>
<!--{if ($cpl[16]) }--><span class="lime">[完成]</span><!--{else}--><span class="red">[未完成]</span><!--{/if}--><br>
<font color="yellow">完成次数: $prc[16]次<br></font>
<font color="olive">奖励: 积分150 <span class="evergreen">称号 生存者</span><br></font>
完成结局:最后幸存<br>
</td>
</tr></table>
<table><tr>
<td>
<!--{if ($cpl[17]) }--><img src="img/ach/17.gif"><!--{else}--><img src="img/achievement_not_done.gif"><!--{/if}-->
</td>
<td valign="top" align="left">
<b>麻烦制造机</b>
<!--{if ($cpl[17]) }--><span class="lime">[完成]</span><!--{else}--><span class="red">[未完成]</span><!--{/if}--><br>
<font color="yellow">完成次数: $prc[17]次<br></font>
<font color="olive">奖励: 切糕100 <span class="evergreen">称号 叶子钦定!</span><br></font>
完成结局:核爆全灭<br>
</td>
</tr></table>
<table><tr>
<td>
<!--{if ($cpl[18]) }--><img src="img/ach/18.gif"><!--{else}--><img src="img/achievement_not_done.gif"><!--{/if}-->
</td>
<td valign="top" align="left">
<b>最后的荣光</b>
<!--{if ($cpl[18]) }--><span class="lime">[完成]</span><!--{else}--><span class="red">[未完成]</span><!--{/if}--><br>
<font color="yellow">完成次数: $prc[18]次<br></font>
<font color="olive">奖励: 积分500 <span class="evergreen">称号 最后的荣光</span><br></font>
完成结局:锁定解除<br>
</td>
</tr></table>
<table><tr>
<td>
<!--{if ($cpl[19]) }--><img src="img/ach/19.gif"><!--{else}--><img src="img/achievement_not_done.gif"><!--{/if}-->
</td>
<td valign="top" align="left">
<b>奇迹的篝火</b>
<!--{if ($cpl[19]) }--><span class="lime">[完成]</span><!--{else}--><span class="red">[未完成]</span><!--{/if}--><br>
<font color="yellow">完成次数: $prc[19]次<br></font>
<font color="olive">奖励: 积分1000 切糕 1000 <span class="evergreen">称号 奇迹的篝火</span><br></font>
完成结局:幻境解离<br>
</td>
</tr></table>
<table><tr>
<td>
<!--{if ($cpl[34]=='999') }--><img src="img/ach/34_999.gif"><!--{/if}-->
<!--{if ($cpl[34]=='0') }--><img src="img/ach/N.gif"><!--{/if}-->
<!--{if (($cpl[34]!='999')&&($cpl[34]!='0')) }--><img src="img/ach/34.gif"><!--{/if}-->
</td>
<td valign="top" align="left">
<b>
<!--{if ($cpl[34]=='0') }-->逃避可耻?<!--{/if}-->
<!--{if ($cpl[34]=='1') }-->但它有用!<!--{/if}-->
<!--{if ($cpl[34]=='2') }-->直面现实<!--{/if}-->
<!--{if ($cpl[34]=='999') }-->逃脱大师<!--{/if}-->
</b>
<!--{if ($cpl[34]=='999') }--><span class="lime">[完成]</span><!--{else}--><!--{if ($cpl[34]==0) }--><span class="red">[未完成]</span><!--{else}--><span class="clan">[进行中]</span><!--{/if}--><!--{/if}--><br>
<font color="yellow">目前进度: {$prc[34]}次<br></font>
<!--{if ($cpl[34]=='0') }--><font color="olive">奖励: 积分10 切糕5<br><span class="evergreen">称号 实用主义者</span><br></font> 独自逃离幻境1次。<br><!--{/if}-->
<!--{if ($cpl[34]=='1') }--><font color="olive">奖励: 积分50 切糕50<br><span class="evergreen">称号 现实主义者</span><br></font> 独自逃离幻境36次。<br><!--{/if}-->
<!--{if ($cpl[34]=='2') }--><font color="olive">奖励: 积分100 切糕200<br><span class="evergreen">称号 脚底抹油</span><br></font> 独自逃离幻境101次。<br><!--{/if}-->
<!--{if ($cpl[34]=='999') }--><font color="olive">奖励: 积分100 切糕200<br><span class="evergreen">称号 脚底抹油</span><br></font> 独自逃离幻境101次。<br><!--{/if}-->
</td>
</tr></table>
\ No newline at end of file
......@@ -19,22 +19,33 @@
</td>
</tr>
</table>
<!-- 成就显示界面(新) -->
<table>
<tr><td>
{template user_end_achievement}
</td></tr>
<tr><td>
{template user_battle_achievement}
</td></tr>
<tr><td>
{template user_mixitem_achievement}
</td></tr>
<tr><td>
{template user_lifetime_achievement}
</td></tr>
<tr><td>
{template user_other_achievement}
</td></tr>
<!--{loop $atype $tid $tarr}-->
<tr>
<td>
<div class="subtitle" align="left">{$tarr['name']}</div>
{$tarr['desc']}
<table border="1">
<!--{loop $tarr['ach'] $key $aid}-->
<!--{if !$key%3}--><tr><!--{/if}-->
<!--{eval $adata = init_achtabledata($aid);}-->
<!--{if is_array($adata)}-->
<td width="300" align="left" valign="top">
<!--{eval include template($adata[0]);}-->
</td>
<!--{else}-->
<td width="300" align="left" valign="top">
<!--成就编号{$aid}加载错误。<br>请联系管理员。-->
<!--{eval include template('achievement_temp');}-->
</td>
<!--{/if}-->
<!--{if ($key == count($tarr['ach'])-1 || (!(($key+1)%3) && $key!=0))}--></tr><!--{/if}-->
<!--{/loop}-->
</table>
</td>
</tr>
<!--{/loop}-->
</table>
</center>
{template footer}
......
......@@ -8,8 +8,8 @@
<TR height="20">
<TD class="b1" width="30px"><span></span></TD>
<TD class="b1" width="60px"><span>胜利方式</span></TD>
<TD class="b1" width="95px"><span>优胜者名</span></TD>
<TD class="b1" width="75px"><span>头衔</span></TD>
<TD class="b1" width="95px"><span>优胜者名</span></TD>
<TD class="b1" width="80px"><span>头像</span></TD>
<TD class="b1"><span>游戏结束时间</span></TD>
<TD class="b1"><span>胜利者留言</span></TD>
......@@ -22,8 +22,21 @@
<TR height="20">
<TD class="b2" ><span>$gid</span></TD>
<TD class="b3" ><span>$gwin[$info['wmode']]</span></TD>
<TD class="b3" style="white-space: nowrap;"><!--{if $info['name']}--><span class="evergreen"><u><a href="user_profile.php?playerID=$info['name']">$info['name']</a></u></span><!--{else}--><span class="grey"></span><!--{/if}--></TD>
<TD class="b3" ><span>$info['nickinfo']</span></TD>
<TD class="b3" ><!--{if !empty($info['nickinfo'])}--><span>$info['nickinfo']<!--{else}--><span class="grey">-</span><!--{/if}--></TD>
<TD class="b3" style="white-space: nowrap;">
<!--{if $info['name']}-->
<!--{if is_array($info['name'])}-->
<span>{$info['teamID']}</span><br>
<!--{loop $info['name'] $tname}-->
<span class="evergreen"><u><a href="user_profile.php?playerID=$tname">$tname</a></u></span><br>
<!--{/loop}-->
<!--{else}-->
<span class="evergreen"><u><a href="user_profile.php?playerID=$info['name']">$info['name']</a></u></span>
<!--{/if}-->
<!--{else}-->
<span class="grey"></span>
<!--{/if}-->
</TD>
<TD class="b3"><span><img src="img/$info['iconImg']" style="width:70;height:40;"></span></TD>
<TD class="b3"><span>$info['date']</span><br><span>$info['time']</span></TD>
<TD class="b3" ><!--{if $info['motto']}--><span class="white">$info['motto']</span><!--{else}--><span class="grey"></span><!--{/if}--></TD>
......
......@@ -39,12 +39,41 @@ $winning_rate=$validgames?round($wingames/$validgames*100)."%":'0%';
include_once GAME_ROOT.'./include/game/achievement.func.php';
$ach=$udata['achievement'];
$n=$udata['username'];
if (!valid_achievement($ach)) {
if(!empty($udata['achrev'])) $udata['achrev'] = json_decode($udata['achrev'],true);
/*if (!valid_achievement($ach)) {
$ach=init_achievement($ach);
$db->query("UPDATE {$tablepre}users SET achievement='$ach' WHERE username='$n'" );
}*/ //已废弃
// 访问账户页面时,检查是否需要转化新版成就数据结构
if(!empty($udata['achievement']) && empty($udata['achrev']))
{
global $achievement_count;
include_once GAME_ROOT.'./include/game/achievement.func.php';
$alist = get_achlist();
$new_ach = Array(); $cpl = Array(); $prc = Array();
foreach($alist as $i => $iarr)
{
if($i <= 57)
{
$cpl[$i]=check_achievement($i,$n);
$prc[$i]=fetch_achievement($i,$n);
//新成就储存结构内,只会保存有进度的成就
if(!empty($cpl[$i]) || !empty($prc[$i]))
{
// 到达999阶段的成就 替换为配置中预设的达成等级
if($cpl[$i] == 999) $cpl[$i] = $iarr['lvl'] ?: count($iarr['name']);
$new_ach[$i]['l'] = $cpl[$i] ?: 0;
$new_ach[$i]['v'] = $prc[$i] ?: 0;
}
}
}
$new_ach = json_encode($new_ach);
$db->query("UPDATE {$tablepre}users SET achrev='$new_ach' WHERE username='".$udata['username']."'" );
$cpl = Array(); $prc = Array();
}
//解析成就的完成情况
global $gamecfg;
//解析成就的完成情况//已废弃
/*global $achievement_count;
require config("gamecfg",$gamecfg);
for ($i=0; $i<$achievement_count; $i++)
{
......@@ -52,8 +81,18 @@ for ($i=0; $i<$achievement_count; $i++)
$prc[$i]=fetch_achievement($i,$n);
//$ncp[$i]['s'] = $cpl[$i];
//$ncp[$i]['v'] = $prc[$i];
}
}*/
//$ncp = json_encode($ncp);
//$db->query("UPDATE {$tablepre}users SET achrev='$ncp' WHERE username='$n'" );
//解析成就的完成情况
$alist = get_achlist();
$atype = get_achtype();
foreach($alist as $aid => $arr)
{
$cpl[$aid] = isset($udata['achrev'][$aid]['l']) ? $udata['achrev'][$aid]['l'] : 0;
//这一条是临时为了兼容旧版本数据 之后把旧成就完全整理好后,就可以把这条注释掉了
if($cpl[$aid] == $alist[$aid]['lvl']) $cpl[$aid] = 999;
$prc[$aid] = isset($udata['achrev'][$aid]['v']) ? $udata['achrev'][$aid]['v'] : 0;
}
include template('user_profile');
......@@ -27,6 +27,33 @@ if($mode == 'enter') {
if($db->num_rows($result) > $iplimit) { gexit($_ERROR['ip_limit'],__file__,__line__); }
}
// 加入游戏时,检查是否需要转化新版成就数据结构
if(!empty($udata['achievement']) && empty($udata['achrev']))
{
include_once GAME_ROOT.'./include/game/achievement.func.php';
$alist = get_achlist();
$new_ach = Array();$cpl = Array(); $prc = Array();
foreach($alist as $i => $iarr)
{
if($i <= 57)
{
$cpl[$i]=check_achievement($i,$n);
$prc[$i]=fetch_achievement($i,$n);
//新成就储存结构内,只会保存有进度的成就
if(!empty($cpl[$i]) || !empty($prc[$i]))
{
// 到达999阶段的成就 替换为配置中预设的达成等级
if($cpl[$i] == 999) $cpl[$i] = $iarr['lvl'] ?: count($iarr['name']);
$new_ach[$i]['l'] = $cpl[$i] ?: 0;
$new_ach[$i]['v'] = $prc[$i] ?: 0;
}
}
}
$new_ach = json_encode($new_ach);
$db->query("UPDATE {$tablepre}users SET achrev='$new_ach' WHERE username='".$udata['username']."'" );
$cpl = Array(); $prc = Array();
}
$ip = real_ip();
$db->query("UPDATE {$tablepre}users SET gender='$gender', nick='$nick', icon='$icon', motto='$motto', killmsg='$killmsg', lastword='$lastword' WHERE username='".$udata['username']."'" );
if($validnum >= $validlimit) {
......@@ -73,13 +100,13 @@ if($mode == 'enter') {
$arhe = $arae = $arfe = $arte = 0;
$arhs = $aras = $arfs = $arts = 0;
//获取已经完成的成就
include_once GAME_ROOT.'./include/game/achievement.func.php';
//获取已经完成的成就 已废弃
/*include_once GAME_ROOT.'./include/game/achievement.func.php';
$achievement = $udata['achievement'];
if (!valid_achievement($achievement)) {
$achievement=init_achievement($achievement);
$db->query("UPDATE {$tablepre}users SET achievement='$achievement' WHERE username='".$name."'" ); //如果第一次游戏,初始化成就
}
}*/
for ($i=0; $i<=6; $i++){$itm[$i] = $itmk[$i] = $itmsk[$i] = ''; $itme[$i] = $itms[$i] = 0;}
$itm[1] = '面包'; $itmk[1] = 'HH'; $itme[1] = 120; $itms[1] = 15;
$itm[2] = '矿泉水'; $itmk[2] = 'HS'; $itme[2] = 140; $itms[2] = 15;
......
......@@ -24,15 +24,25 @@ if($command == 'info') {
}
} else {
if(!isset($start) || !$start){
$result = $db->query("SELECT gid,name,nick,icon,gd,wep,wmode,getime,motto,hdp,hdmg,hkp,hkill FROM {$tablepre}winners ORDER BY gid desc LIMIT $winlimit");
$result = $db->query("SELECT gid,name,nick,icon,gd,wep,wmode,teamID,teamMate,teamIcon,getime,motto,hdp,hdmg,hkp,hkill FROM {$tablepre}winners ORDER BY gid desc LIMIT $winlimit");
} else {
$result = $db->query("SELECT gid,name,nick,icon,gd,wep,wmode,getime,motto,hdp,hdmg,hkp,hkill FROM {$tablepre}winners WHERE gid<='$start' ORDER BY gid desc LIMIT $winlimit");
$result = $db->query("SELECT gid,name,nick,icon,gd,wep,wmode,teamID,teamMate,teamIcon,getime,motto,hdp,hdmg,hkp,hkill FROM {$tablepre}winners WHERE gid<='$start' ORDER BY gid desc LIMIT $winlimit");
}
while($wdata = $db->fetch_array($result)) {
$wdata['date'] = date("Y-m-d",$wdata['getime']);
$wdata['time'] = date("H:i:s",$wdata['getime']);
$wdata['iconImg'] = $wdata['gd'] == 'f' ? 'f_'.$wdata['icon'].'.gif' : 'm_'.$wdata['icon'].'.gif';
$wdata['nickinfo'] = !empty($wdata['nick']) ? get_title_desc($wdata['nick']) : '-';
if(!empty($wdata['teamMate']))
{
$wdata['teamID'] = '<span class="gold">【团队 - '.$wdata['teamID'].'】</span>';
$wdata['iconImg'] = 't_'.$wdata['teamIcon'].'.gif';
$wdata['nickinfo'] = '<span class="gold">团队胜利</span>';
$wdata['name'] = json_decode($wdata['teamMate'],true);
}
else
{
$wdata['iconImg'] = $wdata['gd'] == 'f' ? 'f_'.$wdata['icon'].'.gif' : 'm_'.$wdata['icon'].'.gif';
$wdata['nickinfo'] = !empty($wdata['nick']) ? get_title_desc($wdata['nick']) : '';
}
$winfo[$wdata['gid']] = $wdata;
}
$listnum = floor($gamenum/$winlimit);
......
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