Страница 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
САБ - запущен.