Здравствуйте, уважаемые, есть скрипт, нападение бота на персонажа, я не могу понять, как сделать одиночное значение для вставки в поле БД, а именно, у меня в скрипте, нападает бот у которого локейшен такойже как локейшен у перса, если они совпадают то нападает, но проблема в том, что этот бот может написать на всех находящихся в этой клетке персов, как можно ограничть кол-во одновременного нападения на одного лишь перса? может как-то реализовать ограничение на кол-во вставляемых символов в строку? посоветуйте, кто может чем то помочь, прошу помочь, буду премного благодарен. Если не удобно читать код, то так: PHP: <?php //return; //if ($user->klan != "Administration") return; //echo "<!-- enter -->"; //echo "SELECT * FROM zver WHERE locate='$user->locate'"; $db->query("SELECT * FROM zver WHERE locate='$user->locate' AND visible='1' ORDER BY rand() ASC LIMIT 1"); if (!$db->num_rows()) { return; } $r = $db->fetch_array(); $opp = new UserDate; $opp->id = $r['id']; $opp->login = $r['login']; $opp->level = $r['level']; $opp->u = $r['u']; $opp->sex = 1; $opp->g = $r['g']; $opp->l = $r['l']; $opp->z = $r['z']; $opp->m = $r['m']; $opp->hp = $opp->maxhp = 25+$opp->z*5; $opp->klan = ""; $opp->align = ""; $opp->icon = $r['icon']; $allow = $r['allow']; if (!$allow) return; $battle_id = $r['battle_id']; switch ($COMMON_PAGE) { case "map": if (rand(1,100)>$r['shans'] && !$r['battle_id']) { // echo "<!-- no chance -->"; return; } if (time() - $r['last_battle'] <= $r['wait']*60 && !$r['battle_id']) { // echo "<!-- timeout -->"; return; } @include $config['root']."/class/class_battle.php"; $battle = new Battle; if ($allow) { if (!$battle_id) { // create bot $user->add_ustalost(1); $db->query("SELECT * FROM temp WHERE id='$opp->id'"); if (!$db->num_rows()) $db->query("INSERT INTO temp (id, login, level, u, g, l, z, m, icon, klan, hp, maxhp, align) VALUES ('".$opp->id."', '".$opp->login."', '".$opp->level."', '".$opp->u."', '".$opp->g."', '".$opp->l."', '".$opp->z."', '".$opp->m."', '".$opp->icon."', '".$opp->klan."', '".$opp->hp."', '".$opp->maxhp."', '".$opp->align."')"); else { $opt = array('login','level','u','g','l','z','m','icon','hp','maxhp','align'); $q = ""; foreach ($opt as $v) { if ($q) $q .= ", "; $q .= "$v='".$opp->$v."'"; } $db->query("UPDATE temp SET $q WHERE id='$opp->id'"); } //$opp->id = $db->mysqli->insert_id; $side1 = $user->id."#".$user->login."#".$user->level."#".$user->klan."#".$user->align."#".$user->sex.";"; $side2 = $opp->id."#".$opp->login."#".$opp->level."#".$opp->klan."#".$opp->align."#".$opp->sex.";"; $kick_time = $user->id."=".time().";".$opp->id."=".time().";"; $hp = $user->id."=0;".$opp->id."=0;"; $data = $side1.$side2; $side1 = $user->id.";"; $side2 = $opp->id.";"; $db->query("insert into battle(start,timeout,side1,side2,kick_time,hp,data,type,hall,battle,module) values('".time()."','".(60*5)."','".$side1."','".$side2."','".$kick_time."','".$hp."','".$data."','bot','$loc','arm','zver')"); $battle_id = $db->mysqli->insert_id; $db->query("UPDATE zver SET battle_id='$battle_id' WHERE id='$opp->id'"); // add armour $mass = explode(";", ";".$r['bag'].";"); $n = 0; foreach ($mass as $v) { if (!$v) continue; $n++; $pid = sprintf("%02d%02d", $opp->id, $n); $db->query("SELECT * FROM bag WHERE pid='$pid'"); if (!$db->num_rows()) $db->query("insert into bag (owner,id,pid,iznos,srab,present,dressed) values('$opp->id','$v','$pid','100','100','n','y')"); } } else { $battle->get_info($battle_id); if (ereg("(^|;)$user->id#", $battle->data)) { if (time() - $battle->finish < 60*30) return; // ???? //$battle->hp = ereg_replace($user->id.'=\d+;', $user->id."=0;", $battle->hp); //$battle->kick_time = ereg_replace($user->id.'=\d+;', $user->id."=".time().";", $battle->kick_time); } else { $battle->hp .= $user->id."=0;"; $battle->data .= $user->id."#".$user->login."#".$user->level."#".$user->klan."#".$user->align."#".$user->sex.";"; } $battle->side1 .= $user->id.";"; $battle->kick_time .= $user->id."=".time().";"; if ($battle->winner || $battle->finish) { $battle->winner = ''; $battle->finish = ''; } $battle->write(); } $db->query("update users set battle_id='".$battle_id."' where id='$user->id'"); $db->query("insert into battle_logs(battle_id,cmt_id,time,type,ch1,ch2) values('".$battle_id."','6','".time()."','greating','".$opp->id."','".$user->id."')"); insys($user->login, "$opp->login внезапно накинулся на вас. Вы можете позвать кого-то на помощь.",1); Header("Location: /game/battle/"); exit; } break; case "battle": if ($battle->winner) { if (!$lose) { /*$user->money += 30; foreach (array('u', 'g', 'm', 'l', 'z') as $param) $user->add_magic($param, 5, 60*60, 3); insys($user->login, "За победу вам начислено 30 золота и +5 к каждому стату на 1 час.",1); */ //$db->query("DELETE FROM temp WHERE id='$opp->id'"); //$db->query("DELETE FROM bag WHERE owner='$opp->id'"); // comment out // $db->query("UPDATE zver SET allow='0' WHERE id='$opp->id'"); $db->query("UPDATE zver SET battle_id='0',last_battle='".time()."' WHERE id='$opp->id'"); } else { $battle->hp = ereg_replace($user->id.'=\d+;', "", $battle->hp); $battle->side1 = str_replace($user->id.';', "", $battle->side1); $battle->kick_time = ereg_replace($user->id.'=\d+;', "", $battle->kick_time); $battle->finish = time(); //$battle->data = str_replace($user->id."#".$user->login."#".$user->level."#".$user->klan."#".$user->align."#".$user->sex.";", "", $battle->data); $battle->write(); if ((strlen($battle->side1))<3) $db->query("UPDATE zver SET battle_id='0',last_battle='".time()."' WHERE id='$opp->id'"); } } break; } ?> //Gifts: научитесь ПРАВИЛЬНО использовать тег PHP: [/COLOR]
Или я увидел такой участок: $side1 = $user->id.";"; значение этого поля вставляется в функцию: $db->query("insert into battle(start,timeout,side1,side2,kick_time,hp,data,type,hall,battle,module) values('".time()."','".(60*5)."','".$side1."','".$side2."','".$kick_time."','".$hp."','".$data."','bot','$loc','arm','zver')"); как сделать что бы можно было в таблицу вставить лишь одно значение $side1 = $user->id."; ??
ты не правильно меня понял, мне не надо просто вставить одно значение а мне его надо ограничить до 6 символов при вставке)