Tokiwa Battle Royale  GE777
A PHP Battle Royale inspired game
 All Data Structures Namespaces Files Functions Variables Pages
npcmng.php
Go to the documentation of this file.
1 <?php
2 if(!defined('IN_ADMIN')) {
3  exit('Access Denied');
4 }
5 if(!isset($command)){$command = 'list';}
6 if(!isset($start)){$start = 0;}
7 if(!isset($checkmode)){$checkmode = '';}
8 if(!isset($checkinfo)){$checkinfo = '';}
9 if(!isset($pagemode)){$pagemode = '';}
10 
11 $cmd_info = '';
12 $start = getstart($start,$pagemode);
14 if($command != 'submitedit'){
15  $npcdata = dbsearch($start,$checkmode,$checkinfo);
16 }
17 
18 
19 if($command == 'kill' || $command == 'live' || $command == 'del') {
20  $operlist = $operlist2 = $dfaillist = $gfaillist = array();
21  for($i=0;$i<$showlimit;$i++){
22  if(isset(${'npc_'.$i})) {
23  if(isset($npcdata[$i]) && $npcdata[$i]['pid'] == ${'npc_'.$i}){
24  if($command == 'kill'){
25  if($npcdata[$i]['hp'] > 0){
26  $operlist[${'npc_'.$i}] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
27  $npcdata[$i]['hp'] = 0;
28  $npcdata[$i]['state'] = 15;
29  $deathnum ++;$alivenum--;
30  adminlog('killnpc',$npcdata[$i]['name']);
31  }else{
32  $gfaillist[] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
33  }
34  }elseif($command == 'live'){
35  if($npcdata[$i]['hp'] <= 0){
36  $operlist[${'npc_'.$i}] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
37  $npcdata[$i]['hp'] = $npcdata[$i]['mhp'];
38  $npcdata[$i]['state'] = 0;
39  $deathnum --;$alivenum++;
40  adminlog('livenpc',$npcdata[$i]['name']);
41  }else{
42  $gfaillist[] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
43  }
44  }elseif($command == 'del'){
45 
46  if($npcdata[$i]['hp'] > 0){
47  $operlist[${'npc_'.$i}] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
48  $npcdata[$i]['hp'] = 0;
49  $npcdata[$i]['state'] = 16;
50  $deathnum --;$alivenum++;
51  adminlog('delnpc',$npcdata[$i]['name']);
52  }else{
53  $operlist2[${'npc_'.$i}] = $npcdata[$i]['name'].'(PID:'.$npcdata[$i]['pid'].')';
54  adminlog('delncp',$npcdata[$i]['name']);
55  }
56  }
57  }else{
58  $dfaillist[] = ${'npc_'.$i};
59  }
60  }
61  }
62  if($operlist || $operlist2 || $dfaillist || $gfaillist){
63  if($command == 'kill'){
64  $operword = '被杀死';
65  $qryword = "UPDATE {$tablepre}players SET hp='0',state='15' ";
66  }elseif($command == 'live'){
67  $operword = '被复活';
68  $qryword = "UPDATE {$tablepre}players SET hp=mhp,state='0' ";
69  }elseif($command == 'del'){
70  $operword = '被清除';
71  $qryword = "UPDATE {$tablepre}players SET hp='0',state='16',weps='0',arbs='0',arhs='0',aras='0',arfs='0',arts='0',itms0='0',itms1='0',itms2='0',itms3='0',itms4='0',itms5='0',itms6='0',money='0' ";
72  $operword2 = '的尸体被清除';
73  $qryword2 = "UPDATE {$tablepre}players SET weps='0',arbs='0',arhs='0',aras='0',arfs='0',arts='0',itms0='0',itms1='0',itms2='0',itms3='0',itms4='0',itms5='0',itms6='0',money='0' ";
74  }
75  if($operlist){
76  $qrywhere = '('.implode(',',array_keys($operlist)).')';
77  $opernames = implode(',',($operlist));
78  $db->query("$qryword WHERE pid IN $qrywhere");
79  //echo "$qryword WHERE pid IN $qrywhere";
80  $cmd_info .= " NPC $opernames $operword 。<br>";
81  }
82  if($operlist2){
83  $qrywhere2 = '('.implode(',',array_keys($operlist2)).')';
84  $opernames = implode(',',($operlist2));
85  $db->query("$qryword2 WHERE pid IN $qrywhere2");
86  //echo "$qryword2 WHERE pid IN $qrywhere2";
87  $cmd_info .= " NPC $opernames $operword2 。<br>";
88  }
89  if($gfaillist){
90  $gfailnames = implode(',',($gfaillist));
91  $cmd_info .= " NPC $gfailnames 已经处于该状态,无法 $operword 。<br>";
92  }
93  if($dfaillist){
94  $dfailnames = implode(',',($dfaillist));
95  $cmd_info .= " PID为 $dfailnames 的NPC不存在或位于查询范围外 。<br>";
96  }
97  save_gameinfo();
98  }else{
99  $cmd_info = "指定的帐户超出查询范围或指令错误。";
100  }
101  $command = 'list';
102 } elseif(strpos($command ,'edit')===0) {
103  $pid = explode('_',$command);
104  $no = (int)$pid[1];
105  $pid = (int)$pid[2];
106  if(!$pid){
107  $cmd_info = "帐户UID错误。";
108  }elseif(!isset($npcdata[$no]) || $npcdata[$no]['pid'] != $pid){
109  $cmd_info = "该帐户不存在或超出查询范围。";
110  }else{
111  $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$pid' AND type>'0'");
112  $npc = $db->fetch_array($result);
113 
114  if(!$npc) {
115  $cmd_info = "找不到角色 ".$npcdata[$no]['name']." 。";
116  }else{
117  $command = 'check';
118  }
119  }
120 } elseif($command == 'submitedit') {
121  $db->query("UPDATE {$tablepre}players SET gd='$gd',icon='$icon',club='$club',sNo='$sNo',hp='$hp',mhp='$mhp',sp='$sp',msp='$msp',att='$att',def='$def',pls='$pls',lvl='$lvl',exp='$exp',money='$money',bid='$bid',inf='$inf',rage='$rage',pose='$pose',tactic='$tactic',killnum='$killnum',wp='$wp',wk='$wk',wg='$wg',wc='$wc',wd='$wd',wf='$wf',teamID='$teamID',teamPass='$teamPass',wep='$wep',wepk='$wepk',wepe='$wepe',weps='$weps',wepsk='$wepsk',arb='$arb',arbk='$arbk',arbe='$arbe',arbs='$arbs',arbsk='$arbsk',arh='$arh',arhk='$arhk',arhe='$arhe',arhs='$arhs',arhsk='$arhsk',ara='$ara',arak='$arak',arae='$arae',aras='$aras',arask='$arask',arf='$arf',arfk='$arfk',arfe='$arfe',arfs='$arfs',arfsk='$arfsk',art='$art',artk='$artk',arte='$arte',arts='$arts',artsk='$artsk',itm0='$itm0',itmk0='$itmk0',itme0='$itme0',itms0='$itms0',itmsk0='$itmsk0',itm1='$itm1',itmk1='$itmk1',itme1='$itme1',itms1='$itms1',itmsk1='$itmsk1',itm2='$itm2',itmk2='$itmk2',itme2='$itme2',itms2='$itms2',itmsk2='$itmsk2',itm3='$itm3',itmk3='$itmk3',itme3='$itme3',itms3='$itms3',itmsk3='$itmsk3',itm4='$itm4',itmk4='$itmk4',itme4='$itme4',itms4='$itms4',itmsk4='$itmsk4',itm5='$itm5',itmk5='$itmk5',itme5='$itme5',itms5='$itms5',itmsk5='$itmsk5',itm6='$itm6',itmk6='$itmk6',itme6='$itme6',itms6='$itms6',itmsk6='$itmsk6' where pid='$pid'");
122  if(!$db->affected_rows()){
123  $cmd_info = "无法修改角色 $name";
124  } else {
125  adminlog('editnpc',$name);
126  $cmd_info = "角色 $name 的属性被修改了";
127  }
128  $npcdata = dbsearch($start,$checkmode,$checkinfo);
129 }
130 include template('admin_npcmng');
131 
132 
133 function dbsearch($start,$checkmode,$checkinfo){
135  $limitstr = " LIMIT $start,$showlimit";
136  if(($checkmode == 'name')&&($checkinfo)) {
137  $result = $db->query("SELECT * FROM {$tablepre}players WHERE name LIKE '%{$checkinfo}%' AND type>'0'".$limitstr);
138  } elseif($checkmode == 'teamID') {
139  if($checkinfo){
140  $result = $db->query("SELECT * FROM {$tablepre}players WHERE teamID LIKE '%".$checkinfo."%' AND type>'0' ORDER BY teamID".$limitstr);
141  } else {
142  $result = $db->query("SELECT * FROM {$tablepre}players WHERE type>'0' ORDER BY teamID DESC".$limitstr);
143  }
144  } elseif($checkmode == 'pls') {
145  if($checkinfo){
146  $plslist = array();
147  foreach($plsinfo as $key => $val){
148  if(strpos($val,$checkinfo)!==false){
149  $plslist[] = $key;
150  }
151  }
152  if(is_numeric($checkinfo)){$plslist[] = (int)$checkinfo;}
153  if(!empty($plslist)){
154  $plsstr = implode(',',$plslist);
155  $result = $db->query("SELECT * FROM {$tablepre}players WHERE pls IN (".$plsstr.") AND type>'0' ORDER BY pls".$limitstr);
156  }else{$result = false;}
157  } else {
158  $result = $db->query("SELECT * FROM {$tablepre}players WHERE type>'0' ORDER BY pls".$limitstr);
159  }
160  } else {
161  $result = $db->query("SELECT * FROM {$tablepre}players WHERE type>'0'".$limitstr);
162  }
163  if(!$result || !$db->num_rows($result)) {
164  $cmd_info = '没有符合条件的角色。';
165  $startno = $start + 1;
166  $resultinfo = '位置:第'.$startno.'条记录';
167  $npcdata = Array();
168  } else {
169  while($npc = $db->fetch_array($result)) {
170  $npcdata[] = $npc;
171  }
172  $startno = $start + 1;
173  $endno = $start + count($npcdata);
174  $resultinfo = '第'.$startno.'条-第'.$endno.'条记录';
175  }
176  return $npcdata;
177 }
178 ?>
$tablepre
Definition: config.inc.php:58
getstart($start=0, $mode= '')
Definition: admin.php:67
$plsinfo
$resultinfo
Definition: npcmng.php:13
if($command!= 'submitedit') if($command== 'kill'||$command== 'live'||$command== 'del') elseif(strpos($command,'edit')===0) elseif($command== 'submitedit')
Definition: npcmng.php:120
$i
Definition: botservice.php:267
$db
Definition: clear.php:32
$deathnum
Definition: gameinfo.php:15
if(!defined('IN_ADMIN')) if(!isset($command)) if(!isset($start)) if(!isset($checkmode)) if(!isset($checkinfo)) if(!isset($pagemode)) $cmd_info
Definition: npcmng.php:11
$alivenum
Definition: gameinfo.php:14
dbsearch($start, $checkmode, $checkinfo)
Definition: npcmng.php:133
if(!$cuser||!$cpass) $result
Definition: admin.php:25
adminlog($op, $an1='', $an2='', $an3='')
Definition: admin.php:58
save_gameinfo()
$start
Definition: npcmng.php:12
$showlimit
Definition: admincfg.php:4