Постройки

GwynnBleiidd

Школьник
Репутация
0 / 1 048
В /includes/pages/class.ShowBuildingsPage.php

Ищем

<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: это <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
 private function ShowBuildingQueue ( $CurrentPlanet, $CurrentUser )
    {
        global $lang;

        $CurrentQueue  = $CurrentPlanet['b_building_id'];
        $QueueID       = 0;
        if ($CurrentQueue != 0)
        {
            $QueueArray    = explode ( ";", $CurrentQueue );
            $ActualCount   = count ( $QueueArray );
        }
        else
        {
            $QueueArray    = "0";
            $ActualCount   = 0;
        }

        $ListIDRow    = "";

        if ($ActualCount != 0)
        {
            $PlanetID     = $CurrentPlanet['id'];
            for ($QueueID = 0; $QueueID < $ActualCount; $QueueID++)
            {
                $BuildArray   = explode (",", $QueueArray[$QueueID]);
                $BuildEndTime = floor($BuildArray[3]);
                $CurrentTime  = floor(time());
                if ($BuildEndTime >= $CurrentTime)
                {
                    $ListID       = $QueueID + 1;
                    $Element      = $BuildArray[0];
                    $BuildLevel   = $BuildArray[1];
                    $BuildMode    = $BuildArray[4];
                    $BuildTime    = $BuildEndTime - time();
                    $ElementTitle = $lang['tech'][$Element];

                    if ($ListID > 0)
                    {
                        $ListIDRow .= "<tr>";
                        if ($BuildMode == 'build')
                        {
                            $ListIDRow .= "    <td class=\"l\" colspan=\"2\">". $ListID .".: ". $ElementTitle ." ". $BuildLevel ."</td>";
                        }
                        else
                        {
                            $ListIDRow .= "    <td class=\"l\" colspan=\"2\">". $ListID .".: ". $ElementTitle ." ". $BuildLevel . " " . $lang['bd_dismantle']."</td>";
                        }
                        $ListIDRow .= "    <td class=\"k\">";

                        if ($ListID == 1)
                        {
                            $ListIDRow .= "        <div id=\"blc\" class=\"z\">". $BuildTime ."
";
                            $ListIDRow .= "        <a href=\"game.php?page=buildings&listid=". $ListID ."&amp;cmd=cancel&amp;planet=". $PlanetID ."\">".$lang['bd_interrupt']."</a></div>";
                            $ListIDRow .= "        <script language=\"javascript\">";
                            $ListIDRow .= "            pp = \"". $BuildTime ."\";\n";
                            $ListIDRow .= "            pk = \"". $ListID ."\";\n";
                            $ListIDRow .= "            pm = \"cancel\";\n";
                            $ListIDRow .= "            pl = \"". $PlanetID ."\";\n";
                            $ListIDRow .= "            t();\n";
                            $ListIDRow .= "        </script>";
                            $ListIDRow .= "        <strong color=\"lime\">
<font color=\"lime\">". date("j/m H:i:s" ,$BuildEndTime) ."</font>[/b]";
                        }
                        else
                        {
                            $ListIDRow .= "        <font color=\"red\">";
                            $ListIDRow .= "        <a href=\"game.php?page=buildings&listid=". $ListID ."&amp;cmd=remove&amp;planet=". $PlanetID ."\">".$lang['bd_cancel']."</a></font>";
                        }
                        $ListIDRow .= "    </td>";
                        $ListIDRow .= "</tr>";
                    }
                }
            }
        }

        $RetValue['lenght']    = $ActualCount;
        $RetValue['buildlist'] = $ListIDRow;

        return $RetValue;
    }
</div>
</div>
</div>

Меняем на:

<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: перевод <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
private function ShowBuildingQueue ( $CurrentPlanet, $CurrentUser )
    {
        global $lang, $dpath, $reslist, $resource;
        
        $BuildingNow   = array();
        $CurrentQueue  = $CurrentPlanet['b_building_id'];
        $QueueID       = 0;
        
        if ($CurrentQueue != 0) {
            $QueueArray    = explode ( ";", $CurrentQueue );
            $ActualCount   = count ( $QueueArray );
        } else {
            $QueueArray    = "0";
            $ActualCount   = 0;
        }

        $ListIDRow    = "";

        if ($ActualCount != 0)
        {
            $ListIDRow .= "<tr><td class='c' colspan='3'><center><font color='yellow'>.:: Строительство ::.</font>
Очередь постройки <font color='#00FF00'>".$ActualCount."</font> / <font color='#FF0000'>". MAX_BUILDING_QUEUE_SIZE ."</font> Ещё ". ( MAX_BUILDING_QUEUE_SIZE - $ActualCount) ." постройки можно поставить в очередь.</center></td></tr>";
            $PlanetID     = $CurrentPlanet['id'];
            $totalBuildTime = 0;
            $totalBuildEndTime = time();
            
            if((MAX_BUILDING_QUEUE_SIZE - $ActualCount) > 0){
                $CanBuild = true;
            }else{
                $Canbuild = false;
            }
            
            foreach($reslist['build'] as $Element){
                $BuildingNow[$Element] = $CurrentPlanet[$resource[$Element]];
            }
            
            for ($QueueID = 0; $QueueID < $ActualCount; $QueueID++)
            {
                $BuildArray   = explode (",", $QueueArray[$QueueID]);
                $BuildEndTime = floor($BuildArray[3]);
                $CurrentTime  = floor(time());
                if ($BuildEndTime >= $CurrentTime)
                {
                    $ListID       = $QueueID + 1;
                    $Element      = $BuildArray[0];
                    $BuildingNow[$Element] = $BuildArray[1];
                    $BuildLevel   = $BuildArray[1];
                    $BuildMode    = $BuildArray[4];
                    $BuildTime    = $BuildEndTime - time();
                    $totalBuildTime    = $BuildTime;
                    $totalBuildEndTime = $BuildEndTime;
                    $ElementTitle = $lang['tech'][$Element];
                    
                    if (IsElementBuyable ($CurrentUser, $CurrentPlanet, $Element, true, false) and IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element) and $CanBuild and $CurrentPlanet["field_current"] < ( CalculateMaxPlanetFields($CurrentPlanet) - $ActualCount )) {
                        $CanBuild = true;
                    } else {
                        $CanBuild = false;
                    }
                    
                    if ($BuildMode == 'build') {
                        $modo_rep = 'insert';
                        $multi = 1;
                    } else {
                        $modo_rep = 'destroy';
                        $multi = 2;
                    }
                    
                    if ($CanBuild) { 
                        $levelmore = "<input type='button' onclick=\"top.location = 'game.php?page=buildings&cmd=$modo_rep&building=". $Element ."';\" value='Повтор' />"; 
                    } else { 
                        $levelmore = ''; 
                    }

                    if ($ListID > 0)
                    {
                        $ListIDRow .= "<tr>";                       
                        if ($ListID == 1) {
                            $ListIDRow .= "<th colspan=\"3\">";
                            $ListIDRow .= "    <table width=\"100%\">";
                            $ListIDRow .= "        <tr>";
                            $ListIDRow .= "                <td width='80' rowspan='2'><a href='game.php?page=infos&gid=".$Element."'><img border='0' src='".$dpath."gebaeude/".$Element.".gif' align='top' title='". $ElementTitle ."' width='80' height='80'></a></td>";
                            if ($BuildMode == 'build')
                            {
                                $ListIDRow .= "            <td><center>";
                                $ListIDRow .= "            <table>";
                                $ListIDRow .= "            <tr>";
                                $ListIDRow .= "            <td width='24'><img border='0' src='./styles/images/enproceso.gif' align='top' width='24' height='24'></td>";
                                $ListIDRow .= "            <td><center><font color =\"#6699FF\"><a href='game.php?page=infos&gid=".$Element."'><font color =\"#6699FF\">.::. ". $ElementTitle ." .::.</font></a>
Строим <font color=\"#FF8C00\">[b]Уровень ". $BuildLevel ."[/b]</font></font></center></td>";
                                $ListIDRow .= "            <td width='24'><img border='0' src='./styles/images/enproceso.gif' align='top' width='24' height='24'></td>";
                                $ListIDRow .= "            </tr>";
                                $ListIDRow .= "            <tr>";
                                $ListIDRow .= "            <td colspan='3'><center>". $levelmore . "</center></td>";
                                $ListIDRow .= "            </tr>";
                                $ListIDRow .= "            </table>";
                                $ListIDRow .= "            </center></td>";
                            } else {
                                $ListIDRow .= "            <td><center>";
                                $ListIDRow .= "            <table>";
                                $ListIDRow .= "            <tr>";
                                $ListIDRow .= "            <td width='24'><img border='0' src='./styles/images/enproceso.gif' align='top' width='24' height='24'></td>";
                                $ListIDRow .= "            <td><center><font color =\"#6699FF\"><a href='game.php?page=infos&gid=".$Element."'><font color =\"#6699FF\">.::. ". $ElementTitle ." .::.</font></a>
<font color=\"#87CEEB\"><blink>". $lang['bd_dismantle'] ."</blink></font> en <font color=\"#FF8C00\">[b]Nivel ". $BuildLevel ."[/b]</font></font></center></td>";
                                $ListIDRow .= "            <td width='24'><img border='0' src='./styles/images/enproceso.gif' align='top' width='24' height='24'></td>";
                                $ListIDRow .= "            </tr>";
                                $ListIDRow .= "            </table>";
                                $ListIDRow .= "            </center></td>";
                            }   
                            $ListIDRow .= "            <td width=\"56\" rowspan='2'><center>";
                            $ListIDRow .= "                <div id=\"blc\" class=\"z\">". $BuildTime ."
<a href=\"game.php?page=buildings&listid=". $ListID ."&amp;cmd=cancel&amp;planet=". $PlanetID ."\">".$lang['bd_interrupt']."</a></div>";
                            $ListIDRow .= "                <script language=\"javascript\">";
                            $ListIDRow .= "                    pp = \"". $BuildTime ."\";\n";
                            $ListIDRow .= "                    pk = \"". $ListID ."\";\n";
                            $ListIDRow .= "                    pm = \"cancel\";\n";
                            $ListIDRow .= "                    pl = \"". $PlanetID ."\";\n";
                            $ListIDRow .= "                    t();\n";
                            $ListIDRow .= "                </script>";
                            $ListIDRow .= "                <strong color=\"lime\">
<font color=\"lime\">". date("j/m H:i:s" ,$BuildEndTime) ."</font>[/b]</center>";
                            $ListIDRow .= "            </td>";
                            $ListIDRow .= "           </tr>";
                            
                            $totaltime  = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element) / $multi;
                            if($totaltime == 0) {
                                 $barpercent=0;
                             } else { 
                                 $barpercent = round(( ($totaltime - $BuildTime) / $totaltime * 100), 2); 
                            }
                            $BarScript .= "<script type=\"text/javascript\">\n";
                            $BarScript .= "<!--\n";
                            $BarScript .= "    function barupdate() {\n";
                            $BarScript .= "        var barra   = document.getElementById('prodBar');\n";
                            $BarScript .= "        var timeout = 1;\n";
                            $BarScript .= "        ss2         = pp2;\n";
                            $BarScript .= "        if ( ss2 <= 0 ) {\n";
                            $BarScript .= "            barra.innerHTML = '<font color=\"#000\">100%</font>'; barra.style.width = 364;\n";
                            $BarScript .= "        } else {\n";
                            $BarScript .= "            if ( ss2 <= 0 ) {\n";
                            $BarScript .= "                if (1) {\n";
                            $BarScript .= "                    barra.innerHTML = '<font color=\"#000\">100%</font>'; barra.style.width = 364;\n";
                            $BarScript .= "                } else {\n";
                            $BarScript .= "                    timeout = 0;\n";
                            $BarScript .= "                    barra.innerHTML = '<font color=\"#000\">100%</font>'; barra.style.width = 364;\n";
                            $BarScript .= "                }\n";
                            $BarScript .= "            } else {\n";
                            $BarScript .= "                var percent = Math.round(((".$totaltime." - pp2) / ".$totaltime.") * 10000) / 100; var width = Math.round( percent * 3.64 );\n";
                            $BarScript .= "                barra.innerHTML = '<font color=\"#000\">[b]' + percent + '%[/b]</font>'; barra.style.width = width;\n";
                            $BarScript .= "            }\n";
                            $BarScript .= "            pp2 = pp2 - 0.5;\n";
                            $BarScript .= "            if (timeout == 1) {\n";
                            $BarScript .= "                 window.setTimeout(\"barupdate();\", 499);\n";
                            $BarScript .= "            }\n";
                            $BarScript .= "        }\n";
                            $BarScript .= "    }\n";
                            $BarScript .= "//-->\n";
                            $BarScript .= "</script>\n";
                            $BarScript .= "<script language=\"javascript\">";
                            $BarScript .= "    pp2 = \"". $BuildTime ."\";\n";      // temps necessaire (a compter de maintenant et sans ajouter time() )
                            $BarScript .= "    barupdate();\n";
                            $BarScript .= "</script>";
                            $Bar        .= "<div id='barcontainer' style='border: 1px solid rgb(153, 153, 255); width: 364px;'><div id='prodBar' style='background-color: #dfd; width: ".round($barpercent * 3.64) ."px;'><font color='#000000'>[b]". $barpercent ."%[/b]</font></div></div>";
                            
                            $ListIDRow .= "           <tr>";
                            $ListIDRow .= "            <td class=\"k\" height='18'>$Bar $BarScript</td>";
                            $ListIDRow .= "           </tr>";
                            $ListIDRow .= "    </table>";
                            $ListIDRow .= "</th>";
                            unset($Bar);
                            unset($BarScript);
                        } else {
                            $ListIDRow .= "<th colspan=\"3\">";
                            $ListIDRow .= "    <table width=\"100%\">";
                            $ListIDRow .= "        <tr>";
                            if ($BuildMode == 'build')
                            {
                                $ListIDRow .= "               <td class=\"l\"><font color =\"#6699FF\">". $ListID ." <a href='game.php?page=infos&gid=".$Element."'><font color =\"#6699FF\">.::. ". $ElementTitle ." .::.</font></a> Ampliar al <font color=\"#FF8C00\">[b]Nivel ". $BuildLevel ."[/b]</font></font></td>";
                            } else {
                                $ListIDRow .= "               <td class=\"l\"><font color =\"#6699FF\">". $ListID ." <a href='game.php?page=infos&gid=".$Element."'><font color =\"#6699FF\">.::. ". $ElementTitle ." .::.</font></a> <font color=\"#87CEEB\"><blink>". $lang['bd_dismantle'] ."</blink></font> en <font color=\"#FF8C00\">[b]Nivel ". $BuildLevel ."[/b]</font></font></td>";
                            }
                            $ListIDRow .= "               <td class=\"k\" width=\"56\"><center>". $levelmore . "</center></td>";
                            $ListIDRow .= "               <td class=\"k\" width=\"56\">";
                            $ListIDRow .= "                   <font color=\"red\"><a href=\"game.php?page=buildings&listid=". $ListID ."&amp;cmd=remove&amp;planet=". $PlanetID ."\">".$lang['bd_cancel']."</a></font>";
                            $ListIDRow .= "               </td>";
                            $ListIDRow .= "        </tr>";
                            $ListIDRow .= "   </table>";
                            $ListIDRow .= "</th>";
                        }
                        $ListIDRow .= "</tr>";
                    }
                }
            }
            
            $ListIDRow .= "<tr><td class='c' colspan='3'><center>Общее время: ". pretty_time($totalBuildTime) ."
Время завершения всего: <strong color=\"lime\"><font color=\"lime\">". date("j/m H:i:s" ,$totalBuildEndTime ) ."</font>[/b]</center></td></tr>";
        }

        $RetValue['lenght']    = $ActualCount;
        $RetValue['buildlist'] = $ListIDRow.'<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>';

        return $RetValue;
    }
</div>
</div>
</div>

в /styles/images/ Сохраняем


Что получается:
 
Классно, ещёб на статус хранилища ресурсов также, а то показывает ток добычу в день и неделю, а скоко заполнено в хранилище нету*sad*
П.С. когда начинаешь строить хранилище, почему то проценты сразу показывают в минус :)
 
в этом скрипте есть маленький недочет, при отмене строительства, всеравно считаеться вермя постройки, и полоска прикольно ползет в другую сторону, отсчитывая проценты в минус... не сильно страшно на начальных постройках, но когда постройки строяться по 10 часов, ждать отмену 10 часов не есть гуд... и еще у бара выравнивание по левому краю, не очень хорошо смотриться, если ставить по центру то опера, да и лиса кажеться начинает его заполнять от середины к концам ))
собственно так и не вычислил почему постройка не отменяться моментально, если кто сможет хотя бы тнатолкнуть на мысль, буду благодарен.
 
в этом скрипте есть маленький недочет, при отмене строительства, всеравно считаеться вермя постройки, и полоска прикольно ползет в другую сторону, отсчитывая проценты в минус... не сильно страшно на начальных постройках, но когда постройки строяться по 10 часов, ждать отмену 10 часов не есть гуд... и еще у бара выравнивание по левому краю, не очень хорошо смотриться, если ставить по центру то опера, да и лиса кажеться начинает его заполнять от середины к концам ))
собственно так и не вычислил почему постройка не отменяться моментально, если кто сможет хотя бы тнатолкнуть на мысль, буду благодарен.
Это всё понятно, но не ужели ни кто не доделал до ума? вот это порожает
 
поправочка, баг не в том как я написал, а в том, что когда строишь одинаковые постройки, скажем шахты 1, 2, 3 уровня, если отменить второй левел, то время возьметься с 3 левела, процент будет считатся на уменьшение, после того как дождемся начнет строиться 2 левел....
 
кажеться нашел решение бага, оказываеться смотрел не туда
необходимо в /includes/pages/class.ShowBuildingsPage.php функцию RemoveBuildingFromQueue заменить на вот это

<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: "код" <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
function RemoveBuildingFromQueue ( &$CurrentPlanet, $CurrentUser, $QueueID ) {

        if ($QueueID > 1) {
                $CurrentQueue  = $CurrentPlanet['b_building_id'];
                if ($CurrentQueue != 0) {
                        $QueueArray    = explode ( ";", $CurrentQueue );
                        $ActualCount   = count ( $QueueArray );
                        $ListIDArray   = explode ( ",", $QueueArray[$QueueID - 2] );
                        $BuildEndTime  = $ListIDArray[3];
                        $ListIDArray   = explode ( ",", $QueueArray[$QueueID - 1] );
            $Element = $ListIDArray[0];
                        for ($ID = $QueueID; $ID < $ActualCount; $ID++ ) {
                                $ListIDArray          = explode ( ",", $QueueArray[$ID] );
                                if ($Element == $ListIDArray[0])
                {
                    $ListIDArray[1]         -= 1;
                    $ListIDArray[2]          = GetBuildingTime($CurrentUser, $CurrentPlanet, $ListIDArray[0], true, $ListIDArray[1] - 1);
                }
                                $BuildEndTime        += $ListIDArray[2];
                                $ListIDArray[3]       = $BuildEndTime;
                                $QueueArray[$ID - 1]  = implode ( ",", $ListIDArray );
                        }
                        unset ($QueueArray[$ActualCount - 1]);
                        $NewQueue     = implode ( ";", $QueueArray );
                }
                $CurrentPlanet['b_building_id'] = $NewQueue;
        }

        return $QueueID;

}
</div>
</div>
</div>
 
[/quote]
Все равно если отменить постройку то в минус идут сначала проценты :)
 
serg575, а ты точно удалил старый кусок кода и вставил новый???? собственно суть бага в том, что в базу заноситься такие значения id_постойки,уровень_постройки,какоето_непонятное_число,время_окончания_строитель
ства,build;
так вот, допустим мы строим шахту с металлом(сразу 5 шахт) получаем в базе следующею запись:
Код:
1,1,какоето_непонятное_число,время_окончания_строительства,build;
1,2,какоето_непонятное_число,время_окончания_строительства,build;
1,3,какоето_непонятное_число,время_окончания_строительства,build;
1,4,какоето_непонятное_число,время_окончания_строительства,build;
1,5,какоето_непонятное_число,время_окончания_строительства,build;
затем отменяем 3 и 4 уровни шахты в базе остаеться следующие:
Код:
1,1,какоето_непонятное_число,время_окончания_строительства,build;
1,2,какоето_непонятное_число,время_окончания_строительства,build;
1,5,какоето_непонятное_число,время_окончания_строительства,build;
так вот, в обычной очереди постройки данный глюк просто начинает строить 5 левел шахты минуя 3 и 4, а тут из-за кучу java кода, он начинает отлистывать процент в минус, потому-что не понимает, как может быть такое, 3 и 4 левел но построены, а мы тут ему 5 тулим. Так вот к чему я это все, тот код который я привел, проверяет при отмене постройки, есть ли в очереди левела выше чем отмененные и если есть, то приравнивает их к последнему в очереди, собственно, оно физически не может считать в минус, на всякий случай проверил еще раз, у меня в минус не считает *wink*
 
А как сделать чтобы не только в постройках здания он работал, но и в иследованиях и верфи и литейной ?
 
serg575, а ты точно удалил старый кусок кода и вставил новый???? собственно суть бага в том, что в базу заноситься такие значения id_постойки,уровень_постройки,какоето_непонятное_число,время_окончания_строитель
ства,build;
так вот, допустим мы строим шахту с металлом(сразу 5 шахт) получаем в базе следующею запись:
Код:
1,1,какоето_непонятное_число,время_окончания_строительства,build;
1,2,какоето_непонятное_число,время_окончания_строительства,build;
1,3,какоето_непонятное_число,время_окончания_строительства,build;
1,4,какоето_непонятное_число,время_окончания_строительства,build;
1,5,какоето_непонятное_число,время_окончания_строительства,build;
затем отменяем 3 и 4 уровни шахты в базе остаеться следующие:
Код:
1,1,какоето_непонятное_число,время_окончания_строительства,build;
1,2,какоето_непонятное_число,время_окончания_строительства,build;
1,5,какоето_непонятное_число,время_окончания_строительства,build;
так вот, в обычной очереди постройки данный глюк просто начинает строить 5 левел шахты минуя 3 и 4, а тут из-за кучу java кода, он начинает отлистывать процент в минус, потому-что не понимает, как может быть такое, 3 и 4 левел но построены, а мы тут ему 5 тулим. Так вот к чему я это все, тот код который я привел, проверяет при отмене постройки, есть ли в очереди левела выше чем отмененные и если есть, то приравнивает их к последнему в очереди, собственно, оно физически не может считать в минус, на всякий случай проверил еще раз, у меня в минус не считает *wink*
Да точно, могу через асю показать код :)
 
[/quote]
Не решение, всеровно с минусом, может по другому код должен быть? а то смысл от этого мода ни какого, багнутый*sad*
 
Пожалуйста ребята исправьте баг с этим минусом :) а то юзери жалуются...
 
последняя попытка, с моим фиксом у меня все работало нормально, за исключением того, что после отмены, здание следующего в очереди уровня, строилось столько же, что и предыдущие... т.е. шахта 9, 10, 11... при отмене 10, время НЕ УХОДИТ минусом, но расчет идет, как за шахту 9 левела...
собстно вот
в GetBuildingTime.php находим
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: "код" <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
function GetBuildingTime ($user, $planet, $Element)
        {
                global $pricelist, $resource, $reslist, $game_config;


                $level = ($planet[$resource[$Element]]) ? $planet[$resource[$Element]] : $user[$resource[$Element]];
</div>
</div>
</div>
меняем на
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: "код" <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
function GetBuildingTime ($user, $planet, $Element, $Destroy = false, $CBB=false, $ID=0)
        {
                global $pricelist, $resource, $reslist, $game_config, $requeriments, $ExtraDM;
        if ($CBB)
        $level = $ID;//$ListIDArray[1];
    else
                $level = ($planet[$resource[$Element]]) ? $planet[$resource[$Element]] : $user[$resource[$Element]];
</div>
</div>
</div>

и в class.ShowBuildingPage.php находим функцию RemoveBuildingFromQueue, удаляем ее нафиг (новая она или старая, не имеет значения) и вставляем вот эту
<div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Скрытая информация: "код" <input type="button" value="Показать" style="width:60px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Скрыть'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Показать'; }">
</div>
<div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;">
<div style="display: none;">
Код:
        private function RemoveBuildingFromQueue ( &$CurrentPlanet, $CurrentUser, $QueueID )
if ($QueueID > 1) {
                $CurrentQueue  = $CurrentPlanet['b_building_id'];
                if ($CurrentQueue != 0) {
                        $QueueArray    = explode ( ";", $CurrentQueue );
                        $ActualCount   = count ( $QueueArray );
                        $ListIDArray   = explode ( ",", $QueueArray[$QueueID - 2] );
                        $BuildEndTime  = $ListIDArray[3];
                        $ListIDArray   = explode ( ",", $QueueArray[$QueueID - 1] );
            $Element = $ListIDArray[0];
                        for ($ID = $QueueID; $ID < $ActualCount; $ID++ ) {
                                $ListIDArray          = explode ( ",", $QueueArray[$ID] );
                                if ($Element == $ListIDArray[0])
                {
                    $ListIDArray[1]         -= 1;
                    $ListIDArray[2]          = GetBuildingTime($CurrentUser, $CurrentPlanet, $ListIDArray[0], false, true,  $ListIDArray[1] - 1);
                }
                                $BuildEndTime        += $ListIDArray[2];
                                $ListIDArray[3]       = $BuildEndTime;
                                $QueueArray[$ID - 1]  = implode ( ",", $ListIDArray );
                        }
                        unset ($QueueArray[$ActualCount - 1]);
                        $NewQueue     = implode ( ";", $QueueArray );
                }
                $CurrentPlanet['b_building_id'] = $NewQueue;
                }
                return $QueueID;
        }
</div>
</div>
</div>
после этого у меня работает все... для проверки достаточно, поставить три шахты в очредеь зайти в базу, найти у планеты поле b_building_id и посмотреть какие значения там вписаны... если перестанет работать будем разбираться непосредственно с вашими сборками...
 
последняя попытка, с моим фиксом у меня все работало нормально, за исключением того, что после отмены, здание следующего в очереди уровня, строилось столько же, что и предыдущие... т.е. шахта 9, 10, 11... при отмене 10, время НЕ УХОДИТ минусом, но расчет идет, как за шахту 9 левела...
Тоесть как я понял, ставлю чтонить строить (то что строится пару минут), затем в очередь чтонить (то что строится пару дней), отменяю первое, то второе что должно строится пару дней, строится пару минут:) бред фикса, это уже в баг переходит.
 
akademik, эм... либо у тебя со зренеием туговато либо я хз...где ты видел что бы шахта 9 левела строилась 3 минуты, а 10 левела 3 дня???? объясняю на пальцах, строим шахту 9 левела она строиться 890 секунд, ставим в очередь 10 (1424 секунды), следом ставим 11 (2279 секунд), так вот при отмене 10 левела, перывый фикс делал свое дело, он правил очередь, из 11 левела делал 10, но брал не правильный расчет по времени, для 10 левела он ставил 890 секунд... так как фикс тестил на быстрых постройках меньше минуты, то дкмал, что все н ормально, а проверил на 14 минутных постройках и понял, что-то не так...
 
</div>
после этого у меня работает все... для проверки достаточно, поставить три шахты в очредеь зайти в базу, найти у планеты поле b_building_id и посмотреть какие значения там вписаны... если перестанет работать будем разбираться непосредственно с вашими сборками...[/quote]
Кто то ставил уже фикс? Работает нормально или нет???
 
С таким фиксом удобнее, видел на некоторых сборках. Спасибо :)
 
После замены функции RemoveBuildingFromQueue в class.ShowBuildingPage.php тупо идеи ошибка:
Parse error: syntax error, unexpected T_IF, expecting ';' or '{' in Z:\home\172.19.8.184\www\xnova\includes\pages\class.ShowBuildingsPage.php on line 103
Как поправить?
 
serg575, ты где-то потерял } в одной из конструкций if, скорее всего последней строчке...
 
  Похожие темы

Похожие темы

Сверху