[] //карта ], $id_dng, $cord = ['x' => 0], $sg = [1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3]]; public function start() { global $u, $c, $code, $id; $this->info = ['id2' => $id, 'id' => 0, 'name' => 'Редактирование Пещеры', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0]; $this->id_dng = $this->info['id2']; $this->gs = $u->info['psevdo_s']; if ($this->gs < 1 || $this->gs > 4) { $this->gs = 1; } if ($this->info['bsid'] > 0) { $this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1')); //Если БС закончена if (isset($this->bs['id']) && $this->bs['users'] - $this->bs['users_finish'] < 2) { $u->bsfinish($this->bs, false, null); } } /* генерируем вид персонажа (только карта) $this->gs = 1; //смотрим прямо 2; //смотрим лево 3; //смотрим вниз 4; //смотрим право ( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) ) */ $whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо 3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз 2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево 4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право ]; $i = 1; $sp = mysql_query('SELECT * FROM `dungeon_map` WHERE `id_dng` = "' . $this->id_dng . '" AND ' . $whr[$this->gs] . ' ORDER BY `y` ASC , `x` ASC LIMIT 25'); while ($pl = mysql_fetch_array($sp)) { $this->map[0][$pl['y'] . '_' . $pl['x']] = $pl; $i++; } $this->map['good'] = $i; //целых клеток $this->map[1] = $this->genMatix(); $this->lookDungeon(); } public function usersDng() { global $u, $c; $r = ''; /* отображение ботов (бесполезно в данном редакторе) */ } public function atack($id) { global $u, $c, $code; /* нападение, какое нападение может быть в редакторе? :) На самого себя, со стулом? :) */ } public function takeinv($id) { global $u, $c, $code; /* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */ } public function takeit($id) { global $u, $c, $code, $magic; /* В редакторе ничего не падает ;) */ } public function addItem($i) { //добавляем предмет в пещеру (возможно выпал из бота или из сундука) /* А что еще? Пульт к управлению Землей?! */ } public function itemsMap() { global $u, $c, $code; /* Да ничего здесь не падает! Говорю же! */ } public function testLike($x1, $y1, $x2, $y2) { //из $x1,$y1 в $x2,$y2 //доступна-ли эта клетка для действий $r = 0; $c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); $c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); if (isset($c1['id']) && isset($c2['id'])) { if ($x1 == $x2 && $y1 == $y2) { $r = 1; } elseif ( $x1 == $x2 - 1 && $c1['go_1'] == 1 || //право $x1 == $x2 + 1 && $c1['go_2'] == 1 || //лево $y1 == $y2 - 1 && $c1['go_3'] == 1 || //верх $y1 == $y2 + 1 && $c1['go_4'] == 1 //низ ) { $r = 1; } } return $r; } public function genObjects() { global $u, $c, $code; ////i:{id,name,mapPoint,action,img,type}, //'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top}, //psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа $r = ''; $whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //прямо 3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //вниз 2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //лево 4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' //право ]; $sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this->id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 76'); # die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76'); $i = 0; $pos = []; while ($pl = mysql_fetch_array($sp)) { if ($pl['fix_x_y'] == 0 || ($pl['fix_x_y'] == 1 && $pl['x'] == $u->info['psevdo_x']) || ($pl['fix_x_y'] == 2 && $pl['y'] == $u->info['psevdo_y']) || ($pl['fix_x_y'] == 3 && $pl['x'] == $u->info['psevdo_x'] && $pl['y'] == $u->info['psevdo_y'])) { if (($pl['os1'] == 0 && $pl['os2'] == 0 && $pl['os3'] == 0 && $pl['os4'] == 0) || ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'])) { $i++; if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; } $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] - 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] - 1) { $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); $da = []; $is = 0; while ($is < count($dt2)) { $dt2[$is] = explode(':', $dt2[$is]); $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } #if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // Слева if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160); if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120); $pl['date'] = str_replace('"', '', json_encode($da)); $i++; if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; } $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; } elseif ($this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os1'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os2'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os3'] + 1 || $this->cord[$pl['y'] . '_' . $pl['x']] == $pl['os4'] + 1) { $dt2 = explode(',', ltrim(rtrim($pl['date'], '\}'), '\{')); $da = []; $is = 0; while ($is < count($dt2)) { $dt2[$is] = explode(':', $dt2[$is]); $da[$dt2[$is][0]] = $dt2[$is][1]; $is++; } #if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // Справа if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160); if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120); $pl['date'] = str_replace('"', '', json_encode($da)); $i++; if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; } $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; $r .= ',' . ($i - 1) . ':{\'x\':' . $pl['x'] . ',\'y\':' . $pl['y'] . ',0:' . $pl['id'] . ',1:\'' . $pl['name'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:\'action\',4:\'' . $pl['img'] . '\',5:' . $pl['type'] . ',6:0,7:' . $pl['w'] . ',8:' . $pl['h'] . ',9:' . $pl['left'] . ',10:' . $pl['top'] . ',11:' . $pl['date'] . ',12:' . $pl['type'] . ',13:' . $pl['type2'] . ',14:' . $pl['s'] . ',15:' . $pl['s2'] . ',16:' . $pl['os1'] . ',17:' . $pl['os2'] . ',18:' . $pl['os3'] . ',19:' . $pl['os4'] . ',20:' . $pl['fix_x_y'] . '}'; } } } return 'count:' . $i . $r; } public function genUsers() { global $u, $c, $code; ////i:{id,login,mapPoint,sex,obraz,type,users_p}, //'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1}, $r = ''; $whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо 3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз 2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево 4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право ]; $i = 0; //отображаем ботов $sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr[$this->gs] . ' AND `dn` = "0" AND `for_dn` = "' . $this->id_dng . '" AND `u`.`delete` = "0" LIMIT 50'); while ($pl = mysql_fetch_array($sp)) { $i++; if (!isset($pos[$this->cord[$pl['y'] . '_' . $pl['x']]])) { $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] = 0; } $pos[$this->cord[$pl['y'] . '_' . $pl['x']]]++; $dlg = 0; if ($pl['dialog'] > 0) { $dlg = $pl['dialog']; } $r .= ',' . ($i - 1) . ':{0:' . $pl['id2'] . ',1:\'' . $pl['login'] . '\',2:' . (0 + $this->cord[$pl['y'] . '_' . $pl['x']]) . ',3:' . $pl['sex'] . ',4:\'' . str_replace('.gif', '', $pl['obraz']) . '\',5:\'bot\',6:' . $pos[$this->cord[$pl['y'] . '_' . $pl['x']]] . ',7:' . $dlg . '}'; } return 'count:' . $i . $r; } public function botAtack($bot, $uid, $bs) { global $u, $c, $code; $user = mysql_fetch_array(mysql_query('SELECT `id`,`battle` FROM `users` WHERE `id` = "' . $uid['id'] . '" LIMIT 1')); if ($user['battle'] > 0) { $btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1')); } if (!isset($btli['id'])) { //Создаем поединок $btl_id = 0; $expB = 0; $btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0]; mysql_query('INSERT INTO `battle` (`dungeon`,`dn_id`,`x`,`y`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`) VALUES ( "' . $this->info['id2'] . '", "' . $this->info['id'] . '", "' . $bot['x'] . '", "' . $bot['y'] . '", "' . $u->info['city'] . '", "' . time() . '", "' . $btl['players'] . '", "' . $btl['timeout'] . '", "' . $btl['type'] . '", "' . $btl['invis'] . '", "' . $btl['noinc'] . '", "' . $btl['travmChance'] . '", "' . $btl['typeBattle'] . '", "' . $btl['addExp'] . '", "' . $btl['money'] . '")'); $btl_id = mysql_insert_id(); if ($btl_id > 0) { //Добавляем ботов $sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 50'); $j = 0; $logins_bot = []; while ($pl = mysql_fetch_array($sp)) { mysql_query('UPDATE `dungeon_bots` SET `inBattle` = "' . $btl_id . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1'); $jui = 1; while ($jui <= $pl['colvo']) { $k = $u->addNewbot($pl['id_bot'], null, null, $logins_bot); $logins_bot = $k['logins_bot']; if ($k) { $upd = mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); if ($upd) { $upd = mysql_query('UPDATE `stats` SET `x`="' . $bot['x'] . '",`y`="' . $bot['y'] . '",`team` = "1" WHERE `id` = "' . $k['id'] . '" LIMIT 1'); if ($upd) { $j++; } } } $jui++; } } unset($logins_bot); if ($j > 0) { mysql_query('UPDATE `users` SET `battle` = "' . $btl_id . '" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); mysql_query('UPDATE `stats` SET `team` = "2" WHERE `id` = "' . $user['id'] . '" LIMIT 1'); } } } } public function testGo($id) { global $u, $c, $code; $go = 0; if ($id == 1) { //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { //на лево $go = $this->sg[$this->gs][2]; } $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { $go = 0; } $tgo = [0 => 0, 1 => 0]; if ($go == 1) { $tgo[1] += 1; } elseif ($go == 2) { $tgo[0] -= 1; } elseif ($go == 3) { $tgo[1] -= 1; } elseif ($go == 4) { $tgo[0] += 1; } $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['psevdo_x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['psevdo_y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); if (isset($tbot['id2']) && $u->info['admin'] == 0) { $go = 0; } $tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); //наличие предмета if ($tmap['tr_items'] != '') { $ti = explode(',', $tmap['tr_items']); $i = 0; $trnit = ''; while ($i < count($ti)) { $ti2 = explode('=', $ti[$i]); if ($ti2[0] > 0 && $ti2[1] > 0) { $num_rows = mysql_num_rows(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = "0" AND `inShop` = "0" AND `item_id` = "' . ((int)$ti2[0]) . '" LIMIT ' . ((int)$ti2[1]) . '')); if ($num_rows < (int)$ti2[1]) { $tgo = $ti2[2]; if ($tgo != '0000' && $tgo[$ng[$go] - 1] == 1) { $go = 0; $trm = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "' . ((int)$ti2[0]) . '" LIMIT 1')); $trnit .= '"' . $trm['name'] . '", '; } } } $i++; } if ($trnit != '') { $trnit = rtrim($trnit, ', '); $this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit; } } $tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось if ($tmGo > 0) { $go = 0; $this->error = 'Не так быстро...'; } if ($u->aves['now'] >= $u->aves['max']) { $go = 0; $this->error = 'Вы не можете перемещаться, рюкзак переполнен ...'; } if ($go > 0) { if ($go == 1) { $u->info['psevdo_y'] += 1; } elseif ($go == 2) { $u->info['psevdo_x'] -= 1; } elseif ($go == 3) { $u->info['psevdo_y'] -= 1; } elseif ($go == 4) { $u->info['psevdo_x'] += 1; } $u->info['timeGo'] = time() + $tmap['timeGO']; $u->info['timeGoL'] = time(); mysql_query('UPDATE `stats` SET `x` = "' . $u->info['psevdo_x'] . '",`y` = "' . $u->info['psevdo_y'] . '",`timeGo` = "' . $u->info['timeGo'] . '",`timeGoL` = "' . $u->info['timeGoL'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'); } } public function testGone($id) { global $u, $c, $code; $go = 0; if ($id == 1) { //вперед $go = $this->sg[$this->gs][1]; } elseif ($id == 2) { //назад $go = $this->sg[$this->gs][3]; } elseif ($id == 3) { //на право $go = $this->sg[$this->gs][4]; } elseif ($id == 4) { //на лево $go = $this->sg[$this->gs][2]; } $thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1')); $ng = [4 => 1, 2 => 2, 1 => 3, 3 => 4]; if (isset($thp['id']) && $thp['go_' . $ng[$go]] == 0) { $go = 0; } $tgo = [0 => 0, 1 => 0]; if ($go == 1) { $tgo[1] += 1; } elseif ($go == 2) { $tgo[0] -= 1; } elseif ($go == 3) { $tgo[1] -= 1; } elseif ($go == 4) { $tgo[0] += 1; } $tbot = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_bots` WHERE `x` = "' . ($u->info['psevdo_x'] + (int)$tgo[0]) . '" AND `y` = "' . ($u->info['psevdo_y'] + (int)$tgo[1]) . '" AND `dn` = "' . $this->info['id'] . '" AND `for_dn` = "0" AND `delete` = "0" LIMIT 1')); if (isset($tbot['id2']) && $u->info['admin'] == 0) { $go = 0; } return $go; } public function testSt($id, $s) { $r = 0; //заменяем отображение стен в зависимости от угла обзора $s = $this->sg[$this->gs][$s]; if (isset($this->map[1][$id]['id'])) { $r = $this->map[1][$id]['st'][($s - 1)]; } return $r; } public function lookDungeon() { global $u, $c, $code, $pd; /* Генерируем изображение карты */ /* LEVEL 1 */ if ($this->testSt(2, 4) > 0 || $this->testSt(3, 2) > 0) { $pd[28] = 1; } if ($this->testSt(1, 4) > 0 || $this->testSt(2, 2) > 0) { $pd[27] = 1; } if ($this->testSt(2, 1) > 0 || $this->testSt(5, 3) > 0) { $pd[26] = 1; } if ($this->testSt(3, 1) > 0 || $this->testSt(6, 3) > 0) { $pd[25] = 1; } if ($this->testSt(1, 1) > 0 || $this->testSt(4, 3) > 0) { $pd[24] = 1; } /* LEVEL 2 */ if ($this->testSt(5, 4) > 0 || $this->testSt(6, 2) > 0) { $pd[23] = 1; } if ($this->testSt(4, 4) > 0 || $this->testSt(5, 2) > 0) { $pd[22] = 1; } if ($this->testSt(5, 1) > 0 || $this->testSt(8, 3) > 0) { $pd[21] = 1; } if ($this->testSt(6, 1) > 0 || $this->testSt(7, 3) > 0) { $pd[20] = 1; } if ($this->testSt(4, 1) > 0 || $this->testSt(9, 3) > 0) { $pd[19] = 1; } /* LEVEL 3 */ if ($this->testSt(8, 4) > 0 || $this->testSt(7, 2) > 0) { $pd[18] = 1; } if ($this->testSt(9, 4) > 0 || $this->testSt(8, 2) > 0) { $pd[17] = 1; } if ($this->testSt(8, 1) > 0 || $this->testSt(12, 3) > 0) { $pd[16] = 1; } if ($this->testSt(7, 1) > 0 || $this->testSt(13, 3) > 0) { $pd[15] = 1; } if ($this->testSt(9, 1) > 0 || $this->testSt(11, 3) > 0) { $pd[14] = 1; } /* LEVEL 4 */ if ($this->testSt(12, 4) > 0 || $this->testSt(13, 2) > 0) { $pd[13] = 1; } if ($this->testSt(12, 2) > 0 || $this->testSt(11, 4) > 0) { $pd[12] = 1; } if ($this->testSt(13, 1) > 0 || $this->testSt(17, 3) > 0) { $pd[11] = 1; } //8 if ($this->testSt(11, 1) > 0 || $this->testSt(16, 3) > 0) { $pd[10] = 1; } //7 if ($this->testSt(12, 1) > 0 || $this->testSt(15, 3) > 0) { $pd[9] = 1; } if ($this->testSt(14, 1) > 0 || $this->testSt(18, 3) > 0) { $pd[6] = 1; } //2 if ($this->testSt(10, 1) > 0 || $this->testSt(19, 3) > 0) { $pd[5] = 1; } //1 if ($this->testSt(16, 4) > 0 || $this->testSt(15, 2) > 0) { $pd[4] = 1; } if ($this->testSt(15, 4) > 0 || $this->testSt(17, 2) > 0) { $pd[3] = 1; } /* Генерируем предметы на карте */ /* Генерируем персонажей и ботов на карте */ } public function getMatrix($y, $x) { global $u; $this->cord['x']++; $this->cord[($u->info['psevdo_y'] + $y) . '_' . ($u->info['psevdo_x'] + $x)] = $this->cord['x']; return $this->map[0][($u->info['psevdo_y'] + $y) . '_' . ($u->info['psevdo_x'] + $x)]; } public function genMatix() { $r = []; if ($this->gs == 1) { //1; //смотрим прямо $r[1] = $this->getMatrix(0, -1); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(0, 1); $r[4] = $this->getMatrix(1, -1); $r[5] = $this->getMatrix(1, 0); $r[6] = $this->getMatrix(1, 1); $r[7] = $this->getMatrix(2, 1); $r[8] = $this->getMatrix(2, 0); $r[9] = $this->getMatrix(2, -1); $r[10] = $this->getMatrix(3, -2); $r[11] = $this->getMatrix(3, -1); $r[12] = $this->getMatrix(3, 0); $r[13] = $this->getMatrix(3, 1); $r[14] = $this->getMatrix(3, 2); $r[15] = $this->getMatrix(4, 0); $r[16] = $this->getMatrix(4, -1); $r[17] = $this->getMatrix(4, 1); $r[18] = $this->getMatrix(4, 2); $r[19] = $this->getMatrix(4, -2); } elseif ($this->gs == 2) { //2; //смотрим лево $r[1] = $this->getMatrix(-1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(1, 0); $r[4] = $this->getMatrix(-1, -1); $r[5] = $this->getMatrix(0, -1); $r[6] = $this->getMatrix(1, -1); $r[7] = $this->getMatrix(1, -2); $r[8] = $this->getMatrix(0, -2); $r[9] = $this->getMatrix(-1, -2); $r[10] = $this->getMatrix(-2, -3); $r[11] = $this->getMatrix(-1, -3); $r[12] = $this->getMatrix(0, -3); $r[13] = $this->getMatrix(1, -3); $r[14] = $this->getMatrix(2, -3); $r[15] = $this->getMatrix(0, -4); $r[16] = $this->getMatrix(-1, -4); $r[17] = $this->getMatrix(1, -4); $r[18] = $this->getMatrix(2, -4); $r[19] = $this->getMatrix(-2, -4); } elseif ($this->gs == 3) { //3; //смотрим вниз $r[1] = $this->getMatrix(0, 1); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(0, -1); $r[4] = $this->getMatrix(-1, 1); $r[5] = $this->getMatrix(-1, 0); $r[6] = $this->getMatrix(-1, -1); $r[7] = $this->getMatrix(-2, -1); $r[8] = $this->getMatrix(-2, 0); $r[9] = $this->getMatrix(-2, 1); $r[10] = $this->getMatrix(-3, 2); $r[11] = $this->getMatrix(-3, 1); $r[12] = $this->getMatrix(-3, 0); $r[13] = $this->getMatrix(-3, -1); $r[14] = $this->getMatrix(-3, -2); $r[15] = $this->getMatrix(-4, 0); $r[16] = $this->getMatrix(-4, 1); $r[17] = $this->getMatrix(-4, -1); $r[18] = $this->getMatrix(-4, -2); $r[19] = $this->getMatrix(-4, 2); } elseif ($this->gs == 4) { //4; //смотрим право $r[1] = $this->getMatrix(1, 0); $r[2] = $this->getMatrix(0, 0); $r[3] = $this->getMatrix(-1, 0); $r[4] = $this->getMatrix(1, 1); $r[5] = $this->getMatrix(0, 1); $r[6] = $this->getMatrix(-1, 1); $r[7] = $this->getMatrix(-1, 2); $r[8] = $this->getMatrix(0, 2); $r[9] = $this->getMatrix(1, 2); $r[10] = $this->getMatrix(2, 3); $r[11] = $this->getMatrix(1, 3); $r[12] = $this->getMatrix(0, 3); $r[13] = $this->getMatrix(-1, 3); $r[14] = $this->getMatrix(-2, 3); $r[15] = $this->getMatrix(0, 4); $r[16] = $this->getMatrix(1, 4); $r[17] = $this->getMatrix(-1, 4); $r[18] = $this->getMatrix(-2, 4); $r[19] = $this->getMatrix(2, 4); } return $r; } }