3 if (! defined (
'IN_GAME' )) {
4 exit (
'Access Denied' );
7 function death($death, $kname =
'', $ktype = 0, $annex =
'') {
8 global
$now,
$db,
$tablepre,
$alivenum,
$deathnum, $name, $state, $deathtime, $type, $lvl, $bid,
$killmsginfo,
$typeinfo, $hp, $mhp, $wp, $wk, $wg, $wc, $wd, $wf, $sp, $msp, $club, $pls , $nick;
29 }
elseif ($death ==
'poison') {
31 }
elseif ($death ==
'trap') {
33 }
elseif ($death ==
'event') {
35 }
elseif ($death ==
'hack') {
37 }
elseif ($death ==
'pmove') {
39 }
elseif ($death ==
'hsmove') {
41 }
elseif ($death ==
'umove') {
43 }
elseif ($death ==
'button') {
45 }
elseif ($death ==
'suiside') {
47 }
elseif ($death ==
'gradius') {
49 }
elseif ($death ==
'SCP') {
51 }
elseif ($death ==
'salv'){
53 }
elseif ($death ==
'kagari1'){
55 }
elseif ($death ==
'kagari2'){
57 }
elseif ($death ==
'kagari3'){
61 }
elseif ($death ==
'fake_dn'){
68 if ($ktype == 0 && $kname) {
69 $result = $db->query (
"SELECT killmsg FROM {$tablepre}users WHERE username = '$kname'" );
70 $killmsg = $db->result (
$result, 0 );
71 }
elseif ($ktype != 0 && $kname) {
72 $killmsg = $killmsginfo [$ktype];
73 $kname =
"$typeinfo[$ktype] $kname";
80 $result = $db->query (
"SELECT lastword FROM {$tablepre}users WHERE username = '$name'" );
81 $lastword = $db->result (
$result, 0 );
82 $lwname = $typeinfo [$type] .
' ' . $name;
85 $db->query (
"INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$now','$lwname','$pls','$lastword')" );
88 $result = $db->query(
"SELECT nick FROM {$tablepre}players WHERE name = '$kname' AND type = '$type'");
89 $knick = $db->result(
$result, 0);
90 addnews ( $now,
'death' . $state, $name, $type, $knick.
' '.$kname, $annex, $lastword );
93 if ($type==0 && $club==99 && ($death==
"N" || $death==
"P" || $death==
"K" || $death==
"G" || $death==
"C" || $death==
"D" || $death==
"F" || $death==
"J" || $death==
"trap"))
109 function kill($death, $dname, $dtype = 0, $dpid = 0, $annex =
'') {
110 global
$now,
$db,
$tablepre,
$alivenum,
$deathnum, $name, $w_state, $type, $pid,
$typeinfo, $pls,
$lwinfo, $w_achievement;
112 if (! $death || ! $dname) {
118 }
elseif ($death ==
'P') {
120 }
elseif ($death ==
'K') {
122 }
elseif ($death ==
'G') {
124 }
elseif ($death ==
'J') {
126 }
elseif ($death ==
'C') {
128 }
elseif ($death ==
'D') {
130 }
elseif ($death ==
'F') {
132 }
elseif ($death ==
'dn') {
139 $result = $db->query (
"SELECT killmsg FROM {$tablepre}users WHERE username = '$name'" );
140 $killmsg = $db->result (
$result, 0 );
152 $gamevars[
'sanmadead'] = 1;
155 $lwname = $typeinfo [$dtype] .
' ' . $dname;
156 if (is_array ( $lwinfo [$dtype] )) {
157 $lastword = $lwinfo [$dtype] [$dname];
159 $lastword = $lwinfo [$dtype];
162 $db->query (
"INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$now','$lwname','$pls','$lastword')" );
164 $lwname = $typeinfo [$dtype] .
' ' . $dname;
165 $result = $db->query (
"SELECT lastword FROM {$tablepre}users WHERE username = '$dname'" );
166 $lastword = $db->result (
$result, 0 );
168 $db->query (
"INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$now','$lwname','$pls','$lastword')" );
170 $result = $db->query(
"SELECT nick FROM {$tablepre}players WHERE name = '$name' AND type = '$type'");
171 $knick = $db->result(
$result, 0);
172 addnews ( $now,
'death' . $w_state, $dname, $dtype, $knick.
' '.$name, $annex, $lastword );
174 $result = $db->query(
"SELECT * FROM {$tablepre}players WHERE pid=$dpid" );
175 $res=$db->fetch_array(
$result);
177 if ($res[
'type']==0 && $res[
'club']==99 && ($death==
"N" || $death==
"P" || $death==
"K" || $death==
"G" || $death==
"C" ||$death==
"D" || $death==
"F" || $death==
"J" || $death==
"trap"))
179 addnews($now,
'revival',$res[
'name']);
180 $db->query (
"UPDATE {$tablepre}players SET hp=mhp WHERE pid=$dpid" );
181 $db->query (
"UPDATE {$tablepre}players SET sp=msp WHERE pid=$dpid" );
182 $db->query (
"UPDATE {$tablepre}players SET club=17 WHERE pid=$dpid" );
183 $db->query (
"UPDATE {$tablepre}players SET state=0 WHERE pid=$dpid" );
187 if (!$revivaled) $db->query (
"UPDATE {$tablepre}players SET hp='0',endtime='$now',deathtime='$now',bid='$pid',state='$w_state' WHERE pid=$dpid" );
203 function lvlup(&$lvl, &$exp, $isplayer = 1) {
205 $up_exp_temp = round ( (2 * $lvl + 1) * $baseexp );
206 if ($exp >= $up_exp_temp && $lvl < 255) {
212 global ${$perfix .
'name'}, ${$perfix .
'hp'}, ${$perfix .
'mhp'}, ${$perfix .
'sp'}, ${$perfix .
'msp'}, ${$perfix .
'att'}, ${$perfix .
'def'}, ${$perfix .
'upexp'}, ${$perfix .
'club'}, ${$perfix .
'type'}, ${$perfix .
'skillpoint'};
213 global ${$perfix .
'wp'}, ${$perfix .
'wk'}, ${$perfix .
'wc'}, ${$perfix .
'wg'}, ${$perfix .
'wd'}, ${$perfix .
'wf'};
214 $sklanginfo = Array (
'wp' =>
'殴熟',
'wk' =>
'斩熟',
'wg' =>
'射熟',
'wc' =>
'投熟',
'wd' =>
'爆熟',
'wf' =>
'灵熟',
'all' =>
'全系熟练度' );
215 $sknlist = Array (1 =>
'wp', 2 =>
'wk', 3 =>
'wc', 4 =>
'wg', 5 =>
'wd', 9 =>
'wf', 16 =>
'all' );
216 $skname = $sknlist [${$perfix .
'club'}];
218 $lvup = 1 + floor ( ($exp - $up_exp_temp) / $baseexp / 2 );
219 $lvup = $lvup > 255 - $lvl ? 255 - $lvl : $lvup;
220 $lvuphp = $lvupatt = $lvupdef = $lvupskill = $lvupsp = $lvupspref = 0;
221 for(
$i = 0;
$i < $lvup;
$i += 1) {
222 if (${$perfix .
'club'} == 13) {
223 $lvuphp += rand ( 14, 18 );
225 $lvuphp += rand ( 8, 10 );
227 $lvupsp += rand( 4,6);
228 if (${$perfix .
'club'} == 14) {
229 $lvupatt += rand ( 4, 6 );
230 $lvupdef += rand ( 5, 8 );
232 $lvupatt += rand ( 2, 4 );
233 $lvupdef += rand ( 3, 5 );
236 if ($skname ==
'all') {
237 $lvupskill += rand ( 2, 4 );
238 }
elseif ($skname ==
'wd' || $skname ==
'wf') {
239 $lvupskill += rand ( 3, 5 );
241 $lvupskill += rand ( 4, 6 );
243 $lvupspref += round(${$perfix .
'msp'} * 0.1);
246 $up_exp_temp = round ( (2 * $lvl + 1) * $baseexp );
251 ${$perfix .
'upexp'} = $up_exp_temp;
252 ${$perfix .
'hp'} += $lvuphp;
253 ${$perfix .
'mhp'} += $lvuphp;
254 ${$perfix .
'sp'} += $lvupsp;
255 ${$perfix .
'msp'} += $lvupsp;
256 ${$perfix .
'att'} += $lvupatt;
257 ${$perfix .
'def'} += $lvupdef;
258 ${$perfix .
'skillpoint'} += $lvup;
259 if ($skname ==
'all') {
260 ${$perfix .
'wp'} += $lvupskill;
261 ${$perfix .
'wk'} += $lvupskill;
262 ${$perfix .
'wg'} += $lvupskill;
263 ${$perfix .
'wc'} += $lvupskill;
264 ${$perfix .
'wd'} += $lvupskill;
265 ${$perfix .
'wf'} += $lvupskill;
267 ${$perfix . $skname} += $lvupskill;
270 if (${$perfix .
'sp'}+$lvupspref >= ${$perfix .
'msp'}) {
271 $lvupspref = ${$perfix .
'msp'} - ${$perfix .
'sp'};
274 ${$perfix .
'sp'} += $lvupspref;
276 $sklog =
",{$sklanginfo[$skname]}+{$lvupskill}";
280 $log .=
"<span class=\"yellow\">你升了{$lvup}级!生命上限+{$lvuphp},体力上限+{$lvupsp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog},体力恢复了{$lvupspref},获得了{$lvup}点技能点!</span><br>";
283 $w_log =
"<span class=\"yellow\">你升了{$lvup}级!生命上限+{$lvuphp},体力上限+{$lvupsp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog},体力恢复了{$lvupspref},获得了{$lvup}点技能点!</span><br>";
284 logsave ( $w_pid, $now, $w_log,
's');
370 global
$now,
$log, $mode,
$cmd, $state,
$endtime, $hp, $mhp, $sp, $msp,
$sleep_time,
$heal_time,
$restinfo, $pose,
$inf,$club,
$exdmginf;
376 $upsp = round ( $msp * $resttime / $sleep_time / 100 );
380 if (strpos ( $inf,
'b' ) !==
false) {
381 $upsp = round ( $upsp / 2 );
390 $upsp = $sp - $oldsp;
391 $log .=
"你的体力恢复了<span class=\"yellow\">$upsp</span>点。<br>";
396 $uphp = round ( $mhp * $resttime / $heal_time / 100 );
400 if (strpos ( $inf,
'b' ) !==
false) {
401 $uphp = round ( $uphp / 2 );
410 $uphp = $hp - $oldhp;
411 $log .=
"你的生命恢复了<span class=\"yellow\">$uphp</span>点。<br>";
416 $upsp = round ( $msp * $resttime / $sleep_time / 100 );
420 if (strpos ( $inf,
'b' ) !==
false) {
421 $upsp = round ( $upsp / 2 );
430 $upsp = $sp - $oldsp;
432 $uphp = round ( $mhp * $resttime / $heal_time / 100 );
436 if (strpos ( $inf,
'b' ) !==
false) {
437 $uphp = round ( $uphp / 2 );
446 $uphp = $hp - $oldhp;
447 $log .=
"你的体力恢复了<span class=\"yellow\">$upsp</span>点,生命恢复了<span class=\"yellow\">$uphp</span>点。<br>";
453 if (strpos ( $inf,
'b' ) !==
false) {
456 $spinf = preg_replace(
"/[h|b|a|f]/",
"", $inf);
457 $spinflength = strlen($spinf);
461 $dice = rand(0,$refintv);
462 if($dice + 15 < $resttime){
463 $infno = rand(0,$spinflength-1);
464 $refinfstr = substr($spinf,$infno,1);
465 $inf = str_replace($refinfstr,
'',$inf);
466 $spinf = str_replace($refinfstr,
'',$spinf);
467 $log .=
"<span class=\"yellow\">你从{$exdmginf[$refinfstr]}状态中恢复了!</span><br>";
471 $resttime -= $refintv;
472 }
while ($resttime > 0 && $spinflength > 0);
474 $log .=
"也许是时间不够吧……你没有治好任何异常状态。<br>";
481 if ($command !=
'rest') {
lvlup(&$lvl, &$exp, $isplayer=1)
logsave($pid, $time, $log= '', $type= 's')
addnews($t=0, $n= '', $a='', $b='', $c= '', $d= '', $e= '')
kill($death, $dname, $dtype=0, $dpid=0, $annex= '')
【生存者数:<?php echo $alivenum?> 人】< input type="button"value="显示全部幸存者"onClick="$('alivemode').value='all';$('gbmode').value='none';postCmd('alive','alive.php');"></p > if($gamblingon &&$gamestate >=20) elseif($gamblingon &&$gamestate<=10)
if(!defined( 'IN_GAME')) death($death, $kname= '', $ktype=0, $annex= '')
if(!$cuser||!$cpass) $result