Tokiwa Battle Royale  GE777
A PHP Battle Royale inspired game
 All Data Structures Namespaces Files Functions Variables Pages
special.func.php
Go to the documentation of this file.
1 <?php
2 
3 
4 if(!defined('IN_GAME')) {
5  exit('Access Denied');
6 }
7 
8 function getword(){
9  global $db,$tablepre,$name,$motto,$lastword,$killmsg;
10 
11  $result = $db->query("SELECT * FROM {$tablepre}users WHERE username='$name'");
12  $userinfo = $db->fetch_array($result);
13  $motto = $userinfo['motto'];
14  $lastword = $userinfo['lastword'];
15  $killmsg = $userinfo['killmsg'];
16 
17 }
18 
19 function chgword($nmotto,$nlastword,$nkillmsg) {
20  global $db,$tablepre,$name,$log;
21 
22  $result = $db->query("SELECT * FROM {$tablepre}users WHERE username='$name'");
23  $userinfo = $db->fetch_array($result);
24 
25 // foreach ( Array('<','>',';',',','\\\'','\\"') as $value ) {
26 // if(strpos($nmotto,$value)!==false){
27 // $nmotto = str_replace ( $value, '', $nmotto );
28 // }
29 // if(strpos($nlastword,$value)!==false){
30 // $nlastword = str_replace ( $value, '', $nlastword );
31 // }
32 // if(strpos($nkillmsg,$value)!==false){
33 // $nkillmsg = str_replace ( $value, '', $nkillmsg );
34 // }
35 // }
36 
37 
38  if($nmotto != $userinfo['motto']) {
39  $log .= $nmotto == '' ? '口头禅已清空。' : '口头禅变更为<span class="yellow">'.$nmotto.'</span>。<br>';
40  }
41  if($nlastword != $userinfo['lastword']) {
42  $log .= $nlastword == '' ? '遗言已清空。' : '遗言变更为<span class="yellow">'.$nlastword.'</span>。<br>';
43  }
44  if($nkillmsg != $userinfo['killmsg']) {
45  $log .= $nkillmsg == '' ? '杀人留言已清空。' : '杀人留言变更为<span class="yellow">'.$nkillmsg.'</span>。<br>';
46  }
47 
48  $db->query("UPDATE {$tablepre}users SET motto='$nmotto', lastword='$nlastword', killmsg='$nkillmsg' WHERE username='$name'");
49 
50  $mode = 'command';
51  return;
52 }
53 
54 function chgpassword($oldpswd,$newpswd,$newpswd2){
55  global $db,$tablepre,$name,$log;
56 
57  if (!$oldpswd || !$newpswd || !$newpswd2){
58  $log .= '放弃了修改密码。<br />';
59  $mode = 'command';
60  return;
61  } elseif ($newpswd !== $newpswd2) {
62  $log .= '<span class="red">两次输入的新密码不一致。</span><br />';
63  $mode = 'command';
64  return;
65  }
66 
67  $oldpswd = md5($oldpswd);$newpswd = md5($newpswd);
68 
69  $result = $db->query("SELECT * FROM {$tablepre}users WHERE username='$name'");
70  $userinfo = $db->fetch_array($result);
71 
72  if($oldpswd == $userinfo['password']){
73  $db->query("UPDATE {$tablepre}users SET `password` ='$newpswd' WHERE username='$name'");
74  $log .= '<span class="yellow">密码已修改!</span><br />';
75 
76  //include_once GAME_ROOT.'./include/global.func.php';
77 
78  gsetcookie('pass',$newpswd);
79  $mode = 'command';
80  return;
81  }else{
82  $log .= '<span class="red">原密码输入错误!</span><br />';
83  $mode = 'command';
84  return;
85  }
86 }
87 function oneonone($sb,$sf){
88  global $db,$gold,$mode,$now,$tablepre,$log,$name,$art,$arte,$artk,$arts,$artsk;
89  $mode = 'command';
90  if($sb == $sf){
91  $log .= "不能自我约战。<br>";
92  return;
93  }
94  if(($artk=='XX')||($artk=='XY')){
95  $log .= "不能重复约战。<br>";
96  return;
97  }
98  $result = $db->query("SELECT * FROM {$tablepre}players WHERE name='$sb' AND type = 0");
99  $edata = $db->fetch_array($result);
100  $a1=$edata['art'];
101  $a2=$edata['artk'];
102  $a3=$edata['pid'];
103  $a4=$edata['hp'];
104  if (!$a3){
105  $log .= "该ID不存在!<br>";
106  return;
107  }
108  if (!$a4){
109  $log .= "不能和死人约战。<br>";
110  return;
111  }
112  $result = $db->query("SELECT * FROM {$tablepre}players WHERE name='$sf' AND type = 0");
113  $edata = $db->fetch_array($result);
114  $a1=$edata['money'];
115  if ($a1<1500){
116  $log .= "需要携带1500G才能约战。<br>";
117  return;
118  }
119  $result = $db->query("SELECT * FROM {$tablepre}users WHERE username='$sb'");
120  $edata = $db->fetch_array($result);
121  $a1=$edata['ip'];
122  $result = $db->query("SELECT * FROM {$tablepre}users WHERE username='$sf'");
123  $edata = $db->fetch_array($result);
124  $a2=$edata['ip'];
125  if($a1 == $a2){
126  //$log .= "不能自我约战。<br>";
127  //return;
128  }
129  if(preg_match('/[,|<|>|&|;|#|"|\s|\p{C}]+/u',$sb)) { $log.='请不要尝试注入……';return; }
130  $art=$sb;$artk='XY';$arte=1;$arts=1;$artsk='';
131  $taunt=$sf.'喊道:“'.$sb.',来,战♂个♂痛♂快!”';
132  $db->query("INSERT INTO {$tablepre}chat (type,`time`,send,msg) VALUES ('4','$now','$name','$taunt')");
133  $result = $db->query("SELECT * FROM {$tablepre}players WHERE name='$sb' AND type = 0");
134  $edata = $db->fetch_array($result);
135  $a1=$edata['art'];
136  $a2=$edata['artk'];
137  if (($a1==$sf)&&($a2=='XY')){
138  $artk='XX';
139  $db->query ( "UPDATE {$tablepre}players SET artk='XX' WHERE `name` ='$sb' AND type=0 ");
140  $taunt='约战成立!';
141  $db->query("INSERT INTO {$tablepre}chat (type,`time`,send,msg) VALUES ('4','$now','$name','$taunt')");
142  }
143  return;
144 }
145 
146 function adtsk(){
147  global $log,$mode,$club,$wep,$wepk,$wepe,$weps,$wepsk;
148  if($wepk == 'WN' || !$wepe || !$weps){
149  $log .= '<span class="red">你没有装备武器,无法改造!</span><br />';
150  $mode = 'command';
151  return;
152  }
153  if (strpos($wepsk,'j')!==false){
154  $log.='多重武器不能改造。<br>';
155  $mode='command';
156  return;
157  }
158  if($club == 7){//电脑社,电气改造
159  $position = 0;
160  foreach(Array(1,2,3,4,5,6) as $imn){
161  global ${'itm'.$imn},${'itmk'.$imn},${'itme'.$imn},${'itms'.$imn},${'itmsk'.$imn};
162  if(strpos(${'itmk'.$imn},'B')===0 && ${'itme'.$imn} > 0 ){
163  $position = $imn;
164  break;
165  }
166  }
167  if($position){
168  if(strpos($wepsk,'e')!==false){
169  $log .= '<span class="red">武器已经带有电击属性,不用改造!</span><br />';
170  $mode = 'command';
171  return;
172  }elseif(strlen($wepsk)>=5){
173  $log .= '<span class="red">武器属性数目达到上限,无法改造!</span><br />';
174  $mode = 'command';
175  return;
176  }
177 
178 
179  ${'itms'.$position}-=1;
180  $itm = ${'itm'.$position};
181  $log .= "<span class=\"yellow\">用{$itm}改造了{$wep},{$wep}增加了电击属性!</span><br />";
182  $wep = '电气'.$wep;
183  $wepsk .= 'e';
184  if(${'itms'.$position} == 0){
185  $log .= "<span class=\"red\">$itm</span>用光了。<br />";
186  ${'itm'.$position} = ${'itmk'.$position} = ${'itmsk'.$position} = '';
187  ${'itme'.$position} =${'itms'.$position} =0;
188  }
189  $mode = 'command';
190  return;
191  }else{
192  $log .= '<span class="red">你没有电池,无法改造武器!</span><br />';
193  $mode = 'command';
194  return;
195  }
196  }elseif($club == 8){//带毒改造
197  $position = 0;
198  foreach(Array(1,2,3,4,5,6) as $imn){
199  global ${'itm'.$imn},${'itmk'.$imn},${'itme'.$imn},${'itms'.$imn},${'itmsk'.$imn};
200  if(${'itm'.$imn} == '毒药' && ${'itmk'.$imn} == 'Y' && ${'itme'.$imn} > 0 ){
201  $position = $imn;
202  break;
203  }
204  }
205  if($position){
206  if(strpos($wepsk,'p')!==false){
207  $log .= '<span class="red">武器已经带毒,不用改造!</span><br />';
208  $mode = 'command';
209  return;
210  }elseif(strlen($wepsk)>=5){
211  $log .= '<span class="red">武器属性数目达到上限,无法改造!</span><br />';
212  $mode = 'command';
213  return;
214  }
215  $wepsk .= 'p';
216  $log .= "<span class=\"yellow\">用毒药为{$wep}淬毒了,{$wep}增加了带毒属性!</span><br />";
217  $wep = '毒性'.$wep;
218  ${'itms'.$position}-=1;
219  $itm = ${'itm'.$position};
220  if(${'itms'.$position} == 0){
221  $log .= "<span class=\"red\">$itm</span>用光了。<br />";
222  ${'itm'.$position} = ${'itmk'.$position} = ${'itmsk'.$position} = '';
223  ${'itme'.$position} =${'itms'.$position} =0;
224  }
225  $mode = 'command';
226  return;
227  }else{
228  $log .= '<span class="red">你没有毒药,无法给武器淬毒!</span><br />';
229  $mode = 'command';
230  return;
231  }
232  }else{
233  $log .= '<span class="red">你不懂得如何改造武器!</span><br />';
234  $mode = 'command';
235  return;
236  }
237 }
238 
239 function trap_adtsk($which){
240  global $log,$mode,$club,${'itm'.$which},${'itmk'.$which},${'itme'.$which},${'itms'.$which};
241  if(strpos(${'itmk'.$which},'T')!==0){
242  $log .= '<span class="red">这个物品不是陷阱,无法改造!</span><br />';
243  $mode = 'command';
244  return;
245  }
246  if(${'itmk'.$which}=='TOc' || ${'itmk'.$which}=='TNc'){
247  $log .= '<span class="red">奇迹陷阱不允许改造!</span><br />';
248  $mode = 'command';
249  return;
250  }
251  if($club == 7){//电脑社,电气改造
252  if (strpos(${'itm'.$which},'电气')!==false){
253  $log .= '<span class="red">陷阱已经带有电击属性,不用改造!</span><br />';
254  $mode='command';
255  return;
256  }
257  $position = 0;
258  foreach(Array(1,2,3,4,5,6) as $imn){
259  global ${'itm'.$imn},${'itmk'.$imn},${'itme'.$imn},${'itms'.$imn},${'itmsk'.$imn};
260  if(strpos(${'itmk'.$imn},'B')===0 && ${'itme'.$imn} > 0 ){
261  $position = $imn;
262  break;
263  }
264  }
265  if($position){
266  ${'itms'.$position}-=1;
267  $itm = ${'itm'.$position}; $citm=${'itm'.$which};
268  $log .= "<span class=\"yellow\">用{$itm}改造了{$citm},{$citm}增加了电击属性!</span><br />";
269  ${'itm'.$which} = '电气'.${'itm'.$which};
270  if(${'itms'.$position} == 0){
271  $log .= "<span class=\"red\">$itm</span>用光了。<br />";
272  ${'itm'.$position} = ${'itmk'.$position} = ${'itmsk'.$position} = '';
273  ${'itme'.$position} =${'itms'.$position} =0;
274  }
275  $mode = 'command';
276  return;
277  }else{
278  $log .= '<span class="red">你没有电池,无法改造陷阱!</span><br />';
279  $mode = 'command';
280  return;
281  }
282  }elseif($club == 8){//带毒改造
283  if (strpos(${'itm'.$which},'毒性')!==false){
284  $log .= '<span class="red">陷阱已经带毒,不用改造!</span><br />';
285  $mode='command';
286  return;
287  }
288  $position = 0;
289  foreach(Array(1,2,3,4,5,6) as $imn){
290  global ${'itm'.$imn},${'itmk'.$imn},${'itme'.$imn},${'itms'.$imn},${'itmsk'.$imn};
291  if(${'itm'.$imn} == '毒药' && ${'itmk'.$imn} == 'Y' && ${'itme'.$imn} > 0 ){
292  $position = $imn;
293  break;
294  }
295  }
296  if($position){
297  ${'itms'.$position}-=1;
298  $itm = ${'itm'.$position}; $citm=${'itm'.$which};
299  $log .= "<span class=\"yellow\">用{$itm}改造了{$citm},{$citm}增加了带毒属性!</span><br />";
300  ${'itm'.$which} = '毒性'.${'itm'.$which};
301  if(${'itms'.$position} == 0){
302  $log .= "<span class=\"red\">$itm</span>用光了。<br />";
303  ${'itm'.$position} = ${'itmk'.$position} = ${'itmsk'.$position} = '';
304  ${'itme'.$position} =${'itms'.$position} =0;
305  }
306  $mode = 'command';
307  return;
308  }else{
309  $log .= '<span class="red">你没有毒药,无法给武器淬毒!</span><br />';
310  $mode = 'command';
311  return;
312  }
313  }else{
314  $log .= '<span class="red">你不懂得如何改造陷阱!</span><br />';
315  $mode = 'command';
316  return;
317  }
318 }
319 
320 function syncro($sb){
321  global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$name,$nick;
322  list($n,$k,$e,$s,$sk,$r)=explode('_',$sb);
323  $itm0=$n;$itmk0=$k;$itme0=$e;$itms0=$s;$itmsk0=$sk;
324  if ($r>0) {addnews($now,'syncmix',$nick.' '.$name,$itm0);}
325  else {addnews($now,'overmix',$nick.' '.$name,$itm0);}
326  include_once GAME_ROOT.'./include/game/itemmain.func.php';
327  itemget();
328  return;
329 }
330 function weaponswap(){
331  global $log,$mode,$club,$wep,$wepk,$wepe,$weps,$wepsk,$gamecfg;
332  if (strpos($wepsk,'j')===false){
333  $log.='你的武器不能变换。<br>';
334  $mode = 'command';
335  return;
336  }
337  $oldw=$wep;
338  $file = config('wepchange',$gamecfg);
339  $wlist = openfile($file);
340  $wnum = count($wlist)-1;
341  for ($i=0;$i<=$wnum;$i++){
342  list($on,$nn,$nk,$ne,$ns,$nsk) = explode(',',$wlist[$i]);
343  if ($wep==$on){
344  $wep=$nn;$wepk=$nk;$wepe=$ne;$weps=$ns;$wepsk=$nsk;
345  $log.="<span class=\"yellow\">{$oldw}</span>变换成了<span class=\"yellow\">{$wep}</span>。<br>";
346  return;
347  }
348  }
349  $log.="<span class=\"yellow\">{$oldw}</span>由于改造或其他原因不能变换。<br>";
350 }
351 function chginf($infpos){
352  global $log,$mode,$inf,$inf_sp,$inf_sp_2,$sp,$infinfo,$exdmginf,$club;
353  $normalinf = Array('h','b','a','f');
354  if(!$infpos){$mode = 'command';return;}
355  if($infpos == 'A'){
356  if($club == 16){
357  $spdown = 0;
358  foreach($normalinf as $value){
359  if(strpos($inf,$value)!== false){
360  $spdown += $inf_sp;
361  }
362  }
363  if(!$spdown){
364  $log .= '你并没有受伤!';
365  $mode = 'command';
366  return;
367  }elseif($sp <= $spdown){
368  $log .= "包扎全部伤口需要{$spdown}点体力,先回复体力吧!";
369  $mode = 'command';
370  return;
371  }
372  $inf = str_replace('h','',$inf);
373  $inf = str_replace('b','',$inf);
374  $inf = str_replace('a','',$inf);
375  $inf = str_replace('f','',$inf);
376  $sp -= $spdown;
377  $log .= "消耗<span class=\"yellow\">$spdown</span>点体力,全身伤口都包扎好了!";
378  $mode = 'command';
379  return;
380  }else{
381  $log .= '你不懂得怎样快速包扎伤口!';
382  $mode = 'command';
383  return;
384  }
385  }elseif(in_array($infpos,$normalinf) && strpos($inf,$infpos) !== false){ //普通伤口
386  if($sp <= $inf_sp) {
387  $log .= "包扎伤口需要{$inf_sp}点体力,先回复体力吧!";
388  $mode = 'command';
389  return;
390  } else {
391  $inf = str_replace($infpos,'',$inf);
392  $sp -= $inf_sp;
393  $log .= "消耗<span class=\"yellow\">$inf_sp</span>点体力,{$infinfo[$infpos]}<span class=\"red\">部</span>的伤口已经包扎好了!";
394  $mode = 'command';
395  return;
396  }
397  }elseif(strpos($inf,$infpos) !== false){ //特殊状态
398  if($club == 16){
399  if($sp <= $inf_sp_2) {
400  $log .= "处理异常状态需要{$inf_sp_2}点体力,先回复体力吧!";
401  $mode = 'command';
402  return;
403  } else {
404  $inf = str_replace($infpos,'',$inf);
405  $sp -= $inf_sp_2;
406  $log .= "消耗<span class=\"yellow\">$inf_sp_2</span>点体力,{$exdmginf[$infpos]}状态已经完全治愈了!";
407  $mode = 'command';
408  return;
409  }
410  }else{
411  $log .= '你不懂得怎样治疗异常状态!';
412  $mode = 'command';
413  return;
414  }
415  }else{
416  $log .= '你不需要包扎这个伤口!';
417  $mode = 'command';
418  return;
419  }
420 }
421 
422 function chkpoison($itmn){
423  global $log,$mode,$club;
424  if($club != 8){
425  $log .= '你不会查毒。';
426  $mode = 'command';
427  return;
428  }
429 
430  if ( $itmn < 1 || $itmn > 6 ) {
431  $log .= '此道具不存在,请重新选择。';
432  $mode = 'command';
433  return;
434  }
435 
436  global ${'itm'.$itmn},${'itmk'.$itmn},${'itme'.$itmn},${'itms'.$itmn},${'itmsk'.$itmn};
437  $itm = & ${'itm'.$itmn};
438  $itmk = & ${'itmk'.$itmn};
439  $itme = & ${'itme'.$itmn};
440  $itms = & ${'itms'.$itmn};
441  $itmsk = & ${'itmsk'.$itmn};
442 
443  if(!$itms) {
444  $log .= '此道具不存在,请重新选择。<br>';
445  $mode = 'command';
446  return;
447  }
448 
449  if(strpos($itmk,'P') === 0) {
450  $log .= '<span class="red">'.$itm.'有毒!</span>';
451  } else {
452  $log .= '<span class="yellow">'.$itm.'是安全的。</span>';
453  }
454  $mode = 'command';
455  return;
456 }
457 
458 function press_bomb(){
459  global $log,$mode,$club,$wp,$wk,$wg,$wc,$wd,$wf,$mhp,$hp,$msp,$sp,$att,$def,$rage,$lvl;
460  if($club != 99){
461  $log .= '你的称号不能使用该技能。';
462  $mode = 'command';
463  return;
464  }
465 
466  $club=17;
467  $wp=ceil($wp*1.2); $wk=ceil($wk*1.2); $wg=ceil($wg*1.2); $wc=ceil($wc*1.2); $wd=ceil($wd*1.2); $wf=ceil($wf*1.2);
468  $mhp=ceil($mhp*1.15); $hp=ceil($hp*1.15); $msp=ceil($msp*1.15); $sp=ceil($sp*1.15);
469  $att=ceil($att*1.2); $def=ceil($def*1.2); $rage+=$lvl*10;
470  $log.="你按下了X按钮,你突然感觉到一股力量贯通全身!";
471  $mode = 'command';
472  return;
473 }
474 
475 function shoplist($sn) {
476  global $gamecfg,$mode,$itemdata,$areanum,$areaadd,$iteminfo,$itemspkinfo,$club;
477  global $db,$tablepre;
478  $arean = floor($areanum / $areaadd);
479  $result=$db->query("SELECT * FROM {$tablepre}shopitem WHERE kind = '$sn' AND area <= '$arean' AND num > '0' AND price > '0' ORDER BY sid");
480  $shopnum = $db->num_rows($result);
481  for($i=0;$i< $shopnum;$i++){
482  $itemlist = $db->fetch_array($result);
483  $itemdata[$i]['sid']=$itemlist['sid'];
484  $itemdata[$i]['kind']=$itemlist['kind'];
485  $itemdata[$i]['num']=$itemlist['num'];
486  $itemdata[$i]['price']= $club == 11 ? round($itemlist['price']*0.75) : $itemlist['price'];
487  $itemdata[$i]['area']=$itemlist['area'];
488  $itemdata[$i]['item']=$itemlist['item'];
489  $itemdata[$i]['itme']=$itemlist['itme'];
490  $itemdata[$i]['itms']=$itemlist['itms'];
491  //list($sid,$kind,$num,$price,$area,$item,$itmk,$itme,$itms,$itmsk)=explode(',',$itemlist);
492  foreach($iteminfo as $info_key => $info_value){
493  if(strpos($itemlist['itmk'],$info_key)===0){
494  $itemdata[$i]['itmk_words'] = $info_value;
495  break;
496  }
497  }
498  $itemdata[$i]['itmsk_words'] = '';
499  if($itemlist['itmsk'] && ! is_numeric($itemlist['itmsk'])){
500  for ($j = 0; $j < strlen($itemlist['itmsk']); $j++) {
501  $sub = substr($itemlist['itmsk'],$j,1);
502  if(!empty($sub)){
503  $itemdata[$i]['itmsk_words'] .= $itemspkinfo[$sub];
504  }
505  }
506  }
507  //$itemdata[$i] = array('sid' => $sid, 'kind' => $kind,'num' => $num, 'price' => $price, 'area' => $area, 'item' => $item,'itmk_words' => $itmk_words,'itme' => $itme, 'itms' => $itms,'itmsk_words' => $itmsk_words);
508  }
509 
510  $mode = 'shop';
511 
512  return;
513 
514 }
515 
516 ?>
chkpoison($itmn)
$inf
Definition: botservice.php:49
$tablepre
Definition: config.inc.php:58
adtsk()
$iteminfo
trap_adtsk($which)
$gamecfg
Definition: system.php:22
$inf_sp
Definition: gamecfg_1.php:71
$areanum
Definition: gameinfo.php:9
syncro($sb)
weaponswap()
$inf_sp_2
Definition: gamecfg_1.php:73
$n
Definition: rank.php:51
$infinfo
$i
Definition: botservice.php:267
shoplist($sn)
addnews($t=0, $n= '', $a='', $b='', $c= '', $d= '', $e= '')
$db
Definition: clear.php:32
$itemspkinfo
itemget()
【生存者数:<?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)
Definition: 1_alive.tpl.php:18
const GAME_ROOT
Definition: clear.php:6
$log
Definition: botservice.php:34
$k
Definition: stat.php:7
$now
Definition: clear.php:23
$exdmginf
openfile($filename)
oneonone($sb, $sf)
config($file= '', $cfg=1)
press_bomb()
gsetcookie($var, $value, $life=0, $prefix=1)
chgword($nmotto, $nlastword, $nkillmsg)
chginf($infpos)
if(!$cuser||!$cpass) $result
Definition: admin.php:25
$areaadd
Definition: gamecfg_1.php:7
if(!defined('IN_GAME')) getword()
Definition: special.func.php:8
chgpassword($oldpswd, $newpswd, $newpswd2)