Помоги найти ошибку

linpc

Гуру форума
Регистрация
6 Апр 2012
Сообщения
178
Реакции
55
Добрый день, уважаемые форумчане.
Переписываю онлайн игру, делая под себя, возник такой вопрос при одевании любой она одевается несколько раз. Именно во второй слот, где должен быть щит.
Вызов функции:
PHP:
<input type=button class=invbut onclick="location=\'main.php?get_id=57&act=1&wid='.$ITEM['id_item'].'&vcode='.scode().'\'" value="Надеть" />
$ITEM['id_item']-ID вещи
Код вызова:
PHP:
if (isset($_GET['get_id']) && intval($_GET['get_id']) == '57' and in_array($_GET['vcode'],$_SESSION['secur'])){ //-- Работа с вещами
    save_hp();
        $items = mysql_fetch_assoc(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype  WHERE id_item='".$_GET['wid']."' and pl_id='".$player['id']."' LIMIT 1;"));
switch(isset($_GET['act'])){
        case'1':
                    if($items['slot']==3 and $items['2w']==1 and mysql_num_rows(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype WHERE curslot='3' and pl_id='".$player['id']."'"))>0){
        $items['slot']=13;
    }
    if($items['slot']==14 and mysql_num_rows(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype WHERE curslot='14' and pl_id='".$player['id']."'"))>0){
        $items['slot']=15;
    }
    if($plstt[3]==0 and $items['slot']==5){
        $act=-1;
        $items['slot']=5;
    }
    if($plstt[3]>1 and $items['slot']==5 and mysql_num_rows(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype WHERE curslot='5' and pl_id='".$player['id']."'"))>0){
        $items['slot']=6;
    }
    if($plstt[3]>2 and $items['slot']==6 and mysql_num_rows(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype WHERE curslot='6' and pl_id='".$player['id']."'"))>0){
        $items['slot']=7;
    }
    if(mysql_num_rows(mysql_query("SELECT invent.*, items.* FROM items INNER JOIN invent ON items.id = invent.protype WHERE curslot='".$items['slot']."' and pl_id='".$player['id']."'"))>0){
        $act=2;
    }
                    break;
}
updateslot($_GET['act'],$_GET['wid'],$player['id'],$items['slot']);
calcstat($player['id']);
testcompl();

        }

Использующие функции:
PHP:
function testcompl() {
    $pl = player();
    $st = allparam($pl);
    $testcompl = mysql_query("SELECT invent.*, items.* FROM `items` INNER JOIN `invent` ON `items`.id = `invent`.protype WHERE `used`='1' and `pl_id`='".$pl[id]."' ORDER BY slot");
    while ($row = mysql_fetch_assoc($testcompl)) {
        $it = explode("|", $row['i_need']);
        if ($row['slot'] == 5) {
            $el+=1;
        }
        if ($row['slot'] == 5 and $el > $st[3]) {
            updateslot(0, $row['id_item'], $pl['id'], 0);
            continue;
        }
        foreach ($it as $value) {
            $stat = explode("@", $value);
            if ($stat[0] == 72) {
                $stat[1] = $row['level'];
            }
            if ($st[$stat[0]] < $stat[1]) {
                if ($row['slot'] == 4) {
                    $st[3] = 0;
                }$s[] = "id_item='".$row['id_item']."'";
            }
        }
    }
    if ($s != '') {
        $s = implode(" or ", $s);
        mysql_query("UPDATE invent SET `used`='0', `curslot`='0' WHERE '".$s."' and `pl_id`='".$pl[id]."'");
        calcstat($pl[id]);
        testcompl();
    }
    if ($pl['fight'] == 0) {
        save_hp();
    }
    calchp();
}

function updateslot($act, $item, $pid, $slot) { //--Одевание вещей
    switch ($act) {
        case 0:
            mysql_query("UPDATE invent SET used='0', curslot='0' WHERE id_item='" . $item . "' and pl_id='" . $pid . "'");
            break;
        case 1:
            mysql_query("UPDATE invent SET used='1', curslot='" . $slot . "' WHERE id_item='" . $item . "' and pl_id='" . $pid . "'");
            break;
        case 2:
            mysql_query("UPDATE invent SET used='0', curslot='0' WHERE curslot='$slot' and pl_id='" . $pid . "'");
            mysql_query("UPDATE invent SET used='1', curslot='" . $slot . "' WHERE id_item='" . $item . "' and pl_id='" . $pid . "'");
            break;
        case 3:
            mysql_query("UPDATE `invent` SET `used`='0', `curslot`='0' WHERE pl_id='" . $pid . "'");
            break;
    }
}

Помогите найти ошибку
 
Переписываю онлайн игру, делая под себя, возник такой вопрос при одевании любой она одевается несколько раз. Именно во второй слот, где должен быть щит.
Одевается несколько раз = 1 вещь попадает в несколько слотов?
Слоту щита какой ID-шник соответствует?

p.s. Код, конечно.. слегка неудобен для восприятия..
 
Одевается несколько раз = 1 вещь попадает в несколько слотов?
Слоту щита какой ID-шник соответствует?

p.s. Код, конечно.. слегка неудобен для восприятия..
1 вещь попадает всегда в один слот 13
 
1 конкретная вещь? или любая 1 вещь падает в 13 слот? Если 13 слот занят, эта вещь попадает в другой слот? Она должна попасть не в 13 слот?

p.s. 13 слот только в 1 месте заполняется.. когда он изначально 3 и 2w (что это?) выставлено.
 
Добрый вечер, дико извиняюсь что не по теме, не хотел дублировать темы ошибок.

Нуждаюсь в помоще, установил скипт, все работает кроме 1 раздела
выдает ошибку
Код:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /home/public_html/gmu/include/Template.inc(370) : eval()'d code on line 1

в строке 370
Код:
        // выполняем шаблон
        echo trim (eval (' ?>' . $compileTmpl . '<?php '));

подскажите, как решить проблему? Спасибо
 
Добрый вечер, дико извиняюсь что не по теме, не хотел дублировать темы ошибок.

Нуждаюсь в помоще, установил скипт, все работает кроме 1 раздела
выдает ошибку
Код:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /home/public_html/gmu/include/Template.inc(370) : eval()'d code on line 1

в строке 370
Код:
        // выполняем шаблон
        echo trim (eval (' ?>' . $compileTmpl . '<?php '));

подскажите, как решить проблему? Спасибо
Синтаксическая ошибка, смотри что выводит $compileTmpl
 
Синтаксическая ошибка, смотри что выводит $compileTmpl
в программировании нуб, но поиском во всем движке, нашел такие вот строки.
Код:
   Search "$compileTmpl" (11 hits in 1 file) /home/public_html/gmu/include/Template.inc 

    Line 336:        $compileTmpl = '';
    Line 340:            $compileTmpl .= '<!-- START TEMPLATE  "' . $tmplName . '" GROUP "' . $tmplGroup . '" -->';
    Line 345:            $compileTmpl .= $this->_compiledCode[ $tmplGroup ][ $tmplName ];
    Line 347:        } elseif (! $this->_isNeedRecompile ($tmplName, $tmplGroup) && $compileTmpl = fs_getFileContent ($this->_compileBaseDir . $tmplGroup . '/' . $tmplName . '.' . $this->_tmplExtension)) {
    Line 349:            $this->_compiledCode[ $tmplGroup ][ $tmplName ] = $compileTmpl;
    Line 353:            $compileTmpl .= $this->_compileTmpl ($tmplName, $tmplGroup);
    Line 359:            $compileTmpl .= '<!-- STOP TEMPLATE  "' . $tmplName . '" GROUP "' . $tmplGroup . '" -->';
    Line 363:        if (! $debugInfo || strpos ($compileTmpl, '<!DOCTYPE ') > 0) {
    Line 365:            $compileTmpl = preg_replace ('#^(<!--[\sa-zA-Z"]*?-->)+?#sui', '', $compileTmpl);
    Line 365:            $compileTmpl = preg_replace ('#^(<!--[\sa-zA-Z"]*?-->)+?#sui', '', $compileTmpl);
    Line 370:        echo trim (eval (' ?>' . $compileTmpl . '<?php '));

и все это поиск выдал в одном файле Template.inc
/home/public_html/gmu/include/Template.inc
 
в программировании нуб, но поиском во всем движке, нашел такие вот строки.
Код:
   Search "$compileTmpl" (11 hits in 1 file) /home/public_html/gmu/include/Template.inc

    Line 336:        $compileTmpl = '';
    Line 340:            $compileTmpl .= '<!-- START TEMPLATE  "' . $tmplName . '" GROUP "' . $tmplGroup . '" -->';
    Line 345:            $compileTmpl .= $this->_compiledCode[ $tmplGroup ][ $tmplName ];
    Line 347:        } elseif (! $this->_isNeedRecompile ($tmplName, $tmplGroup) && $compileTmpl = fs_getFileContent ($this->_compileBaseDir . $tmplGroup . '/' . $tmplName . '.' . $this->_tmplExtension)) {
    Line 349:            $this->_compiledCode[ $tmplGroup ][ $tmplName ] = $compileTmpl;
    Line 353:            $compileTmpl .= $this->_compileTmpl ($tmplName, $tmplGroup);
    Line 359:            $compileTmpl .= '<!-- STOP TEMPLATE  "' . $tmplName . '" GROUP "' . $tmplGroup . '" -->';
    Line 363:        if (! $debugInfo || strpos ($compileTmpl, '<!DOCTYPE ') > 0) {
    Line 365:            $compileTmpl = preg_replace ('#^(<!--[\sa-zA-Z"]*?-->)+?#sui', '', $compileTmpl);
    Line 365:            $compileTmpl = preg_replace ('#^(<!--[\sa-zA-Z"]*?-->)+?#sui', '', $compileTmpl);
    Line 370:        echo trim (eval (' ?>' . $compileTmpl . '<?php '));

и все это поиск выдал в одном файле Template.inc
/home/public_html/gmu/include/Template.inc
честно не вижу, возможно лучше меня Вам дадут консультацию.
 
Добрый вечер, дико извиняюсь что не по теме, не хотел дублировать темы ошибок.

Нуждаюсь в помоще, установил скипт, все работает кроме 1 раздела
выдает ошибку
Код:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /home/public_html/gmu/include/Template.inc(370) : eval()'d code on line 1

в строке 370
Код:
        // выполняем шаблон
        echo trim (eval (' ?>' . $compileTmpl . '<?php '));

подскажите, как решить проблему? Спасибо
а посути, что бы там $compileTmpl не значил, строка, которая будет идти на евал
Код:
?>
какойто там код
<?php
а должна быть
Код:
<?php
какойто там код
?>
тоесть
Код:
        // выполняем шаблон
        echo trim (eval (' <?php ' . $compileTmpl . ' ?>'));
 
Спасибо. Попробовал заменить, как вы указали, теперь выдает такую ошибку и ничего больше
Код:
Parse error: syntax error, unexpected '<' in /home/public_html/gmu/kernel/include/Template.inc(370) : eval()'d code on line 1
 
Назад
Сверху