Страница 1 из 1

САБ - прогресс

Добавлено: 12 сен 2009, 16:22
Gorlum
Решил создать тему, что бы держать людей в курсе, как движется написание САБа. И что бы не задрачивали по десять раз с одними и теми же вопросами!
  • Checklist:
  • Модифицировать боевой движок с учетом САБа
  • Переписать алгоритм расчета лута с учетом САБа
  • Протестировать модификации в боевом движке и алгоритме лута
  • Создание записей САБа в таблице AKS (пул флотов на одну атаку) для всех флотов
  • Отделить темплейты от кода в части управления флотом
  • Присоединение флота к существующему пулу
  • Интерфейс присоединение флота к существующему пулу
  • Учет флотов-защитников при атака САБом
  • Переписать боевой отчет с учетом САБа

Re: САБ - прогресс

Добавлено: 12 сен 2009, 20:12
Gorlum
Сегодня на сервер установлен новый скрипт обсчета лута. Состояние сервера будет сохранено и в случае серьезных проблем будет сделан откат. Результаты тестирования предполагается подитожить завтра вечером.
  • Новая система обсчета лута выглядит следующим образом:
  • С планеты нельзя вывести больше, чем по половине каждого ресурса
  • При грабеже ресурсы загружаются на борт с учетом соотношения на планете. Например, если на планете 10к металлов и 20к кристаллов, то на каждую часть вывезенного металла будет вывезено 2 части кристаллов
  • Пример: на планете 10к металла, 20к кристаллов и 5к дейтрия. Емкость флота - 20к. Будет загружено 5к металла, 10к кристаллов и 2,5к дейтрия (всего - 17,5к).
  • Если в том же случае емкость флота будет 10к, будет загружено 2857 металла, 5714 кристаллов и 1428 дейтрия.

Re: САБ - прогресс

Добавлено: 15 сен 2009, 18:26
Gorlum
Скрипт лута признан рабочим. Всем пострадавшим от глюков скрипта количество XP за рейды восстановлено.

Переходим к следующей фазе.

Re: САБ - прогресс

Добавлено: 16 сен 2009, 17:59
Gorlum
ЫЫЫЫЫЫЫЫЫЫЫЫЫ (бьется головой об стенку)

Вам кто-то говорил, что оГейм - модульный и скиновый? Плюньте ему в морду!

Потратил почти весь день на то, что бы отделить на странице fleet.php код от оформления, выкинуть ненужные куски и привести файл к читабельному виду. А таких файлов 4 - т.е. еще три. Плюс - собственно файл работы с САБом. Там вообще пиздец - четыре разных человека писали минимум. Без комментариев (комментарии на француском не считаются). О какой-либо реюзабельности кода нет и речи. И вообще - про качество кода хочется сложить длинную, печальную, матерную балладу.

В очередной раз не понял, как вообще работал САБ раньше - он не мог работать в принципе! Боевой движок ждет данных в одном формате, САБ отдает их совсем в другом. Хотя бы в одни и те же таблицы отдает - уже хорошо... Ну и попытки записать строковые переменный в таблицу БД в поле типа INTEGER - поразили до глубины души.

Осознал всю наивность первой попытки переписать САБ с использованием готовых кусков.
Осознал всю наивность второй попытки переписать САБ с нуля и потом его аккуратно подключить.
В общем - только сначала разгрести старый код, потом понять, как оно должно было работать и только потом медленно, печально и аккуратно править. Про оптимизацию вообще молчу.

Re: САБ - прогресс

Добавлено: 23 сен 2009, 00:12
Gorlum
Н-да. По всему коду оГейма видно, что хотели как лучше - а получилось как всегда.

Вот вроде есть темплейты. Только толку с них - чуть более, чем никакого. Потому что отсутствуют в темплейтах операторы условного выбора. Т.е. если нужно в одном и том же темплейте написать в одном случае "ДА", а в другом - "НЕТ" - приходится выворачиваться. Например, делать обе надписи и только одну делать видимой в браузере средствами CSS. Либо использовать два разных темплейта. Либо хреначить напрямую в темплейт код, сгенеренный в PHP. Последнее - самое удобное, но целиком перечеркивает саму идею темплейтов. Делать два темплейта, отличающихся одной строчкой, а потом поддерживать их синхронность - тоже не очень хорошо. Ну и наконец, выводить оба варианта и управлять их видимостью как-то не совсем отвечает идее темплейтов. Т.е. темплейты вроде как и есть - а на самом деле они как бы для галочки. Тем более, что сейчас доступен один-единственный темплейт и приципиально других я как бы и не видел.

И так - везде.

Re: САБ - прогресс

Добавлено: 27 сен 2009, 16:25
Gorlum
(рыдает) Будь проклят тот день, когда я услышал об этом оГейме!

Для тех, кто понимает: вот кусок кода:

Код: Выделить всё

$select       = doquery("SELECT * FROM {{table}}", "planets");
  while ($row = mysql_fetch_array($select)) {
    if ($galaxy     == $row['galaxy'] &&
      $system     == $row['system'] &&
      $planet     == $row['planet'] &&
      $planettype == $row['planet_type']) {
      if ($row['id_owner'] == $user['id']) {
        $YourPlanet = true;
        $UsedPlanet = true;
      } else {
        $UsedPlanet = true;
      }
      break;
    }
  }
На секундочку - (galaxy, system, planet, planet_type) - это, фактически ключи в таблице! А уже с (id_owner) - уникальный ключ.

Для остальных - поиск в таблице БД по критерию ведется ПОЛНЫМ ПЕРЕБОРОМ!

Re: САБ - прогресс

Добавлено: 27 сен 2009, 23:30
Gorlum
Еще чудо-кусок кода

Код: Выделить всё

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 1  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 5  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 6  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 1  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 5  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 6  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }
Какой класс? 9? или 8й? Ибо даже абитура уже так не пишет, не говоря о первокурсниках. Типичный говнокод - размноженный методом копи & пасте.

Это если принять во внимание, что код попросту нерабочий. Найдите в нем одну ошибку, повторенную шесть раз. Она неочевидна, но присмотритесь к названиям переменных. Это к вопросу, почему нубзащита работает так странно...

Re: САБ - прогресс

Добавлено: 10 ноя 2009, 15:15
Gorlum
САБ - запущен.