Одиночное значения в БД

Discussion in 'PHP' started by Allen21, 13 Mar 2012.

  1. Allen21

    Allen21 New Member

    Joined:
    25 Nov 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, уважаемые, есть скрипт, нападение бота на персонажа, я не могу понять, как сделать одиночное значение для вставки в поле БД, а именно, у меня в скрипте, нападает бот у которого локейшен такойже как локейшен у перса, если они совпадают то нападает, но проблема в том, что этот бот может написать на всех находящихся в этой клетке персов, как можно ограничть кол-во одновременного нападения на одного лишь перса? может как-то реализовать ограничение на кол-во вставляемых символов в строку?
    посоветуйте, кто может чем то помочь, прошу помочь, буду премного благодарен.


    Если не удобно читать код, то так:


    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->$r['u'];
    $opp->sex 1;
    $opp->$r['g'];
    $opp->$r['l'];
    $opp->$r['z'];
    $opp->$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]
     
    #1 Allen21, 13 Mar 2012
    Last edited by a moderator: 15 Mar 2012
  2. Allen21

    Allen21 New Member

    Joined:
    25 Nov 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Или я увидел такой участок:
    $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."; ??
     
  3. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    $db->query("insert into battle(side1) values('".$side1."')");
     
  4. Allen21

    Allen21 New Member

    Joined:
    25 Nov 2011
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    ты не правильно меня понял, мне не надо просто вставить одно значение а мне его надо ограничить до 6 символов при вставке)
     
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    mb_substr($string06'utf-8');
     
  6. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Это не я тебя не правильно понял, это ты вопрос не верно поставил)